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 数据结构

Download history 339/week @ 2024-05-01 405/week @ 2024-05-08 928/week @ 2024-05-15 697/week @ 2024-05-22 107/week @ 2024-05-29 85/week @ 2024-06-05 105/week @ 2024-06-12 55/week @ 2024-06-19 404/week @ 2024-06-26 268/week @ 2024-07-03 318/week @ 2024-07-10 507/week @ 2024-07-17 300/week @ 2024-07-24 261/week @ 2024-07-31 314/week @ 2024-08-07 94/week @ 2024-08-14

每月 991 次下载
4 个包中使用(通过 fjall

MIT/Apache 许可

385KB
9K SLoC

CI docs.rs Crates.io MSRV

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