Redis,CouchDB还是Cassandra?

各种NoSQL数据库有哪些优势和劣势?

特别是Redis似乎很难在多个服务器上分配写入负载。 是这样吗? 这是一个大问题吗? 在这之前,服务需要增长多less可能是一个重大问题?

NoSQL数据库(以及SQL数据库)的优缺点高度依赖于您的用例。 对于非常大的项目,性能是王道; 但对于全新的项目,或时间和金钱有限的项目,简单和上市时间可能是最重要的。 为了教你自己(扩大你的视野,成为一个更好,更有价值的程序员),也许最重要的是简单而坚实的基本概念。

你有什么样的项目?

一些优点和缺点,我的头顶:

  • Redis的
    • 非常简单的键值“全局variables服务器”
    • 很简单(有人会说“不存在”)查询系统
    • 轻松在这个列表中最快
    • 交易
    • 数据集必须适合内存
    • 未成熟的集群,未来不明确(我相信它会很棒,但还没有决定。)
  • 卡桑德拉
    • 可以说BigTable-like数据库最具社区动力
    • 可能是这个列表中最容易pipe理的大/增长集群
    • 支持map / reduce,适用于分析,数据仓库
    • 多数据中心复制
    • 可调整的一致性/可用性
    • 没有单点故障
    • 您必须知道您将在项目早期运行哪些查询,以准备数据形状和索引
  • CouchDB的
    • 支持最好的同步(复制)支持,支持主/从,主/主,以及更多异国的体系结构
    • HTTP协议,浏览器/应用程序可以部分或全部直接与数据库进行交互。 (同步也通过HTTP完成)
    • 经过简短的学习曲线,使用Javascript和map / reduce的非常复杂的查询系统
    • 集群操作(无SPOF,可调整的一致性/可用性)目前是一个重要的分支(BigCouch)。 它可能会合并成沙发,但没有路线图。
    • 同样,集群和多数据中心在理论上是可能的(我提到的“异国情调”的东西),但是现在你必须自己写所有的工具。
    • 追加只有文件格式(数据库和索引)消耗磁盘惊人的快,您必须手动运行压缩(吸尘),使数据库中的所有logging的完整副本。 每个索引文件都是相同的。 再次,你必须成为你自己的工具。