我应该将所有不同类型的数据放在一个数据库中吗?

时间:2011-08-23 19:36:00

标签: couchdb

引自CouchDB guide

  

MapReduce可能具有挑战性,特别是如果您花了数年时间使用关系数据库。

我正是在这种情况下。不同之处在于,这不仅适用于MapReduce,也适用于schemafree'ish数据库的整个概念......;)

我是否真的可以自由地将我的所有数据放在同一个数据库中,无论它们有多么不同(用户,会话等)?由于视图在数据库级别上工作,我理解我应该(需要?)。

PS:我知道这是一个非常不明确的问题,这取决于具体需求......:)

1 个答案:

答案 0 :(得分:3)

对于原型设计,或学习CouchDB或其他早期项目,我建议您将所有内容保存在同一个数据库中。把事情简单化。专注于构建软件。

随着项目的发展,何时扩展到更多数据库将是显而易见的。

如果您的应用程序的用户将直接连接到CouchDB,则有两个注意事项:

  1. 用户帐户已位于名为_users的单独数据库中。 CouchDB使用它来确认密码和处理身份验证
  2. 在数据库级别控制访问控制(特别是读取数据的权限)。用户可以完全读取数据库,也可以根本不读取数据库。当您的应用程序开始维护每个用户的私有数据时,这是创建多个数据库的好方法。
  3. 有时,用户从不直接连接到CouchDB。考虑具有Web服务器前端和数据库后端的传统3层应用程序堆栈。与MySQL或任何其他数据库非常相似,从CouchDB的角度来看,您只有一个数据库用户:Web服务器。在这种情况下,拆分成多个数据库主要是一种优化,可以推迟到需求明确之前。