当下NoSQL产品类型繁多,各有各的特点,再加上关系型数据库,貌似我们可选择的东西太多了。如诗言“乱花渐欲迷人眼”,在我们选择存储产品的时候,应该从哪些方面进行考量呢?下面一篇文章对当前的NoSQL产品进行了分类对比,列出了各家特点,有一定的指导意义。





NoSQL四大类

1.key-value存储



Examples

Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB

典型应用场景

内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。

数据模型

Key 指向 Value 的键值对,通常用hash table来实现

强项

查找速度快

弱项

数据无结构化,通常只被当作字符串或者二进制数据



2.列式数据库



Examples

Cassandra, HBase, Riak

典型应用场景

分布式的文件系统

数据模型

以列簇式存储,将同一列数据存在一起

强项

查找速度快,可扩展性强,更容易进行分布式扩展

弱项

功能相对局限



3.文档型数据库



Examples

CouchDB, MongoDb

典型应用场景

Web应用(与Key-Value类似,Value是结构化的,但数据库能够了解Value的内容)

数据模型

Key-Value对应的键值对,Value为结构化数据

强项

数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构

弱项

查询性能不高,而且缺乏统一的查询语法。



4.图结构数据库



Examples

Neo4J, InfoGrid, Infinite Graph

典型应用场景

社交网络,推荐系统等。专注于构建关系图谱

数据模型

图结构

强项

利用图结构相关算法。比如最短路径寻址,N度关系查找等

弱项

很多时候需要对整个图做计算才能得出需要的信息,不利于分布式的集群方案。



综合RDBMS的考量:



NoSQL

Storage should be able to deal with very high load

You do many write operations on the storage

You want storage that is horizontally scalable

Simplicity is good, as in a very simple query language (without joins)

RDBMS

Storage is expected to be high-load, too, but it mainly consists of read operations

You want to performance over a more sophisticated data structure

You need powerful SQL query language



典型NoSQL应用




1.CascadingCascading是基于Hadoop集群之上的数据处理API。它通过实现了丰富的功能化API,使你不需要接触MapReduce任务就能使用分布式计算能力,其核心概念是基于管道和流的数据处理。­



2.MahoutMahout是一个基于Hadoop实现各种机器学习与数据挖掘算法库。被用来提供推荐服务。­



3.HiveHive由Facebook出品,它为Hadoop提供了一种类似于SQL的操作接口。­



4.AvroAvro是一个基于二进制数据传输高性能的中间件。Avro通过将数据进入序列化,以使得大批量数据交互过程更方便。­



5.StormStorm由BackType Technology出口,其口号是“实时的Hadoop系统”。­