数据库做比较:

  但是NoSQL数据库之间的不同,远超过SQL数据库之间的差别。这意味着软件架构师更应该在项目开始时就选择好一个适合的 NoSQL数据库。针对这种情况,这里对 Cassandra、 Mongodb、CouchDB、Redis、 Riak、Membase、Neo4j和HBase进行了比较:

  1. CouchDB

  所用语言: Erlang
  特点:DB一致性,易于使用
  使用许可: Apache
  协议: HTTP/REST
  双向数据复制,
  持续进行或临时处理,
  处理时带冲突检查,
  因此,采用的是master-master复制(见编注2)
  MVCC - 写操作不阻塞读操作
  可保存文件之前的版本
  Crash-only(可靠的)设计
  需要不时地进行数据压缩
  视图:嵌入式 映射/减少
  格式化视图:列表显示
  支持进行服务器端文档验证
  支持认证
  根据变化实时更新
  支持附件处理
  因此, CouchApps(独立的 js应用程序)
  需要 jQuery程序库
  最佳应用场景:适用于数据变化较少,执行预定义查询,进行数据统计的应用程序。适用于需要提供数据版本支持的应用程序。
  例如: CRM、CMS系统。 master-master复制对于多站点部署是非常有用的。

    2. Redis

  所用语言:C/C++
  特点:运行异常快
  使用许可: BSD
  协议:类 Telnet
  有硬盘存储支持的内存数据库,
  但自2.0版本以后可以将数据交换到硬盘(注意, 2.4以后版本不支持该特性!)
  Master-slave复制(见编注3)
  虽然采用简单数据或以键值索引的哈希表,但也支持复杂操作,例如 ZREVRANGEBYSCORE。
  INCR & co (适合计算极限值或统计数据)
  支持 sets(同时也支持 union/diff/inter)
  支持列表(同时也支持队列;阻塞式 pop操作)
  支持哈希表(带有多个域的对象)
  支持排序 sets(高得分表,适用于范围查询)
  Redis支持事务
  支持将数据设置成过期数据(类似快速缓冲区设计)
  Pub/Sub允许用户实现消息机制
  最佳应用场景:适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。
  例如:股票价格、数据分析、实时数据搜集、实时通讯。

  3. MongoDB

  所用语言:C++
  特点:保留了SQL一些友好的特性(查询,索引)。
  使用许可: AGPL(发起者: Apache)
  协议: Custom, binary( BSON)
  Master/slave复制(支持自动错误恢复,使用 sets 复制)
  内建分片机制
  支持 javascript表达式查询
  可在服务器端执行任意的 javascript函数
  update-in-place支持比CouchDB更好
  在数据存储时采用内存到文件映射
  对性能的关注超过对功能的要求
  建议最好打开日志功能(参数 --journal)
  在32位操作系统上,数据库大小限制在约2.5Gb
  空数据库大约占 192Mb
  采用 GridFS存储大数据或元数据(不是真正的文件系统)
  最佳应用场景:适用于需要动态查询支持;需要使用索引而不是 map/reduce功能;需要对大数据库有性能要求;需要使用 CouchDB但因为数据改变太频繁而占满内存的应用程序。
  例如:你本打算采用 MySQL或 PostgreSQL,但因为它们本身自带的预定义栏让你望而却步。

连接到:
[url= http://www.52benet.cn ] http://www.52benet.cn [/url]