docs-internal/engine/design-choicse/EMBEDDED_KV.md
Chose RocksDB because:
Nice to haves:
Uses LSM trees. Requires backgound compaction. Has a lot of overhead to work like a "real" database.
Pros:
Cons:
Uses B+ tree for storage. mmaps database.
The critical downside of LMDB is that performance suffers under write-heavy workoads from (a) single writer locks and (b) uses mmap instead of buffering writes.
Pros:
Cons:
All three differe significantly, but the primary reason for disqualifying these is maturity. Sled claims to be "beta" and not mature yet, while redb and fjall claim to have a stable disk format.
This is not a place we need to innovate, so it makes more sense to go with an established embedded KV.
Pros:
This would be the simplest & most straightforward option in terms of support. FDB's pre-7.0 storage engine is based on the SQLite's B-tree implementation.
SQLite provides overhead we don't need when options like RocksDB or LMDB exist.
Pros: