NoSql比较知名的产品

NoSql产品按照功能和属性进行分类:

  1. 面向列的有序存储。Google Bigtable的数据存储模型支持面向列,与RDBMS面向行的存储格式不同,列值存在则储存,null就不储存,能避免浪费空间。每个数据单元都是键值对集合,主键叫行健。数据按列族存储,列族通常是在配置或启动时定义好的,列则不需要预先定义或声明。实际存储中,物理上一条数据的列族并不相互隔离,同一行健的所有数据存储在一起。在Bigtable和其他类似产品中,数据按顺序连续存储,数据存满一个节点后壳拆分成多个节点,数据不仅在每个节点上有序,而且还跨节点有序。数据持久化有容错考虑,利用分布式文件系统将数据持久化到磁盘上。因为有序,数据按行键查找效率极高。

HBase:java实现,使用者如Facebook,Yahoo!等

Hypertable:c++实现,使用者如百度等

Cloudata:java实现

  1. 键值存储。哈希表或关联数组是容纳键值对的最简单的数据结构。高效,访问数据的时间复杂度是O(1)。可以分散保存到集群节点中。

键值存储主要分为两种:内存或者持久化到磁盘。

  • Oracle的Berkeley DB键值存储。
  • 缓存。缓存系统:EHCache,Memcached

Membase:C和C++实现,Memcached替代品,使用者如Zynga,NHN。

Kyoto Cabinet:C++实现,Mixi公司。

Redis:C实现

以上都为数据储存提供了强一致性模型。但是可用性高于一致性。

Amazon Dynamo提出了最终一致性。过程中可能不一致。,下面是类似产品:

Cassandra:java实现,使用者如facebook,Digg,Reddit,Twitter等

Voldemort:java实现,使用者如LinkedIn。

Riak:Erlang实现。

  1. 文档数据库。不是文档/内容管理系统,是文档中松散结构的键值对集合,通常是JSON。

MongoDB:C++实现,使用者如Github。

CouchDB:Erlang实现,js执行环境,使用者如Apple,BBC等。

  1. 图形数据库。

Neo4j:java实现,

FlockDB:Scala实现,使用者如Twitter

  1. XML数据存储。
总体来说扩展性非常好,当数据达到必须分布到各节点时非常好用。

你可能感兴趣的:(NoSQL)