29个版本
0.11.1 | 2023年4月22日 |
---|---|
0.10.0 | 2021年12月29日 |
0.9.0 | 2021年11月16日 |
0.8.2 | 2020年4月26日 |
0.3.1 | 2016年11月23日 |
#37 in 数据库实现
278 每月下载量
在 7 个crate中使用(通过 graphannis-core)
115KB
2.5K SLoC
sstable
什么是
这个crate提供了一个API来操作存储在磁盘上的不可变(字符串 -> 字符串)映射。主要访问方法是迭代器,但也提供了一个更简单的API。
一般过程是
- 使用
TableBuilder
写入表。条目必须按顺序添加。数据不需要写入磁盘;任何实现Write
的类型都适用。 - 使用
Table
读取表。同样,来源是通用的;任何实现Read + Seek
的类型都可以使用。
请注意,表和一些其他结构是键的排序的泛型;通常,您可以直接使用StandardComparator
。
使用Options
,您可以影响磁盘上表布局的一些细节。通常,您不需要这样做;只需使用Options::default()
值。
如果在磁盘上的文件中存在数据损坏,将跳过损坏的块。单个块包含的条目数量取决于块大小,这可以在Options
结构中设置。
为什么
此crate重用了最初为rusty-leveldb持久化部分编写的代码,这是在Rust中重新实现的Google LevelDB。这就是代码在某些点比所需复杂的原因。
性能
在空闲的Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz
处理器上运行的tmpfs卷上不进行压缩,基准测试显示,在包含16个键字节和16个值字节的10,000个条目的表中,此crate将
- 每秒读取530万个条目
- 每秒写入120万个条目
不同大小的表格性能可能会有所不同。
损坏和错误
校验和验证失败通常源于损坏(显然)或未完全写入或部分覆盖的 SSTable 文件。
贡献
非常欢迎贡献!请随意发送拉取请求。
依赖项
~245KB