Redis、CouchDB还是Cassandra?

42

各种可用的NoSQL数据库有哪些优缺点?

特别是,Redis在将写负载分布到多个服务器上方面似乎很弱。这是真的吗?这是一个大问题吗?一个服务必须增长到什么程度,才会成为一个显著的问题?

2个回答

80
NoSQL和SQL数据库的优点和缺点在很大程度上取决于您的用例。对于非常大的项目,性能至关重要;但对于全新的项目或时间和资金有限的项目来说,简单性和上市时间可能是最重要的。对于自学(扩展视野、成为更有价值的程序员),也许最重要的是简单、坚实的基本概念。
你考虑的是什么样的项目?
以下是我能想到的一些优点和缺点:
- Redis
- 非常简单的键值“全局变量服务器” - 非常简单(有人会说“不存在”)的查询系统 - 在此列表中最快 - 事务 - 数据集必须适合内存 - 不成熟的集群,未来不明确(我相信它会很好,但尚未确定。)
- Cassandra
- 可能是BigTable类数据库中社区发展势头最强的 - 可能是此列表中在大型/增长集群中管理最容易的 - 支持map/reduce,适合分析、数据仓库 - 多数据中心复制 - 可调整一致性/可用性 - 没有单点故障 - 您必须在项目早期知道将运行哪些查询,以准备数据形状和索引。
- CouchDB
- 符合手的同步(复制)支持,支持主/从、主/主等更多奇特架构 - HTTP协议,浏览器/应用程序可以直接部分或完全与DB交互。(同步也是通过HTTP完成的) - 经过简短的学习曲线,使用Javascript和map/reduce的查询系统相当复杂 - 集群操作(没有SPOF,可调整一致性/可用性)目前是一个重要的分支(BigCouch)。它可能会合并到Couch中,但没有路线图。
  • 类似地,聚类和多数据中心从理论上讲是可能的(这就是我提到的“异类”),但目前你必须自己编写所有工具。
  • 仅追加文件格式(数据库和索引)会消耗硬盘空间,而且你必须手动运行压缩(清理)操作,这将对数据库中的所有记录进行完整复制。每个索引文件都需要做同样的操作。同样,你也必须成为自己的工具人。

  • 9
    "+1" 简洁和快速上市可能是最重要的。先优化您的业务,再考虑技术。 Redis 的缺点是它只适用于适合内存的数据集;其集群能力和基于磁盘的解决方案有限。Cassandra 的其他增值点包括多数据中心复制、可调整每个操作的一致性/可用性以及没有单点故障(集群中的每个节点扮演相同的角色,没有主节点)。Cassandra 的缺点是您必须在组织数据之前考虑查询,这可能需要一些努力。 - Tyler Hobbs
    5
    顺便说一下,依据我的经验,“时间和金钱都有限”的项目涵盖了大多数项目在其生命周期的大多数时间。 - JasonSmith
    2
    BigCouch是一款优秀的软件。它由CouchDB开发团队的核心成员领导开发。它将得到维护和进一步开发。虽然我不知道其路线图,但我预计BigCouch将以某种方式合并回CouchDB中。如果你认为我是一个无望的粉丝,那么请考虑一下,BigCouch是由我们公司的竞争对手制作的! - JasonSmith
    2
    警告:答案已经严重过时。 - Zia Ul Rehman Mughal

    32

    那也是一个很棒的总结。要是我能接受两个答案就好了! - nornagon

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接