couchdb - CouchDB 可以处理数千个独立的数据库吗?

标签 couchdb

CouchDB 可以在同一台机器上处理数千个独立的数据库吗?

假设您有一组 BankTransaction。有数千条记录。 (编辑:实际上并不存储事务——只需考虑大量非常小的、频繁更新的记录。它基本上是来自 SQL 领域的连接表。)

每天您都希望获得仅在本地银行分行发生的交易的摘要 View 。如果所有记录都在一个数据库中,则重新生成 View 将处理来自所有分支的所有事务。这是一个更大的工作量,对于只关心其特定文档子集的用户来说是不必要的。

这使得每个银行分行似乎都应该分区到自己的数据库中,以便以较小的 block 生成 View ,并且彼此独立。但我从未听说过有人这样做,而且这似乎是一种反模式(例如,在数千个不同的数据库中复制相同的设计文档)。

我应该用不同的方式来模拟这个问题吗? (分区应该发生在不同的机器之间,而不是同一机器上的不同数据库之间吗?)如果不是,CouchDB 可以处理数千个数据库以保持较小的分区吗?

(谢谢!)

最佳答案

[警告,我假设您在某种生产环境中运行它。如果这是针对学校或宠物项目,请简单回答。]

简短的回答是"is"。

更长的答案是,您需要注意一些事情......

  • 您将使用许多系统设置(例如最大文件描述符)来玩打地鼠游戏。

  • 您还将使用 erlang 虚拟机设置玩打地鼠游戏。

  • CouchDB 有一个“最大打开数据库”选项。增加此值,否则待处理的请求将会堆积起来。

  • 这将是一个 PITA,用于聚合多个数据库以生成报告。您可以通过轮询每个数据库的 _changes feed、修改数据,然后将其放回中央/聚合数据库来完成此操作。 CouchDB 的 API 中还没有使这一切变得更容易的工具。几乎,但不完全是。

但是,如果您尝试这样做,您将遇到的最大问题是 CouchDB 本身无法[很好]水平扩展。如果您添加更多 CouchDB 服务器,它们都会有数据的重复项。当然,您的最大打开数据库数量将随着添加的每个节点而线性扩展,但其他诸如 View 构建时间之类的事情不会(例如,它们都需要执行自己的 View 构建)。

而我在 BigCouch 上看到了数千个开放数据库簇。有趣的是,这是因为发电机集群:更多节点并行执行不同的操作,而不是相互复制的隔离 CouchDB 服务器。

干杯。

关于couchdb - CouchDB 可以处理数千个独立的数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9887481/

相关文章:

javascript - couchDB 的 GWT(或 javascript)库

sorting - CouchDB - 按位置对文档进行排序

mapreduce - 为什么 CouchDB 减少函数接收 'keys' 作为参数

python - 为 couchdb 指定附件编码

sql - 如何从 SQL 转换为 NoSQL/MapReduce?

couchdb - CouchDB 每用户数据库方法对于拥有大量共享数据的用户是否可行?

python - 使用 python 查询 Cloudant (couchdb)(错误 500,未知查询语言)

database - CouchDB:良好的文档 ID 可降低存储要求

electron - PouchDB同步到错误的CouchDB

php - 我应该在 CouchDB/Ajax 应用程序中使用 PHP 中的数组还是对象?