8 种 NoSQL 数据库系统对比
1. CouchDB
所用语言: Erlang
特点:DB一致性,易于使用
**最佳应用场景:**适用于数据变化较少,执行预定义查询,进行数据统计的应用程序。适用于需要提供数据版本支持的应用程序。
例如: CRM、CMS系统。 master-master复制对于多站点部署是非常有用的。
2.Redis
所用语言:C/C++
特点:运行异常快
**最佳应用场景:**适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。
例如:股票价格、数据分析、实时数据搜集、实时通讯。
3. MongoDB
所用语言:C++
特点:保留了SQL一些友好的特性(查询,索引)
**最佳应用场景:**适用于需要动态查询支持;需要使用索引而不是map/reduce功能;需要对大数据库有性能要求;需要使用CouchDB但因为数据改变太频繁而占满内存的应用程序。
例如:你本打算采用MySQL或PostgreSQL,但因为它们本身自带的预定义栏让你望而却步。
4. Riak
**最佳应用场景:**适用于想使用类似Cassandra(类似Dynamo)数据库但无法处理bloat及复杂性的情况。适用于你打算做多站点复制,但又需要对单个站点的扩展性,可用性及出错处理有要求的情况。
例如:销售数据搜集,工厂控制系统;对宕机时间有严格要求;可以作为易于更新的web服务器使用。
5. Membase
特点:兼容Memcache,但同时兼具持久化和支持集群
**最佳应用场景:**适用于需要低延迟数据访问,高并发支持以及高可用性的应用程序
例如:低延迟数据访问比如以广告为目标的应用,高并发的web 应用比如网络游戏(例如Zynga)
6. Neo4j
特点:基于关系的图形数据库
**最佳应用场景:**适用于图形一类数据。这是Neo4j与其他nosql数据库的最显著区别
例如:社会关系,公共交通网络,地图及网络拓谱
7. Cassandra
特点:对大型表格和Dynamo支持得最好
**最佳应用场景:**当使用写操作多过读操作(记录日志)如果每个系统组建都必须用Java编写(没有人因为选用Apache的软件被解雇)
例如:银行业,金融业(虽然对于金融交易不是必须的,但这些产业对数据库的要求会比它们更大)写比读更快,所以一个自然的特性就是实时数据分析
8. HBase
特点:支持数十亿行X上百万列
**最佳应用场景:**适用于偏好BigTable:)并且需要对大数据进行随机、实时访问的场合。
例如: Facebook消息数据库(更多通用的用例即将出现)