我听到了很多关于couchdb的信息,但是在阅读了一些关于它的文档之后,我仍然不明白为什么要使用它以及如何使用它。
你能帮我解开这个谜吗?
我听到了很多关于couchdb的信息,但是在阅读了一些关于它的文档之后,我仍然不明白为什么要使用它以及如何使用它。
你能帮我解开这个谜吗?
它是一个非关系型数据库、开源、分布式(增量、双向复制)、无模式。CouchDB 数据库是文档的集合;每个文档都是一堆字符串“键”和相应的“值”(可以是数字、字符串、列表、日期……)。你可以有索引、查询、视图。
如果关系型数据库对您来说很局限(您发现模式过于僵化,无法将数据库引擎工作分布在大量服务器上,等等),那么 CouchDB 值得考虑(它是众多非数据库中最有趣的一种)这些天出现的关系数据库)。
但是,如果您的所有工作都适合关系数据库,那么您可能希望继续将其用于生产工作(即使“玩弄”一些非关系数据库仍然非常值得您花时间,只是为了个人成长和教育,这与从关系数据库转移大型生产系统完全不同!-)。
听起来您应该阅读Why CouchDB
引用维基百科
它不是一个关系数据库管理系统。数据库不是将数据存储在行和列中,而是管理 JSON 文档的集合。集合中的文档不需要共享模式,而是通过视图保留查询能力。
CouchDB 提供了与传统关系数据库不同的数据存储模型,因为它不将数据表示为表中的行,而是将数据存储为 JSON 格式的“文档”。
数据存储模型的这种差异是 CouchDB 与 MySQL 和 SQL Server 等产品的不同之处。
在对 CouchDB 的编程访问方面,它公开了一个 REST API,您可以通过从代码发送 HTTP 请求来访问它
我希望这会有所帮助,尽管我承认这可能不是因为我对产品的最低了解
我远非专家(我所做的只是玩弄它一些......)但这是我正在考虑使用它的方式:
通常当我设计一个应用程序时,我在负载均衡器后面有一堆应用程序服务器。很多时候,我有粘性会话,这样每个用户都会在该会话期间回到同一个应用服务器。我正在考虑将 couchdb 实例绑定到每个应用程序服务器。
这样,您就可以使用本地 couchdb 访问用户偏好、产品数据……无论您拥有什么数据,都不必是最新的。
所以...现在您已经获得了这些本地 CouchDB 的数据。CouchDB 允许复制。因此,每个固定的时间段,将数据合并回(每 X 秒?)到它的对等点中,以使它们保持最新。
作为一个整体,您不必担心冲突 b/c 每个应用服务器都有自己的 CouchDB 并且用户连接到应用服务器,并且您获得了最终的一致性,因为您有复制。
这是否回答你的问题?
一个很好的例子是当您说必须在网站或应用程序中处理人员数据时。如果您开始希望设计数据并保持个人信息的独立性,那么这为 CouchDB 提供了一个很好的案例,它将数据存储在文档中而不是关系表中。在生产部署中,我的用户最终可能会添加大约 10% 的人的临时数据,并为另外 5% 的人添加一些其他有趣的细节。在关系上下文中,这可能会增加冗余负载,但对于 CouchDB 则不然。
这不仅仅是因为 CouchDB 是非关系型的:如果你过于关注这一点,你就会错过重点。CouchDB 已插入网络,您只需从 HTTP 开始创建和进行查询(GET/PUT/POST/DELETE...),它是 RESTful,而且它具有便携性且非常适合对等共享. 它还可以在所谓的“CouchApps”中提供 Web 应用程序,其中 CouchDB 完全将图像、CSS、标记作为存储在称为设计文档的特殊文档下的数据。