garrison

garrison

Hobbes RFD #1: XKS Storage Engine

This is the first RFD (Request For Discussion) for Hobbes, a database/library written in Elixir.

I am going to be exercising a little more creative control over Hobbes’s architecture going forward (i.e. deviating further from the original FoundationDB design), so I thought it would be a good idea to make a habit of writing design documents for those changes. And, if I’m going to be doing that, I may as well turn them into RFDs and solicit discussion from the community.

XKS (short for ExKeyStore) is a new on-disk storage engine for Hobbes. Safe persistent storage is an important requirement for a Hobbes cluster, as without it Hobbes cannot provide its strong consistency and correctness guarantees. XKS is designed to meet that requirement by providing deep integration with the Hobbes cluster, including the ability to perform fully integrated simulation testing and fault injection.
This document introduces the basic layout of an XKS file and the design of its first data structure: a leveled LSM tree. Future work may feature additional data structures designed to meet the needs of Hobbes’s various servers.

This first RFD is a little involved because it lays out the design for an entire storage engine, but I know there are some here who are into that sort of thing. Future RFDs will be more approachable.

You can read the RFD here:

https://git.sr.ht/~garrisonc/hobbes/tree/master/item/rfds/001_xks_storage_engine.md

Discussion is appreciated! Even if you feel like you don’t know much about this stuff, questions are still very welcome.

Where Next?

Popular in News & Updates Top

josevalim
Hi everyone, just a heads up that we announced https://livebook.dev, a website for everyone to learn more about Livebook. One of the coo...
New
fhunleth
We’ve released new versions of all of the officially maintained Nerves Systems. The official systems, nerves_system_rpi0, nerves_system_b...
New
hugobarauna
A new Livebook version arrives this Friday! :tada: As we count down the days, we will share a sneak peek into what’s coming each day thi...
New
bartblast
Hologram v0.6.0 is here, bringing production-ready features to the full-stack Elixir web framework! This release focuses on enhanced secu...
New
bartblast
Hologram v0.7.0 is out! This is a milestone release for the Elixir-to-JavaScript porting initiative. 49 contributors ported 150 Erlang fu...
New
bartblast
After building Hologram and sharing updates across various places, I’ve realized there’s a lot happening that doesn’t always make it to t...
New
Jskalc
LiveVue v1.0 released After four release candidates and a lot of community feedback, LiveVue 1.0 is stable :tada: I’ve built a dedicated...
New
zachdaniel
Hello everyone! We’ve got two big updates on the Ash community today :tada: Discord Support Forum → Elixir Forum The Ash community is g...
New
zachdaniel
Hey folks! I’ll be teasing some interesting bits going into Ash 3.0 while I work on it, and this is post #1! You can follow along with t...
New
bartblast
Hey! For those following Hologram’s progress… I’m excited to share that I’ve just published the official roadmap for Hologram. You can ch...
New

Other popular topics Top

TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
274 41539 114
New
electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
Lily
In templates/appointment/index.html.eex: <%= for appointment <- @appointments do %> <tr> <td><%= appoi...
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
RisingFromAshes
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 126479 1222
New

We're in Beta

About us Mission Statement