[−][src]Crate sstb
An experimental an educational attempt to write a Rust thread-safe sstables library.
This was created as a learning excercise, to learn Rust, get some fair share of low-level programming, optimization, to learn how sstables work and how to make them faster.
By no means this is is complete or has any real-world usage.
However inside are some working implementations that pass the tests, are thread-safe, and even run smooth in benchmarks.
The API is not stabilized, the disk format is not stabilized, there are no compatibility guarantees or any other guarantees about this library.
Use at your own risk.
How to use
For writing SSTables, refer to writer documentation
For reading SSTables, refer to reader documentation
Quickstart
This example will write then read the sstable with all default options.
For more efficient reading code, refer to reader documentation.
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(); 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);
Re-exports
pub use sstable::*; |
Modules
sstable | Implementations of sstables stored as files on disk. |
utils | Various utilities. |