I read Paxos and Raft are the main algorithms to achieve distributed consensus.
How does FoundationDB approach to distributed ACID databases relates to those algorithms?
I read Paxos and Raft are the main algorithms to achieve distributed consensus.
How does FoundationDB approach to distributed ACID databases relates to those algorithms?
This video from the Summit is probably the best explanation that’s all in one place.
Paxos is consensus algorithm. The consensus algorithm (Active Disk Paxos[1]) is implemented in FDB coordinators, which serves the similar functionality of ZooKeeper.
ACID is transaction’s properties. FDB implements the Serializable Snapshot Isolation using optimistic concurrency control. From what I understand, the idea is similar to Postgre’s SSI in [2].
Consensus and ACID are two different concepts: Consensus creates the illusion that an object only has one copy and all operations on the object are linearized, although the object may be stored in multiple replicas for durability. ACID, particularly “Isolation”, creates the illusion that only one user is operating on the DB at any time, although there exist multiple users operating on the DB at the same time. In other words, consensus solves the problem caused by multiple replicas, while ACID solves the problem caused by concurrent access from multiple users.
[1] https://groups.csail.mit.edu/tds/papers/Chockler/podc-02.pdf
[2] https://drkp.net/papers/ssi-vldb12.pdf