bitrust

Crates.iobitrust
lib.rsbitrust
version0.1.0
sourcesrc
created_at2021-05-13 15:18:04.025002
updated_at2021-05-13 15:18:04.025002
descriptionA Rust implementation of Bitcask, usable as a binary or a library.
homepagehttps://github.com/yati-sagade/bitrust
repositoryhttps://github.com/yati-sagade/bitrust
max_upload_size
id396968
size149,803
Yati Sagade (yati-sagade)

documentation

README

Bitrust

This is a Rust implementation of Bitcask, 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

$ 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.
Commit count: 97

cargo fmt