可扩展的CouchDB设置

我想迁移一个现有的应用程序, 存储在关系数据库中的1000万条logging到CouchDB。 我喜欢CouchDB的东西是简单的复制和快速caching视图。 我不喜欢的东西是写入和视图创build的速度,这将是非常缓慢的1000万份文件。

我必须解决这些潜在瓶颈的一个想法是有三个CouchDB实例:

  1. 只写实例 :这是主实例。 我们单一的事实。 这里只允许更新,插入和删除。 这个实例没有读取和没有视图。
  2. 仅查看创build实例 :仅用于创build和caching视图。 这个实例没有读或写。
  3. 只读实例 :通过复制视图进行读取访问。

实例2从实例1复制而来。由于不会有任何使用实例2的应用程序,因此可以在不影响生产应用程序的情况下创build新的视图。

实例3从包含所有caching视图的实例2复制而来。

这是一个可行的解决scheme?

我相当肯定CouchDB不会复制视图caching(毕竟它们是caching),所以你不得不复制那些带外(这种错过点,国际海事组织)。

CouchDB对于写入负载可能不太好。 如果你的负载是重读的,我想你可以在每次插入/更新之后调用视图,这样视图总是被caching支持。

免责声明:我在几个站点使用CouchDB,但是几乎没有你正在谈论的大小。

我从来没有运行CouchDB,只研究它,所以不要把我的build议没有validation真实的…

首先,我强烈推荐阅读John P. Wood关于CouchDB生产使用经验的系列文章: http : //johnpwood.net/2009/06/15/couchdb-a-case-study/

接下来,当您说实例时,是否只有一个具有单个CouchDB实例的物理服务器? 如果我们只谈3台服务器,我不认为通过分配不同的angular色来分配容量是最佳的。 我的直觉是让所有3台服务器保持一致,并加载完整的数据集,以便进行并行读取查询…?

如果只有3个服务器,我会考虑传统的RDBMS和传统的复制设置。 我怀疑CouchDB会为你带来这么小的计算能力吗?

另一件事,请仔细看看HBase,build立在Hadoop之上。 现在,Hadoop框架正在获得优秀的企业赞助,雅虎和Facebook都是大用户。 鉴于此,HBase的发展速度可能会比其他竞争对手更快,而且要经过更好的testing。

HTH