# Bitrust This is a Rust implementation of [Bitcask](http://basho.com/wp-content/uploads/2015/05/bitcask-intro.pdf), a persistent key-value store for when the keyspace fits in memory. This is not a distributed datastore, but can be used as a building block for one. This crate hasn't been stress-tested. While it should be good enough for experimentation, we make no guarantees around data durability. ## Running ```shell $ mkdir /tmp/bitrust_data $ cargo run -- --configfile ./example_configs/no-automerge.toml --loglevel debug > put foo bar > get foo Ok(Some("bar")) > put baz spam > put lala baba > put baz egg > lst lala foo baz > get baz Ok(Some("egg")) > quit $ less /tmp/bitrust_data/bitrust.log ``` You can view the logs in a separate window by tailing `bitrust.log` in the datadir. ``` $ tail -f /tmp/bitrust_data/bitrust.log ``` ## Data directory contents - Data files are stored as `N.data` where `N` is an integer starting at 0. - `.activefile` contains the name of the current "active" log file (i.e., the one taking writes). All other datafiles are immutable. - `bitrust.log` contains logs. Level of logging is controlled by the `-l/--loglevel` switch.