高性能Key/Value存储引擎levelDB, rocksDB, TiDB,InnoDB

高性能存储引擎levelDB, rocksDB,TiDB, InnoDB


1.   简单介绍
1.1  LevelDB
     LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说LevelDB很适合应用在查询较少,而写很多的场景。LevelDB应用了LSM (Log Structured Merge) 策略,lsm_tree对索引变更进行延迟及批量处理,并通过一种类似于归并排序的方式高效地将更新迁移到磁盘,降低索引插入开销。

1.2  RocksDB
     RocksDB虽然在代码层面上是在LevelDB原有的代码上进行开发的,但却借鉴了Apache HBase的一些好的idea。

高性能Key/Value存储引擎levelDB, rocksDB, TiDB,InnoDB_第1张图片

1.3 InnoDB      

  从物理意义上来讲,InnoDB表由共享表空间、日志文件组(redo文件组)、表结构定义文件组成。若将innodb_file_per_table设置为on,则系统将为每一个表单独的生成一个table_name.ibd的文件,在此文件中,存储与该表相关的数据、索引、表的内部数据字典信息。表结构文件则以.frm结尾,这与存储引擎无关。

高性能Key/Value存储引擎levelDB, rocksDB, TiDB,InnoDB_第2张图片


1.4 TiDB

高性能Key/Value存储引擎levelDB, rocksDB, TiDB,InnoDB_第3张图片

TiDB是分布式存储,分为两个部分TiKV和Placement Driver server。
TiKV用于存储真正的数据,TiKV由分布在不同机器上的RocksDB实例组成。
数据按范围划分为一个个Region. 并且会尽量保持每个 Region 中保存的数据不超过一定的大小(这个大小可以配置,目前默认是 64MB). 同一Region分布在不同的RocksDB实例中,一个RocksDB实例包含多个Region.
图中,Region4有三个副本分布在三个RocksDB实例中,这三个Region副本组成一个RaftGroup,副本间通过Raft协议保证一致性。
Placement Driver server(PD), 也是一个集群,也通过Raft协议保证一致性。PD主要有以下作用:

  • 存储region的位置等元数据信息
  • 调度和rebalance regions, TiKV中的Raft leader等信息
  • 分配全局事务ID

2.   资料
    2.1   http://techshow.ctrip.com/archives/677.html
    2.2   http://tech.uc.cn/?p=2592
    2.3   http://dirtysalt.info/leveldb.html

你可能感兴趣的:(分布式存储系统)