CockroachDB replicates your data multiple times and guarantees consistency between replicas.
- CockroachDB guarantees serializable SQL transactions as long as system clocks are synchronized with NTP
- No downtime for server restarts, machine failures, or datacenter outages
- Local or wide-area replication with no stale reads on failover
- Employs Raft, a popular successor to Paxos
How does this work?
Stored data is versioned with MVCC, so reads simply limit their scope to the data visible at the time the read transaction started.
Writes are serviced using the Raft consensus algorithm, a popular alternative to Paxos. A consensus algorithm guarantees that any majority of replicas together always agree on whether an update was committed successfully. Updates (writes) must reach a majority of replicas (2 out of 3 by default) before they are considered committed.
To ensure that a write transaction does not interfere with read transactions that start after it, CockroachDB also uses a timestamp cache which remembers when data was last read by ongoing transactions.
This ensures that clients always observe serializable consistency with regards to other concurrent transactions.
- Serializable, Lockless, Distributed: Isolation in CockroachDB
- Consensus, Made Thrive
- Trust, But Verify: How CockroachDB Checks Replication
- Living Without Atomic Clocks
- The CockroachDB Architecture Document