Skip to content

mikerhodes/toykv

Repository files navigation

toykv

An LSM key-value store created so I could learn the basics of writing an LSM (and rust).

It's purely a learning exercise and not suited to being used in any real world application.

Saying that, it's on its way to being not-awful:

  • It supports single K/V read and write, and scanning ranges.
  • It's got both memtables (with WAL) and sstables.
  • It's got a decent layering of the reading and writing code.
  • It uses bloom filters to avoid reading sstables it doesn't need to.
  • It's thread-safe.
  • It's relatively efficient with file access.

On the other hand, there are a few key missing features:

  • I still need to write compaction.
  • I'd like to add a checksum --- xxhash probably --- to the sstable blocks and WAL records for data safety.

And some optimisations:

  • It'd be good to compress sstable blocks, or use key prefix compression.

Overall, with all those things, it would be a good demonstration LSM store; as for production use-cases, I don't (yet) have the need to take it to that level of robustness.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published