-
Notifications
You must be signed in to change notification settings - Fork 39
Comparison with dqlite and rqlite
Heyang Zhou edited this page May 6, 2023
·
5 revisions
dqlite and rqlite are two other distributed databases built on SQLite. Some of the key differences between mvsqlite and those two systems:
- (*): mvsqlite handles both replication and sharding, while dqlite and rqlite only handle replication.
-
(+): mvsqlite is a drop-in replacement. To run existing applications with mvsqlite, setting
LD_PRELOAD
is enough. - (+): mvsqlite is more scalable than the alternatives. dqlite/rqlite use a single consensus group and scales to a few machines, while mvsqlite is based on FoundationDB which is linearly scalable to hundreds of cores.
- (+): mvsqlite has advanced multi-version features like point-in-time snapshot reads.
- (+): Writes to mvsqlite can be horizontally scaled.
- (-): Reads in mvsqlite are sensitive to network latency. The client is stateless, and data needs to be fetched from FDB on demand. This is partially mitigated by caching, prefetching, and differential cache invalidation.
-
(-): mvsqlite is a little more complex to deploy than the alternative.
- Three moving parts: FoundationDB,
mvstore
, andlibmvsqlite_preload.so
, instead of a single library.
- Three moving parts: FoundationDB,
-
(-): mvsqlite is new. Really new. And has not received as much testing as the alternatives.
- But you can rely on FDB's continuous backup to ensure your data integrity in case an unknown bug in mvsqlite corrupted your database.