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

3

来自CouchDB指南的引用:

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

我正处于这种情况。不同的是,对我来说,这不仅适用于MapReduce,还适用于无模式数据库的整个概念... ;)

我真的可以自由地将所有数据放入同一个数据库中,而不考虑它们的不同之处(用户、会话等)吗?由于视图在数据库级别上工作,我理解我应该(需要?)这样做。

附注:我知道这是一个非常不具体的问题,而且这取决于具体的需求... :)

1个回答

3

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

随着项目的发展,很明显什么时候需要扩展到更多的数据库。

如果您的应用程序用户将直接连接到CouchDB,则有两个要考虑的问题:

  1. 用户帐户已经在称为_users的单独数据库中。CouchDB使用它来确认密码并处理身份验证
  2. 访问控制(特别是读取数据的权限)在数据库层面进行控制。用户可以完全阅读数据库,也可以完全无法阅读。当您的应用程序开始维护每个用户的私人数据时,这是创建多个数据库的好时机。

有时,用户永远不会直接连接到CouchDB。考虑传统的3层应用程序堆栈,其中web服务器前端和数据库后端类似于MySQL或任何其他数据库,从CouchDB的角度看,您只有一个数据库用户:Web服务器。在这种情况下,拆分成多个数据库主要是一种可以推迟到需求明确时的优化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接