Cassandra和CouchDB有什么区别?

时间:2009-07-09 15:26:58

标签: couchdb cassandra

我正在看两个项目,但我真的看不出差异

来自Cassandra Site的

  

Cassandra是一个高度可扩展,最终一致,分布式,结构化的键值存储...... Cassandra最终是一致的。与BigTable一样,Cassandra提供了比典型的键/值系统更丰富的基于ColumnFamily的数据模型。

来自CouchDB网站的

  

Apache CouchDB是一个分布式,容错且无架构的面向文档的数据库,可通过RESTful HTTP / JSON API访问。

也就是说,我看到每个项目之间的具体差异如下:访问方法,书面语言等等,但是当你谈到SOLRSphinx时,你知道两者都是索引者差异很大,但最后是指数员。

我可以在这里说Cassandra和CouchDB是非关系数据库,在某些情况下可以替换另一个吗?

2 个答案:

答案 0 :(得分:73)

CouchDB是一个文档存储。您将文档(JSON对象)放入其中并在其上定义视图(索引)。对象可以是任意复杂的,具有潜在的深层结构。此外,它们不限于遵循一些一致的模式。

Cassandra是一个衣衫褴褛的键值商店。它只存储行,每个行都有一组命名列,这些列分组到具有值的族中。这听起来非常接近BigTable; BigTable不要求每一行具有相同的结构(与SQL数据库不同)。这些值可能有一些结构,但这种存储对此没有任何了解 - 它们只是字符串/字节序列。

是的,它们都是非关系数据库,并且它们的适用性可能存在相当大的重叠,但它们确实具有截然不同的数据组织模型。每个人都可能被迫模仿另一个,但每个模型都会最好地映射到一组不同的问题。

答案 1 :(得分:32)

CouchDB在很少的开源数据库技术中具有一项功能:离线复制。 CouchDB的设计使应用程序可以在网络边缘运行。即使互联网连接失败,这些应用程序也可用。

还可以利用离线复制来构建大型集群,但无论是在单个服务器,数据中心还是智能手机上运行,​​CouchDB都可以提供强大而简单的功能。