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

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

想象一下,你有一个BankTransactions的集合.有数千条记录. (编辑:实际上并不存储事务 – 只考虑非常大量的,经常更新的记录.它基本上是来自sql-land的连接表.)

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

这使得看起来应该将每个银行分支划分为其自己的数据库,以便以较小的块生成视图,并且彼此独立.但是我从来没有听说有人这样做过,而且它似乎是一种反模式(例如,在数千个不同的数据库中复制相同的设计文档).

我应该采用不同的方式来模拟这个问题吗? (分区是否应该在不同的机器之间进行,而不是在同一台机器上的单独数据库?)如果没有,CouchDB可以处理数千个数据库来保持分区小吗?

(谢谢!)

解决方法

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

简短的回答是“是”.

更长的答案是你需要注意一些事情……

>你将使用许多系统设置(如最大文件描述符)来玩whack-a-mole.
>你也将使用erlang vm设置玩whack-a-mole.
> CouchDB具有“最大开放数据库”选项.增加这个,否则你将有待处理的待处理请求.
>聚合多个数据库生成报告将成为PITA.您可以通过轮询每个数据库的_changes Feed,修改数据,然后将其重新放回中央/聚合数据库来完成. CouchDB的API中还没有使用这种工具来简化这项工作.几乎,但不完全.

但是,如果你尝试这样做,你将遇到的最大问题是CouchDB本身不能水平扩展[well].如果你添加更多的CouchDB服务器,他们都将拥有重复的数据.当然,你的最大开放dbs计数将随着每个节点的增加而线性扩展,但其他方面如视图构建时间则不会(例如,他们都需要进行自己的视图构建).

虽然我在BigCouch集群上看到过数千个开放数据库.有趣的是,这是因为发电机集群:更多的节点并行执行不同的事情,而相对于彼此复制的CouchDB服务器.

干杯.

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03