
LevelDB只能单线程合并文件,RocksDB可以支持多线程,充分利用服务器多核来加快文件合并的速度。 LevelDB只有一个Memtable,若Memtable满了还没有来得及Flush到sst文件,则会引起系统停顿,RocksDB可以根据服务器内存情况开辟多个Immutable Memtable,有效缓解这一问题。 LevelDB每次只能获取1个KV,RocksDB支持批量获取。 LevleDB不支持备份和恢复,RocksDB支持增量备份、全量备份和恢复。 RocksDB增加了对列族的支持。 RocksDB增加了Merge特性,对于Read-Modify-Update场景,不需要Read操作,只需要写入修改的类型和数据,在Get、Iterator、Compaction操作的时候进行具体的Merge操作。 在RocksDB中,许多参数开关可动态调整,例如:Index Block和Bloom Filter Block是否加载到内存、L0文件的Index Block和Bloom Filter Block是否常驻内存、触发Flush的Slowdown和Stop行为的L0文件数目。 可监听RocksDB内部的多种行为,包括Immutable Memtable Flush到L0 sst文件结束的时间点、sst文件合并完成的时间点、sst文件创建开始和创建完成的时间点、sst文件删除的时间点等。
微信开源的PaxosStore,上层通过Paxos协议来保证多副本之间的数据一致性。 开源数据库TiDB,其中的TiKV组件(Server)负责Key-Value的读写,上层通过Raft协议来保证多副本之间的数据一致性。




















文章转载自jameswhale的技术人生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




