···11+# Hobbes Overview
22+33+Hobbes is a key/value database with a service architecture inspired by FoundationDB.
44+The database is unbundled into a number of independent roles which communicate and interoperate.
55+66+These roles can be organized into three main subsystems:
77+88+- 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
1111+1212+Each plane is responsible for managing the next.
1313+1414+The Control Plane consists of a consensus cluster of Coordinator servers.
1515+The 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).
1717+1818+The Transaction Plane consists of several unique roles which work together to provide transactional guarantees like consistency and atomicity.
1919+The 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.
2323+2424+The Storage Plane consists of a number of Storage servers which store the actual key/value data.
2525+Data is split into contiguous (ordered by key) shards and distributed (and replicated) amongst Storage servers.
2626+If 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.