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:

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

2 Likes