/wickdb

LSM-tree based embedded storage engine for Rust

Primary LanguageRustApache License 2.0Apache-2.0

wickdb

Build Status Coverage Status Project Status: WIP – Initial development is in progress, but there has not yet been a stable, usable release suitable for the public. FOSSA Status

You can find a simple worked example in examples.

Plan & Progress

The basic shape of LevelDB

  • Fundamental components
    • Arena
    • Skiplist
    • Cache
    • Record
    • Batch
    • Block
    • Table
    • Version
    • VersionEdit
    • VersionSet
    • Storage (aka Env)
    • DB
  • Compaction implementation
  • Scheduling

[ongoing] Test cases & Benches

  • Solid test cases
  • Benchmark

Remove unsafe codes

We should use Rust as safe as we could because that's why we prefer using Rust.

  • Slice could be replaced using crate bytes.
  • LRUCache is a double-linked circle list implemented by raw pointer.

Developing

wickdb is built using the latest version of stable Rust, using the 2018 edition.

In order to have your PR merged running the following must finish without error otherwise the CI will fail:

cargo test --all && \
cargo clippy && \
cargo fmt --all -- --check

You may optionally want to install cargo-watch to allow for automated rebuilding while editing:

cargo watch -s "cargo check --tests"

There're so many TODOs in current implementation and you can pick either of them to do something.

This crate is still at early stage so any PR or Issue is welcomed !.

License

FOSSA Status