Redis,CouchDB还是Cassandra?

nor*_*gon 41 couchdb cassandra nosql redis

各种NoSQL数据库有哪些优点和缺点?

特别是,当在多个服务器上分配写入负载时,似乎Redis很弱.是这样的吗?这是一个大问题吗?服务有多大才能成为一个重大问题?

Jas*_*ith 80

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

你有什么样的项目?

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

  • Redis的
    • 非常简单的键值"全局变量服务器"
    • 非常简单(有些人会说"不存在")查询系统
    • 这个列表中的速度最快
    • 交易
    • 数据集必须适合内存
    • 不成熟的聚类,未来不明确(我相信它会很棒,但还没有确定.)
  • 卡桑德拉
    • 可以说是类似BigTable的数据库的最大社区动力
    • 可能是此列表中最容易管理的大型/增长型集群
    • 支持map/reduce,适用于分析,数据仓库
    • 多数据中心复制
    • 可调整的一致性/可用性
    • 没有单点故障
    • 您必须知道在项目早期将运行哪些查询,以准备数据形状和索引
  • CouchDB的
    • 提供最佳同步(复制)支持,支持主/从,主/主和更多异域架构
    • HTTP协议,浏览器/应用程序可以部分或全部直接与DB交互.(同步也通过HTTP完成)
    • 经过简短的学习曲线,使用Javascript和map/reduce的相当复杂的查询系统
    • 集群操作(没有SPOF,可调整的一致性/可用性)目前是一个重要的分支(BigCouch).它可能会合并到Couch,但没有路线图.
    • 同样,集群和多数据中心在理论上是可行的(我提到的"异国情调"),但是你必须自己编写所有这些工具.
    • 仅附加文件格式(数据库和索引)令人惊讶地快速消耗磁盘,您必须手动运行压缩(清理),这将生成数据库中所有记录的完整副本.每个索引文件都需要相同的内容.同样,你必须成为自己的工具匠.

  • +1"简单性和上市时间可能是最重要的".首先优化您的业务,稍后优化技术.Redis的一个缺点是,它真的只适合于适合内存的数据集; 其集群功能和基于磁盘的解决方案是有限的.其他Cassandra优势是多数据中心复制,每个操作的可调一致性/可用性,并且没有单点故障(集群中的每个节点都扮演相同的角色,没有主人).Cassandra的一个缺点是在组织数据之前必须考虑您的查询,这可能需要一些努力. (9认同)
  • 顺便说一句,根据我的经验,"时间和金钱有限的项目"涵盖了**绝大多数**项目中的**绝大多数**. (5认同)
  • BigCouch是出色的软件.它由CouchDB开发团队的核心成员带头.它将得到进一步维护和发展.虽然我不知道路线图,但我希望BigCouch能以某种方式合并回CouchDB.如果您认为我是一个绝望的粉丝,请考虑BigCouch是由我公司的竞争对手制作的! (2认同)
  • 警告:严重过时的答案。 (2认同)

web*_*bXL 32

看一看http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis他总结了为什么你要使用一个而不是另一个.