关于数据库:有人使用CouchDB吗?

关于数据库:有人使用CouchDB吗?

Anyone using CouchDB?

在过去的几年中,我一直关注CouchDB项目,现在看到它是一个Apache Incubator项目。 在此之前,CouchDB网站上充斥着不要用于生产代码类型免责声明的内容,因此我只关注它。 如果您一直在将CouchDB用于现场项目或技术试验,我很想了解您的经验。


经过18个月的原型设计,测试并等待CouchDb准备就绪,我们于2008年12月将内部应用程序移至CouchDB。到目前为止,我对这一举动感到非常满意。它为我们摆脱了很多文件系统对象(PDF和JPEG,现在作为附件存储在CouchDB中)。这使我们能够摆脱NFS并更容易集群/复制前端Web服务器。

CouchDB为您准备的程度在很大程度上取决于您的组织的文化。我们有一个内部开发团队,维护多个内部Erlang应用程序。由于CouchDB是用Erlang编写的,并且代码库的质量相当不错,因此我们有信心在必要时可以在CouchDB中解决显示停止器问题-或至少将我们的数据取出。为了以防万一,我们还聘用了CouchDB核心团队之一作为顾问。

但是CouchDB肯定不是1.0。 Web worker进程始终会崩溃(如果您滥用它们)。复制对我们来说很困难,我们没有收到有关它的错误消息。仍然非常缺乏文档。我仍然相信它不会吞噬我们的数据,并且发展将以合理的速度向前发展。

为了让您对我们的应用程序有一个了解:目前,我们最大的数据库是大约512000条记录,占用7.5 GB磁盘空间。


我使用CouchDB为Facebook应用程序提供动力(每月活跃用户超过35,000)。一段时间以来,它一直使用MySQL,但是在将整个项目从Perl移植到Erlang之后,我决定精打细算,将所有数据迁移到CouchDB中,而改用CouchDB。

CouchDB是一个很好的数据存储。我认为它有望成为基于Web的服务的主要参与者。


我认识一个人(Jan),前一段时间(例如6个月)正在研究它,并且从那以后一直在玩。我发现CouchDB周围的社区知识渊博,并且很有帮助,因此每当遇到问题时,至少在几分钟或几小时内就可以解决。

就在前一周,我们刚刚启动了一个项目,该项目基本上要求我们以非关系方式存储数据,并且由于CouchDB面向文档的存储,我们选择了它作为使用的技术之一。因此,这实际上是我第一次在生产环境中运行它,但我对此仍然充满信心。 :)

只是这里的更新(2009-10-25):

我们的第一个CouchDB安装为20 GB,可容纳4000万条记录。自2009年1月以来一直在生产中运行,而且感觉非常好。读取(GET)的速度非常出色,我们将其用作存储复杂数据的工具,然后将其拉出即可。

我们的第二个ouchdb数据库部分包含两个数据库,一个是160,000,000+个文档(210 GB),并且每天增长150,000-300,000个文档。另一个只有35,000,000个文档(7 GB)。此设置具有更多的读写功能,并且初始测试的性能非常好。

在160,000,000个文档数据库上构建视图的过程大约花费了一周的时间,但是从那时起,我们升级到了更大的Amazon EC2实例,并且由于该版本具有很多性能,我们还准备更新到CouchDB 0.10.x(来自0.9.1)。视图构建方面的改进。


在某些情况下,我会使用ouchdb作为http://devk.it的文档存储(正在开发中),并在更大范围内将其用作分布式电子邮件传递系统的模板存储。

CouchDB的功能非常出色,但是我无法使其以我期望的那样高的并发级别运行。另请注意,由于mochiweb中的硬编码最大输入缓冲区大小,最大文档大小相当有限,为1MB。但是,您可以更改头文件并重新编译以解决此限制。


我正在使用CouchDB在我的博客上存储(和提供)文章评分。虽然交通不算很繁忙,但是到目前为止,它实在是坚如磐石。

我还计划在某个时候添加评论,我很可能还会将其存储在CouchDB中。

我发现入门非常容易,在OSX上,您只需下载CouchDBX即可快速入门。我将Sinatra后端与RestClient一起使用,以通过直接的HTTP动词等与"沙发"进行交互。

非常有趣。


目前,我正在与CouchDB合作研究计算机科学论文。我在我的博客http://metalelf0dev.blogspot.com上写我的进度和观点。我认为该项目做得很好,但是现有文档并未按应有的方式组织。关于Futon Web界面的快速教程对于初学者恕我直言:)


我在生产中两次使用了沙发床。首先是wiki likes项目,我认为ouchdb是该职位的理想人选。保存所有文档的版本有很大帮助。
第二个项目是非常查询加载的,想法是先转储社交数据,然后使用各种过滤器查询它。看起来标准的CouchDB查询功能看起来有点满足我们的需求。但是我们将Lucene像全文索引器一样添加,然后在Lucene中进行很多查询。该解决方案看起来足够好。


推荐阅读