5 个不稳定版本

0.3.0-alpha2020年2月19日
0.2.2-alpha2020年2月18日
0.2.1-alpha2020年2月18日
0.2.0-alpha2020年2月12日
0.1.0-alpha2020年2月4日

#1115 in 并发

MIT 许可协议

75KB
1.5K SLoC

SSTB

License Cargo Documentation

一个实验性和教育性的尝试,编写一个 Rust 线程安全的 sstables 库。

有关更多详细信息和支持背景,请参阅 文档

使用方法

有关编写 SSTables 的信息,请参阅 编写者文档

有关读取 SSTables 的信息,请参阅 读取者文档

快速入门

以下示例将使用单个线程的默认选项写入然后读取 sstable。

有关更有效的并发读取代码,请参阅 读取者文档

use sstb::*;
use std::collections::BTreeMap;

let filename = "/tmp/example-sstable";
let mut map = BTreeMap::new();
map.insert(b"foo", b"some foo");
map.insert(b"bar", b"some bar");

write_btree_map(&map, filename, None).unwrap();

// This example does not use multiple threads, so it's ok to use
// SSTableReader instead of ConcurrentSSTableReader.
let mut reader =
  SSTableReader::new_with_options(filename, &ReadOptions::default())
  .unwrap();
assert_eq!(reader.get(b"foo").unwrap(), Some(b"some foo" as &[u8]));
assert_eq!(reader.get(b"bar").unwrap(), Some(b"some bar" as &[u8]));
assert_eq!(reader.get(b"foobar").unwrap(), None);

依赖项

~5.5MB
~109K SLoC