An operator who knows the data model can predict what Corium does under
load, after a crash, and during recovery. This part of the manual explains
the model. Every later chapter refers back to it.
Five ideas carry the whole system.
- A fact is a datom. Nothing is updated in place. A change asserts a new
fact, and it retracts the old one. See
datoms and the fact model.
- The log is the truth. A transaction is durable when its record is
durable. Everything else is derived. See
the transaction log.
- Indexes are a fold of the log. They are immutable, content-addressed
blobs. They are an optimization, never a durability requirement. See
indexes and storage.
- A database value is a snapshot. Time views name a basis. They do not
copy facts. See time and database values.
- Writes and reads are separate roles. One transactor writes. Many peers
read locally. See processes and roles.
The five ideas above produce the operational rules in this manual.
- Index publication can lag without risk to durability. Lag costs cold-start
time and backup freshness.
- Garbage collection can strand garbage, but it cannot lose data, because it
deletes only unreachable blobs after a retention window.
- Crash recovery equals startup. The transactor replays the log tail. There is
no repair step.
- A peer never blocks on the transactor to get a database value.
- A deposed transactor cannot publish, because every root write is a
compare-and-set on the record that holds the lease.
This manual states what an operator needs. The design documents state why.
They are in
docs/design, and the
decisions are recorded as ADRs in
docs/adr.