I am pleased to announce the first release of bancos, our new persistent Key-Value store.
Bancos is an implementation of an Adaptive Radix Tree (ART) modified to support parallel reads and writes (ROWEX) directly on a file (based on the RECIPE/P-ART approach).
- Our project is designed for indexing with file-backed storage.
- We provide an implementation compatible with unikernels. It is currently being used by kevin, an HTTP/1.1 server unikernel that exposes routes for key insertion and lookup.
- This work is part of our broader goal to index emails by their
Message-ID. An extension of our tool blaze now allows searching through archives now (if you are interesting about our archive system, you can take a look here). This indexing also enables efficient email thread extraction usingIn-Reply-Toheaders.
While still experimental, the results — especially when paired with our Miou scheduler — are very promising. This release of bancos comes alongside several updates across our stack:
- flux: Our OCaml stream library for Miou
- carton: For manipulating PACKv2 archives (as used by Git)
- bstr: A library for handling bigbytes and memory buffers
- cachet: A library to cache
mmapsyscall results. Notably, this include significant work on an asynchronous write pipeline for unikernels on block devices
You can find the project here: GitHub - robur-coop/bancos: A simple KV-store
For a deeper dive into the implementation of bancos and its application to email indexing, we have prepared a detailed blog post here.
Happy hacking!