什么是couchdb,我应该使用它以及如何使用它?

时间:2009-10-12 02:35:02

标签: database couchdb schemaless

我听到很多关于couchdb的消息,但在阅读了一些关于它的文件后,我仍然不明白为什么要使用它以及如何使用它。

你能为我澄清一下这个谜吗?

5 个答案:

答案 0 :(得分:14)

它是一个非关系数据库,开源,分布式(增量,双向复制),无架构。 CouchDB数据库是文档的集合;每个文档都是一串字符串“键”和相应的“值”(可以是数字,字符串,列表,日期......)。您可以拥有索引,查询和视图。

如果关系数据库感觉局限于你(你发现模式过于僵化,无法将数据库引擎扩展到大量服务器等),CouchDB值得考虑(它是最有趣的一个)现在出现的许多非关系数据库)。

但如果您的所有工作都很适合关系数据库,那么您可能希望继续使用它来进行生产工作(尽管“玩弄”一些非关系数据库仍然非常值得您花时间,仅仅是为了个人增长和启发,这与从关系数据库转移庞大的生产系统完全不同! - 。)。

答案 1 :(得分:13)

听起来你应该阅读Why CouchDB

答案 2 :(得分:1)

引用wikipedia

  

它不是关系数据库管理系统。数据库管理JSON文档的集合,而不是将数据存储在行和列中。集合中的文档不需要共享模式,而是通过视图保留查询功能。

CouchDB提供了与传统关系数据库不同的数据存储模型,因为它不会将数据表示为表中的行,而是将数据存储为JSON格式的“文档”。

数据存储模型的这种差异使CouchDB与MySQL和SQL Server等产品区别开来。

在对CouchDB的编程访问方面,它公开了一个REST API,您可以通过从代码发送HTTP请求来访问该API

我希望这有点帮助,不过我承认它可能不会让我对产品的熟悉程度

答案 3 :(得分:1)

我远非一位专家(我所做的就是用它来解决一些问题......)但这就是我在考虑如何使用它:

通常在我设计应用程序时,我在负载均衡器后面有一堆应用程序服务器。通常,我有粘性会话,以便每个用户在该会话期间返回到同一个应用服务器。我正在考虑做的是将couchdb实例绑定到每个应用服务器。

通过这种方式,您可以使用本地couchdb访问用户首选项,产品数据......您获得的任何数据都不一定是最新的。

所以......现在你已经获得了这些本地CouchDB的数据。 CouchDB允许复制。那么,每个固定的时间段,将数据合并(每隔X秒?)到它的同行中,以使它们保持最新。

作为一个整体,您不必担心冲突b / c每个appserver都有自己的CouchDB,并且用户已连接到appserver,并且由于您已经复制,因此最终具有一致性。

这会回答你的问题吗?

答案 4 :(得分:1)

一个很好的例子就是当你说要在网站或应用程序中处理人员数据时。如果您开始希望设计数据并保持个人信息的分离,那么CouchDB就是一个很好的例子,CouchDB将数据存储在文档而不是关系表中。在生产部署中,我的用户最终可能会添加大约10%的人员的adhoc数据以及另一个选定的5%的其他有趣细节。在关系环境中,这可能会增加冗余负载,但不会增加CouchDB。

这不仅仅是因为CouchDB是非关系型的:如果你太专注于那个,你就会忽略这一点。 CouchDB插入到Web中,你需要的只是用于创建和创建查询的HTTP(GET / PUT / POST / DELETE ...),它是RESTful的,而且它是可移植的,非常适合点对点共享。它还可以在所谓的“CouchApps”中提供Web应用程序,其中CouchDB完全保存图像,CSS,标记作为存储在称为设计文档的特殊文档下的数据。

Check out this collection of videos introducing non-relational databases, the one on CouchDB should give you a better idea