我最近听到了很多关于couchdb的消息,并且对它提供的功能感到困惑。
5 回答
很难以严格的优势/劣势形式解释所有差异。
我建议你自己玩一下 CouchDB。您会注意到的第一件事是初始使用期间的学习曲线与 RDBMS 完全相反。
使用 RDBMS,您需要花费大量时间对现实世界的数据进行建模,以将其输入数据库。处理完建模后,您可以进行各种查询。
使用 CouchDB,您只需几分钟即可获得 JSON 格式的所有数据并存储在数据库中。你不需要做任何规范化或类似的事情,而且传输是 HTTP,所以你有很多客户端选项。
然后,在编写地图函数并学习密钥排序规则的工作原理以及针对您编写的视图的查询时,您会注意到一个很大的学习曲线。学习它们后,您将开始了解视图如何允许您规范化索引,同时使数据保持非规范化和“自然”。
- 快速敏捷的架构更新/更改
- 使用您选择的图灵完备语言 Map Reduce 查询。(没有更多的sql)
- 灵活的架构设计
- 自由形式对象存储
- 真的很容易复制
- 非常简单的负载平衡(很快)
CouchDB 是一个面向文档的数据库。
维基百科:
与关系数据库相反,基于文档的数据库不会将数据存储在每个记录具有统一大小字段的表中。相反,每条记录都存储为具有某些特征的文档。可以将任意数量的任意长度的字段添加到文档中。字段还可以包含多条数据。
优点:
- 在文档中留下空白字段不会浪费空间(因为它们不是必需的)
- 通过提供简单的编辑前端,可以快速设置应用程序来维护数据。
看看这里。我认为更好的答案是:
正如 CouchDB 并不总是适合这项工作的工具一样,RDBMS 也不总是正确的答案。
CouchDB 是一个磁盘占用者,因为它不更新文档——每次更新时它都会创建一个新的修订版,因此不浪费空间部分因为您没有空字段而被修订版压倒了。