vs

Bedrock vs dqlite

Bedrock: Expensify's WAN-replicated SQLite server with Paxos leader election, MySQL protocol and job/cache plugins. dqlite: Canonical's embeddable C library that makes SQLite highly available with Raft replication.

key differences

  • Bedrock is built for larger datasets (≤ 10 TB) than dqlite (≤ 100 GB).
  • Only dqlite has triggers.
  • dqlite can run embedded in your application process.

choose bedrock for

  • +Highly available SQL backend spanning multiple data centres
  • +Durable job queues alongside relational data
  • +Teams that like SQLite semantics but need replication and failover

best at · OLTP, Queue, Cache

choose dqlite for

  • +Cluster state for infrastructure software (LXD, MicroK8s)
  • +Kubernetes datastore replacement for etcd via kine
  • +HA configuration stores in edge appliances
  • +Embedding a replicated database in Go services

best at · Coordination, Metadata, Embedded

overview
Primary model
Relational
Relational
Also supports
–
–
Type
Database engine
Embedded library
Status
Active
Active
Developer
Expensify
Canonical
First release
2016
2017
Latest version
2026-10-23 (Oct 23, 2026)
1.18.7 (Jul 2, 2026)
License
Open source (copyleft)GNU LGPL v3
Open source (copyleft)LGPL-3.0 with static-linking exception
Free tier
✓
✓
popularity
WhichDB Score
2.5
8.4
Rank
#474
#324
GitHub stars
1.3K
4.4K
Stack Overflow questions
–
–
scale & guarantees
Comfortable data size
Medium (≤ 10 TB)
Small (≤ 100 GB)
Horizontal scaling
None
None
Multi-region
Read replicas
None
ACID
Full
Full
Consistency
Strong
Strong
Schema
Strict
Flexible
Architecture
Distributed, Primary replica
Embedded, Distributed
deployment
Self-hosted
✓
✓
Vendor-managed cloud
—
—
Serverless
—
—
Embedded
—
✓
Edge
—
✓
Clouds
–
–
capabilities
Transactions
✓
✓
Joins
✓
✓
Secondary indexes
✓
✓
Full-text search
—
—
Vector search
—
—
Geospatial
—
—
JSON
✓
✓
Change data capture
—
—
Triggers
—
✓
Stored procedures
—
—
Materialized views
—
—
TTL / expiry
—
—
Pub/Sub
—
—
Columnar storage
—
—
In-memory
—
—
Durable persistence
✓
✓
Compression
—
—
Encryption at rest
—
—
Role-based access
—
—
Time travel
—
—
Branching
—
—
Online schema changes
—
—
Streaming ingest
—
—
Offline sync
—
—
Runs in WebAssembly
—
—
interfaces
Query languages
SQL (SQLite dialect)
SQL
Client languages
Any MySQL driver, PHP
C, Go, Python
Best for
OLTP, Queue, Cache
Coordination, Metadata, Embedded, Edge

Bedrock vs dqlite: FAQ

What is the difference between Bedrock and dqlite?

Bedrock: Expensify's WAN-replicated SQLite server with Paxos leader election, MySQL protocol and job/cache plugins. dqlite: Canonical's embeddable C library that makes SQLite highly available with Raft replication. Bedrock is built for larger datasets (≤ 10 TB) than dqlite (≤ 100 GB). Only dqlite has triggers. dqlite can run embedded in your application process.

When should I choose Bedrock over dqlite?

Choose Bedrock for highly available SQL backend spanning multiple data centres; durable job queues alongside relational data; and teams that like SQLite semantics but need replication and failover. Choose dqlite for cluster state for infrastructure software (LXD, MicroK8s); kubernetes datastore replacement for etcd via kine; and HA configuration stores in edge appliances.

Is Bedrock or dqlite more popular?

dqlite ranks #324 on the WhichDB Score (8.4/100) and Bedrock ranks #474 (2.5/100). Popularity is not fit: check the requirements that matter for your project.

Are Bedrock and dqlite open source?

Yes. Bedrock is open source. License: GNU LGPL v3. Yes. dqlite is open source. License: LGPL-3.0 with static-linking exception.