Goblin - another embedded key-value database for Elixir

Nice work! Code looks good and I love the name.

A few things:

I see you mention transactions with snapshot isolation. Could you provide a brief overview of the concurrency control impl? I think I found some of it in transaction.ex.

Keeping a lock per SST is a valid approach, but I am personally more fond of maintaining a global snapshot window and deleting SSTs outside of that window. I can’t remember which one RocksDB does, though.

I know you’re probably at a stage where benchmarks aren’t really meaningful, but would you be willing to share roughly what numbers you’re seeing? I ask only because I’m literally implementing an Elixir LSM right now and I’m curious what to expect.

Anyway, please keep at it! The ecosystem needs more databases :slight_smile:

2 Likes