引用CouchDB guide:
MapReduce可能会充满挑战,尤其是如果您已经使用关系数据库多年。
我正是在这种情况下。与我不同的是,这不仅适用于MapReduce,而且适用于schemafree'ish数据库的整个概念...;)
我真的可以自由地将所有数据放在同一个数据库中,而不管它们(用户,会话等)有何不同?由于视图在数据库级别上起作用,因此我知道应该(需要吗?)。
PS:我知道这是一个非常具体的问题,它取决于特定的需求... :)
最佳答案
对于原型设计,学习CouchDB或其他早期项目,我建议您将所有内容都保留在同一数据库中。把事情简单化。专注于构建软件。
随着项目的发展,何时扩展到更多数据库将变得显而易见。
如果您的应用程序用户将直接连接到CouchDB,则有两个注意事项:
用户帐户已经在名为_users
的单独数据库中。 CouchDB使用它来确认密码并处理身份验证
访问控制(特别是读取数据的权限)在数据库级别上进行控制。用户可以完全或完全不读取数据库。当您的应用程序开始维护每个用户的私有数据时,这是创建多个数据库的好情况。
有时,用户从不直接连接到CouchDB。考虑具有Web服务器前端和数据库后端的传统3层应用程序堆栈。与MySQL或任何其他数据库一样,从CouchDB的角度来看,您只有一个数据库用户:Web服务器。在这种情况下,拆分为多个数据库在很大程度上是一种优化,可以将其推迟到明确要求为止。