28 个版本 (15 个稳定版)
1.5.0 | 2024 年 8 月 5 日 |
---|---|
1.4.0 | 2024 年 7 月 19 日 |
1.1.3 | 2024 年 6 月 27 日 |
0.8.0 | 2024 年 5 月 13 日 |
0.2.3 | 2023 年 12 月 25 日 |
#162 in 数据结构
每月 991 次下载
在 4 个包中使用(通过 fjall)
385KB
9K SLoC
Rust 中日志结构合并树(LSM-trees/LSMTs)的 K.I.S.S. 实现。
此包仅提供一个原始的 LSM-tree,而不是完整的存储引擎。例如,它不包含写入前日志。你可能想使用 https://github.com/fjall-rs/fjall。
关于
这是 Rust 中功能最丰富的 LSM-tree 实现!它具有以下特性:
- 线程安全的类似 BTreeMap API
- 100% 安全且稳定的 Rust
- 基于块的表,具有 LZ4 压缩
- 范围和前缀搜索,支持正向和反向迭代
- 分层大小、(并发)分层和 FIFO 压缩
- 多线程刷新(不可变/密封的内存表)
- 分区块索引以减少内存占用并缩短启动时间 [1]
- 块缓存以保持热点数据在内存中
- 布隆过滤器以提高点查找性能(
bloom
功能,默认禁用) - 快照(MVCC)
键限制为 65536 字节,值限制为 2^32 字节。与任何类型的存储引擎一样,较大的键和值会有更大的性能影响。
功能标志
bloom
使用布隆过滤器在点读取期间减少不必要的磁盘 I/O,从而提高性能,但也增加了内存使用。
默认禁用。
稳定的磁盘格式
自 1.0.0 版本起,磁盘格式是稳定的。未来的破坏性更改将导致主要版本号增加并有一条迁移路径。
许可
所有源代码均受 MIT 或 Apache-2.0 许可。
所有贡献均应受 MIT 或 Apache-2.0 许可。
开发
运行基准测试
cargo bench --features bloom
脚注
[1] https://rocksdb.org/blog/2017/05/12/partitioned-index-filter.html
依赖关系
~4–13MB
~155K SLoC