RocksDB是FaceBook起初作为实验性质开发的一个高效数据库软件,旨在充分实现快存上存储数据的服务能力。RocksDB的主要设计点是在快存和高服务压力下性能表现优越,支持point lookup 和 range scan。RockesDB 是一个嵌入式的K-V(任意字节流)存储, 支持Get(key)、Put(Key)、Delete(Key)和NewIterator()。RocksDB的基本组成是memtable、sstfile和logfile。RocksDB架构图如下:
Iterator和Snapshot提供了DB在某个时间点的一个一致性视图,快速短期/前台的scan操作比较适合用Iterator,长期/后台操作适合用Snapshot。Iterator过程中会增加引用计数,当实例重启时,Snapshot会丢失。
RocksDB提供了多个操作的事务性,支持悲观和乐观模式。
prefix_extractor来声明一个key_prefix,然后RocksDB为每一个key_prefix存储相应的blooms,提升RangeScan操作。
RocksDB通过checksum来检测磁盘数据损坏。
当用户重复写入一个key时,在DB中会存在这个key的多个value,compaction操作就是来删除这个key的冗余数据。RocksDB也支持多线程并行compaction。多线程并行flush操作可能会引起写停顿。
RocksDB支持全量备份、增量备份和复制。
RocksDb 支持 LRU 和 CLock两种模式。cache的每个分片都有自己的LRU list和