Leveldb/Rocksdb/Accumulo简单比较

Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LMS算法,但是Leveldb是单进程的服务,而且它只是一个 C/C++ 编程语言的库, 不包含网络服务封装, 所以无法像一般意义的存储服务器(如 MySQL)那样, 用客户端来连接它. LevelDB 自己也声明, 使用者应该封装自己的网络服务器.所以它只能做一个嵌入式数据来使用,目前淘宝的Tair系统将它做了封装。

Rocksdb其实是Leveldb的改进版,RocksDB支持一次获取多个K-V,还支持Key范围查找。LevelDB只能获取单个Key,RocksDB除了简单的Put、Delete操作,还提供了一个Merge操作,说是为了对多个Put操作进行合并。站在引擎实现者的角度来看,相比其带来的价值,其实现的成本要昂贵很多。
下面是性能对比
Leveldb/Rocksdb/Accumulo简单比较
文章图片
Accumulo是一个使用谷歌BigTable的设计思路,基于Hadoop、Zookeeper和Thrift构建的,可靠的、可伸缩的、高性能的排序分布式KV数据存储系统。这个开源项目是由美国国家安全局开发,并于2011年发布的。目前,Accumulo属于Apache的顶级项目,它具有BigTable中所没有的一些功能,例如基于单元的访问控制。

下面我们看看Accumulo都有哪些主要特性:
1、对数据保护的安全性高
从下图可以清楚的看到Accumulo是如何控制单元的访问控制的。


Leveldb/Rocksdb/Accumulo简单比较
文章图片
【Leveldb/Rocksdb/Accumulo简单比较】2、支持ACID原则
3、读写性能强
麻省理工2013的性能测试报告
MIT Lincoln laboratories has recently released performance data for Apache Accumulo.In this paper MIT reached ~400,000 writes per second per node across an 8 node cluster.This is impressive performance given that MIT cites HBase as supporting ~60,000 writes per second per node and Cassandra as supporting ~35,000 writes per second per node.
在8节点集群的每个节点上,accumulo每秒达到40万次的写入,hbase达到6万次的写入,Cassandra达到3.5万次的写入。

Leveldb/Rocksdb/Accumulo简单比较
文章图片


为什么会写入这么快呢?原因如下:
因为accumulo使用了动态分布式空间数据模型(The Dynamic Distributed Dimensional Data Model (D4M)),Accumulo没有直接使用Hadoop的MapReduce并行编程模型,而是使用了pMatlab的并行编程环境。
4、分布式
Accumulo采用分布式存储。当Accumulo表不断的变大时,表会被自动分成块,数据可以存储在不同的块中。

5、分区
当表的容量达到上限时,accumulo会自动将表进行分割成默认的大小。
Accumulo的使用场景
目前,Accumulo都用在了政府的应用中,除政府之外的企业用的比较少。Cloudera公司已经将Accumulo 1.6.0的版本加入到了CDH 5.4.1中。此外,Hadoop系统打算用Accumulo解决储存海量数据的可扩展性。
最后通过各维度的比较,三个数据库的对比为

Leveldb/Rocksdb/Accumulo简单比较
文章图片


参考的相关链接
麻省理工的性能测试报告

Accumulo BeanchMarking

云端大数据安全:悟透关键挑战

关于Hadoop你需要知道的几件事情
云端大数据安全利器:亚马逊DynamoDB和Accumulo访问控制

LevelDB存储引擎实现介绍

RocksDB介绍:一个比LevelDB更彪悍的引擎

    推荐阅读