CREATE TABLE kv (
k TEXT PRIMARY KEY,
v TEXT NOT NULL
);
Even if sqlite is technically an RDBMS, I think it's a legitimate comparison. Is SplinterDB worth giving up sqlite's reliability and feature set?In other words, you'd use this when you just need a persistent KV store and want to build the higher level semantics according to your application's needs.
Why can't you use SQLite for this usecase? I believe FDB uses SQLite as an embedded KV store.
You can use a relational database such as SQLite for a low-level key-value store, such as RocksDB or SplinterDB, but then you pay for the higher-level semantics with lower performance.
In the upcoming FoundationDB 7.0 release, the B-tree storage engine will be replaced with a brand new Redwood engine.
https://apple.github.io/foundationdb/architecture.html#stora...
I'm still skeptical of the "tremendous performance penalty" you'd suffer from using SQLite. Just because you do fewer things doesn't necessarily mean you're faster at doing them. I've hit ~120,000 inserts/sec on SQLite without weakening any of it's durability guarantees. If you play fast and loose with fsync and WAL, I'm sure you can squeeze out even more performance.
I can also think of use-cases where you don't want the write amplification that comes with RocksDB or the memory constraints of LMDB.
I'd say that these low-level storage engines have more in common with filesystems than SQLite, they're just not in the same ballpark at all.