一、简介
RocksDB是一个可嵌入的,持久型的key-value存储。
二、特性
1.高性能
RocksDB使用一套日志结构的数据库引擎,为了更好的性能,这套引擎是用c++编写的。Key和Value是任意大小的字节流。
2.为快速存储而优化
RocksDB为快速又低延迟的存储设备(例如闪存或者高速硬盘)而特殊优化处理。RocksDB将最大限度地发挥闪存和RAM的读写性能。
3.可适配性
RocksDB适合多种不同工作量类型,从像MyRocks这样的存储引擎,到应用数据缓存,甚至是一些嵌入式工作量,RocksDB都可以从容应对这些不同的数据工作量需求。
4.基础和高级的数据库操作
RocksDB提供了一些基础的操作,例如打开和关闭数据库。对于合并和压缩过滤等高级操作,也提供了读写支持。
三、RocksDB中的LevelDB不具备的性能。
性能:
--多线程压缩
--多线程memtable插入
--减少数据库互斥量
--优化的水平压缩风格和通用压缩风格
--前缀布隆过滤器
--Memtable布隆过滤器
--覆盖整个SST的单布隆过滤器
--写锁优化
--改进了Iter::Prev()的性能
--在SkipList搜索期间比较器调用的更少
--使用巨大的页面分配memtable内存
特征:
--列家庭
--事务和WriteBatchWithIndex
--备份和检查点
--合并运算符
--压实过滤器
--手动压缩与自动压缩并行进行
--持久缓存
--批量加载
--转发迭代器、拖尾迭代器
--单一删除
--删除范围内的文件
--Pin迭代器键/值
替代数据结构和格式
--纯表格格式,用于仅限内存的用例
--基于矢量和基于散列的memtable格式
--基于时钟的缓存
--可插入的信息日志
--使用blob注释事务日志(用于复制)
可调性
- 限速
- 可调减速和停止阈值
- 选项保持所有文件打开
- 选项可将所有索引和布隆过滤器块保留在块高速缓存中
- 多个WAL恢复模式
- 提前预读并避免在OS页面缓存中进行缓存
- 可以选择将索引和布隆过滤器的L0文件在内存中
- 更多的压缩类型:zlib,lz4,zstd
- 压缩字典
- 校验和类型:xxhash
- 不同级别的大小乘数和每种级别的压缩类型。
可管理性
- 统计
- 线程本地分析
- 命令行工具中的更多命令
- 用户定义的表格属性
- 事件监听器
- 更多数据库属性
- 动态选项更改
- 从字符串或地图获取选项
- 选项文件的持久选项