Skip to content
/ ozone Public
forked from mike-marcacci/ozone

Pure-rust key/value store based on BoltDB

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

bradfier/ozone

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ozone

Ozone is a pure-rust key/value store based on BoltDB and inspired by the language's built-in concept of memory ownership.

Goals

The goal of this project is to build a perfectly idiomatic persistence layer using the standard library's collections::BTreeMap as a model, letting the language itself do as much as possible.

Specific features that will be implemented include:

  • single-file databases
  • copy-on-write, lock-free MVCC
  • recycling of emptied pages

This is my first real Rust project, so any hints, suggestions, and nudges are very welcome.

Proposed API

I'm starting as simple as possible, but this will change

// Open a database file (creating if nonexistant)
let db = ozone::open("my.db").unwrap();

// DB is essentially a collections::BTreeMap<&str, Bucket>
let mut bucket : Bucket = db.entry("bucket-name");

// Bucket is essentially a collections::BTreeMap<&str, &str>
let old_value : Option<str> = bucket.insert("key-name", "value");

// Bucket is essentially a collections::BTreeMap<&str, &str>
let value : Option<str>  = bucket.get("key-name");

Why The Name?

Ozone, or O3 is a powerful oxidant (oxidation/reduction is the chemical process of rusting) that is naturally created from O2 (the stuff we breathe) when a bolt of lightning strikes.

Disclaimer

I'm writing this to glean a deeper understanding of persistant storage techniques and to get more experience with Rust. Don't even think about using this in production :)

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Pure-rust key/value store based on BoltDB

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%