What transaction mechanics forbid
What this article forbids
- Simultaneity. You may designate one write to stand for many; you can never perform many at once.
- Removing the in-doubt window. Between issuing a durable write and learning its fate, the issuer does not know the outcome. This is true on one node as much as across ten.
- Cheap commit and cheap abort together. Data placement picks one.
- A commit rate above 1 / (latency of your atomic primitive) per independent committer. Batching raises throughput, but not the rate of individually ordered commits.
- Conflict detection finer than your metadata's granularity. A file-level log cannot see a row-level conflict, whatever the isolation level is called.
Escapes and their prices
| Escape | Price |
|---|---|
| Group commit | Latency for throughput (and it tunes itself) |
| Asynchronous commit | A bounded, explicitly sized durability window |
| Out-of-place placement | Space and a garbage collector, in exchange for free aborts |
| A single writer | A throughput ceiling and availability, in exchange for zero conflict |
| Partition-disjoint writers | A modelling constraint you must defend forever |
| Idempotency keys | Deduplication state with its own retention window |