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? 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.
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.
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...