来自CouchDB指南的引用:
MapReduce可能会有挑战性,特别是如果你花了多年时间使用关系型数据库。
我正处于这种情况。不同的是,对我来说,这不仅适用于MapReduce,还适用于无模式数据库的整个概念... ;)
我真的可以自由地将所有数据放入同一个数据库中,而不考虑它们的不同之处(用户、会话等)吗?由于视图在数据库级别上工作,我理解我应该(需要?)这样做。
附注:我知道这是一个非常不具体的问题,而且这取决于具体的需求... :)
对于原型设计、或学习CouchDB,或其他早期项目,我建议您将所有内容保存在同一个数据库中。保持简单,专注于构建软件。
随着项目的发展,很明显什么时候需要扩展到更多的数据库。
如果您的应用程序用户将直接连接到CouchDB,则有两个要考虑的问题:
_users
的单独数据库中。CouchDB使用它来确认密码并处理身份验证有时,用户永远不会直接连接到CouchDB。考虑传统的3层应用程序堆栈,其中web服务器前端和数据库后端类似于MySQL或任何其他数据库,从CouchDB的角度看,您只有一个数据库用户:Web服务器。在这种情况下,拆分成多个数据库主要是一种可以推迟到需求明确时的优化。