Redis,CouchDB还是Cassandra?
各种NoSQL数据库有哪些优势和劣势?
特别是Redis似乎很难在多个服务器上分配写入负载。 是这样吗? 这是一个大问题吗? 在这之前,服务需要增长多less可能是一个重大问题?
NoSQL数据库(以及SQL数据库)的优缺点高度依赖于您的用例。 对于非常大的项目,性能是王道; 但对于全新的项目,或时间和金钱有限的项目,简单和上市时间可能是最重要的。 为了教你自己(扩大你的视野,成为一个更好,更有价值的程序员),也许最重要的是简单而坚实的基本概念。
你有什么样的项目?
一些优点和缺点,我的头顶:
- Redis的
- 非常简单的键值“全局variables服务器”
- 很简单(有人会说“不存在”)查询系统
- 轻松在这个列表中最快
- 交易
- 数据集必须适合内存
- 未成熟的集群,未来不明确(我相信它会很棒,但还没有决定。)
- 卡桑德拉
- 可以说BigTable-like数据库最具社区动力
- 可能是这个列表中最容易pipe理的大/增长集群
- 支持map / reduce,适用于分析,数据仓库
- 多数据中心复制
- 可调整的一致性/可用性
- 没有单点故障
- 您必须知道您将在项目早期运行哪些查询,以准备数据形状和索引
- CouchDB的
- 支持最好的同步(复制)支持,支持主/从,主/主,以及更多异国的体系结构
- HTTP协议,浏览器/应用程序可以部分或全部直接与数据库进行交互。 (同步也通过HTTP完成)
- 经过简短的学习曲线,使用Javascript和map / reduce的非常复杂的查询系统
- 集群操作(无SPOF,可调整的一致性/可用性)目前是一个重要的分支(BigCouch)。 它可能会合并成沙发,但没有路线图。
- 同样,集群和多数据中心在理论上是可能的(我提到的“异国情调”的东西),但是现在你必须自己写所有的工具。
- 追加只有文件格式(数据库和索引)消耗磁盘惊人的快,您必须手动运行压缩(吸尘),使数据库中的所有logging的完整副本。 每个索引文件都是相同的。 再次,你必须成为你自己的工具。