Bedrock - a scaleable, distributed key-value database with better-than-ACID guarantees

The threshold for “premature” is IMO much higher for a storage engine. I have been debating (with myself) whether it’s even possible to write a useful storage engine in Elixir, and one of the biggest problems is a lack of control over memory allocation.

I’ve been leaning towards LSM in part because the design necessitates copying where a Btree would benefit greatly from in-place mutation of pages (in memory not on disk) which seems more natural in a functional language. Still, there are challenges.

Being able to binary search the blocks without decoding (and therefore copying) the keys seems to me like it would be a meaningful advantage. But of course some microbenchmarks could show it matters less than I think!

I don’t see how this would work because they have to be comparable (bin_a < bin_b) in encoded form to avoid decoding. But maybe I am misunderstanding you?

This is entirely reasonable. I personally have a specific set of goals which preclude the use of FDB, but Bedrock (while similar in some ways) is not my project and likely has different goals. That’s not up to me to comment on.

What other functionality do you think would benefit from using terms down to the storage layer? Introspection/debugging is a good example.

This is normal in English; native speakers do this all the time. It doesn’t look awkward to me.