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