[转]KV存储的对比

本文转自饿了么的高级架构师陈东明(cadem)发布于云栖社区的文章: KV存储的对比。作者还整理了另外一篇文章: 存储系统的分类,列举了常见的一些kv存储模型和实现。

最近对各种KV存储进行一个比较,从存储引擎到存储引擎的类型,到单机版的kvstore,再到分布式kvstore集群。

存储引擎的类型

类型 全称
btree
LSH Log-Structured Hash Table
LSM Log-Structured Merge Tree
FractalTree 分型树

存储引擎

Welcome to Oschina Tools website

类型名称语言备注应用在___dbengine排名出品
berkeleyDBBTREE, HASH, QUEUE, RECNOC,JavaNo.9oracle
Wiredtigerbtree, LSMCmongodbNo.24WiredTiger/mongodb
Tokyo Cabinet /Kyoto Cabinetb+tree,hash tablenmdb,Kyoto TycoonNO.27/No.36FAL Labs
LMDBbtreeCOpenLDAPsymas
BoltDBbtreeGoLMDB的go版本
leveldbLSMc++No.15google
goleveldbLSMGoleveldb的go版本个人
levigoLSMGoGo wrapper for LevelDB个人
rocksdbLSMc++,javaNo.18facebook
gorocksdbLSMGoGo wrapper for RocksDB个人
mongo-rocksLSMC++RocksDB Storage Engine Module for MongoDBmongo partner
bitcastLSHCbeansdb,riakbasho
PerconaFTFractalTreeC++Mysql存储引擎之TokuDBpercona

单机kvstore

类型名称采用的存储引擎语言出品主从复制github star
kv对nmdbqdbm, berkeley db, tokyo cabinet,tdbC个人Alberto Bertogli
kv对memcachedbBerkeley DBC新浪yes
kv对Kyoto TycoonKyoto CabinetC/C++FAL Labs
结构化kv(redis兼容)ssdbleveddbC/C++个人ideawuyes4k+
结构化kv(redis兼容)ssdb-rocksrocksdbC/C++个人ideawu92
结构化kv(redis兼容)ardbLevelDB, RocksDB, LMDB, WiredTigerC++个人yinqiwenyes800+
结构化kv(redis兼容)(reborndb)qdbRocksdb and LevelDBGo个人ngaut200+
结构化kv(redis兼容)PikaRocksdbCQihoo360yes900+
结构化kv(redis兼容)LedisDBLevelDB, goleveldb, LMDB, RocksDB, BoltDB or MemoryGo个人SiddonTang2K+

单机kvstore的分布式代理

名称语言存储出品应用/githubstar分片弹性备注
ReborndbGoqdb个人ngaut200+yesyes
Netflix DynomiteCredis,memcachedNetflix1.9K+Dynamo
CodisGocodis-server(定制redis)社区CodisLabs5K+
TwenproxyCredis,memcachedtwitter6K+

分布式KVstore

类型名称语言出品dbengine排名/githubstar存储引擎社区活跃特性备注
kv型riakerlangbashoNo.3/2K+bitcaskDynamo
kv型beansdbCdouban600+bitcask模型近2年没有更新,没有文档Dynamo
kv型project VoldmortJavaLinkedInNo.29/1.8K+BDB-JE,MySQL,Read-Only
kv型ScalriserlangZuse Institute BerlinNo.35/88
kv型aeospikeaespikeNo.7
kv型TairC/C++alibaba400+自研的fdb停止更新,没有文档

补充

原文中没有提到的,在这里添加上作为补充。

  • tidb: 国产的分布式NewSQL产品,底层采用tikv, 支持MySQL协议, PingCap出品。
  • badger: 性能优异,特别为SSD优化,仅仅key存储在LSM tree中。