···33Hobbes is a key/value database with a service architecture inspired by FoundationDB.
44The database is unbundled into a number of independent roles which communicate and interoperate.
5566-These roles can be organized into three main subsystems:
66+These roles can be organized into three subsystems:
7788- The **Control Plane**, which performs distributed consensus (i.e. Paxos)
99- The **Transaction Plane**, which provides transactional support to the database
1010-- The **Storage Plane**, which stores key/value data for the cluster and serves multiversion reads
1010+- The **Storage Plane**, which stores key/value data for the cluster and serves versioned reads
11111212Each plane is responsible for managing the next.
13131414-The Control Plane consists of a consensus cluster of Coordinator servers.
1414+The Control Plane consists of a number of Coordinator servers.
1515The Coordinators have known, static names and serve as the entry point of the cluster.
1616-They perform fault-tolerant distributed consensus, specifically Viewstamped Replication (similar to MultiPaxos or Raft).
1616+They execute fault-tolerant distributed consensus, specifically Viewstamped Replication (similar to MultiPaxos or Raft).
17171818-The Transaction Plane consists of several unique roles which work together to provide transactional guarantees like consistency and atomicity.
1818+The Transaction Plane consists of a number of servers across several unique roles which work together to provide transactional guarantees like consistency and atomicity.
1919The Transaction Plane is generational:
2020-if *any* member fails or is unresponsive, the entire system is destroyed and a new generation is created to replace it.
2121-The creation of a new generation is kicked off by the Control Plane;
2222-as the Control Plane is implicitly fault-tolerant (distributed consensus), it therefore confers that fault-tolerance onto the Transaction Plane.
2020+if *any* member fails or is unresponsive, all of its servers are destroyed and replaced with a new generation in a process called **recovery**.
2121+The Control Plane is responsible for kicking off the recovery process; it therefore confers its fault tolerance onto the Transaction Plane.
23222424-The Storage Plane consists of a number of Storage servers which store the actual key/value data.
2323+The Storage Plane consists of a number of Storage servers which store key/value data and serve versioned reads.
2524Data is split into contiguous (ordered by key) shards and distributed (and replicated) amongst Storage servers.
2625If a Storage server fails or becomes unresponsive,
2727-the Transaction Plane will issue commands to re-replicate its shards to restore fault-tolerance.
2828-Because the Transaction Plane is fault-tolerant as explained above, it therefore confers that fault-tolerance into the Storage Plane.
2626+the Transaction Plane will issue commands to re-replicate its shards to restore fault tolerance.