7

对于大多数应用程序来说,哪个是更好的 NoSQL 数据库?


Cassandra (0.7x) 和 Membase:

  • 键值数据库
  • 速度很快
  • 水平可扩展
  • 可以与 Hadoop 结合进行 Mapreduce 处理
  • 支持增量和减量

Cassandra 具有可选择的每个查询的持久性/一致性保证

Cassandra 支持 BigTable 列

Membase 具有异步(立即返回)写入


除了一致性保证之外,您为什么要选择其中一个?

4

3 回答 3

8

Cassandra 将行拆分为列,这些列可以被索引、有效地独立更新(而不必重写整个行/对象),并用作物化视图(与关系行不同,cassandra 列名可以在运行时动态确定) .

Cassandra 提供跨多个数据中心的完全多主复制,可配置每个键空间。(例如,我想要北美数据中心的 3 个数据集 X 副本和欧洲数据集的 1 个副本。但数据集 YI 只想要北美数据集的 2 个副本。)

说“Cassandra 更倾向于写入而不是读取”是不正确的。不同之处在于Cassandra两者都非常快,这与大多数仅读取速度快的系统不同。

FWIW,Cassandra 曾经提供异步写入,但我们将其取消,因为当您达到容量限制时,您的选择是 (1) 将服务器运行到地面或 (2) 在没有反馈给客户端的情况下丢弃请求是怎么回事。这不值得非常小的性能提升。

于 2011-01-10T21:32:49.953 回答
5

Membase 最近与 CouchDB 合并,并将将其磁盘/持久层从 sqllite 更新到 CouchDB,从而使 Membase 能够进行 map/reduce 和查询/索引。

还没有人提到的一件事是 Membase 集群非常容易设置,而 Cassandra 需要更多的系统管理工作。

到目前为止,Cassandra 也被更广泛地采用,尽管有一些 Membase 的关键用例,例如 Zynga 及其社交游戏。

于 2011-04-07T22:13:20.723 回答
1

这真是一个简单的问题。为什么不比较 riak、Couchdb、Hadoop 等?

没有比 NoSQL 数据库更适合大多数应用程序的东西。Tokyo Tyrant 非常适合某些东西。SQLITE 是一个优秀的数据库,如果你知道自己在做什么,它可以扩展。

noSql 的全部意义在于解构单体 RDBMS 并提供精简的 db 工具,这些工具专注于成为应用程序瓶颈的 db 访问方面。每个应用程序都是不同的,因此没有最佳选择。

但是,有一个最佳策略。那就是确定您的应用程序的原始性能需求,找到瓶颈所在,并选择支持这些瓶颈并帮助您管理它们的数据库工具(可能是 noSQL,也可能是 RDBMS)。

博客圈充满了人们从同样简单的问题开始并最终做出错误选择的故事。如果您想要正确的答案,您需要从提出正确的问题开始,有时您需要醒来并闻一闻咖啡味,并意识到从技术角度来看您的应用程序很难管理。其他人发现业务人员可以更好地解决扩展问题,但前提是技术人员必须能够解释系统、其瓶颈和自然约束,以及以某些方式更容易扩展的机会,只要业务将朝着不同的方向发展。

于 2012-02-11T07:12:27.803 回答