database - 何时使用 CouchDB 与 RDBMS

标签 database couchdb rdbms

<分区>

我正在研究 CouchDB,它比关系数据库有许多吸引人的特性,包括:

  • 直观的 REST/HTTP 界面
  • 容易复制
  • 数据存储为文档,而不是标准化表格

我明白这不是一个成熟的产品,因此应谨慎采用,但我想知道它是否真的是 RDBMS 的可行替代品(尽管介绍页面另有说明 - http://couchdb.apache.org/docs/intro.html)。

  1. 在什么情况下,CouchDB 是比 RDBMS(例如 MySQL)更好的数据库选择,例如在可扩展性、设计 + 开发时间、可靠性和维护方面。
  2. 是否仍然存在 RDBMS 显然仍然是正确选择的情况?
  3. 这是非此即彼的选择,还是更有可能成为最佳实践的混合解决方案?

最佳答案

我最近参加了在伦敦举行的 NoSQL session ,我认为我现在对如何回答最初的问题有了更好的了解。我还写了一个blog post ,还有其他几个 good ones .

要点:

  • 我们在管理关系数据库方面积累了大约 30 年的知识,因此不应在未经慎重考虑的情况下更换它们;非关系数据存储不如关系数据存储成熟,因此从本质上讲,采用它们的风险更大
  • 有不同类型的非关系数据存储;有些是键值存储,有些是文档存储,有些是图数据库
  • 您可以使用混合方法,例如用于社交软件网站的 RDBMS 和图形数据存储的组合
  • 文档数据存储(例如 CouchDB 和 MongoDB)可能是最接近关系数据库的,并提供一个 JSON 数据结构,所有字段都按层次结构呈现,这避免了必须进行表连接,并且(有些人可能会争辩)是对大多数应用程序当前使用的传统对象关系映射
  • 非关系型数据库支持复制(包括master-master);关系数据库也支持复制,但可能不如非关系选项全面
  • Twitter、Digg 和 Facebook 等超大型网站都使用 Cassandra,它是为支持集群而全新构建的
  • 关系型数据库大概适合90%的情况

总而言之,共识似乎是“谨慎行事”。

关于database - 何时使用 CouchDB 与 RDBMS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1307100/

相关文章:

java - 在 jpa 标准中, "in case there is at least 1 row return true"

php - 使用内连接获取单个值

mysql - 如何用mysql在触发器中声明变量?

mysql - 将 character_set_client 指定为 MySQL 中表的默认字符集

sql - SQL中如何思考?

C# 数据库将表中的一个日期/时间字段与今天进行比较

database - Swift - 在 View 之间花费大量数据 : create objects in the first view or connectar several times in the database?

nosql - 使用 CouchDB 进行多条件搜索

sql - 组织复杂的 couchdb View (类似 sql 的查询)的最佳方法是什么?

javascript - CouchDB 映射函数中的 GET 请求