Skip to content

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, and libmvsqlite_preload.so, instead of a single library.
  • (-): 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.
Clone this wiki locally