📜Foundational Paper: The Transaction Concept

Jim Gray, June 1981

Elias Nema


March 8, 2023

“The Transaction Concept: Virtues and Limitations” paper lays down the foundation for the transactions in computer systems. It describes the concepts of ACID (not yet acronymized in the paper), undo and redo logs, and design for highly available systems. I enjoyed the paper a lot. Simple language, analogies, and a look at history make it a stark contrast to many of the modern papers, where looking sophisticated is often more important than the substance.

As always, I start with the visual representation of the paper in which I distilled and connected the most important points:

Diagram: the concept of a transaction as described by Jim Gray in 1981.

But the paper itself is far more poetic. For example, from now on that’s the only acceptable history horizon to look back at a problem:

Gray talks about transactions in human terms, as derived from the contract law:

He also comes up with Consistency, Atomicity, and Durability as properties of a transaction (Isolation is not yet explicitly mentioned, but the concept is described in the logging implementation):

Going back to Von Neumann for the concept of building reliable systems by adding redundancy to the systems:

I also haven’t realised how many of the transaction problems in computer come from the possibility of in-place updates:

And the importance of what now is popular to call idempotency:

- “Another detail is that the undo and redo operations must be restartable, that is if the operation is already undone or redone, the operation should not damage or change the object state. The need for restartability comes from the need to deal with failures during undo and redo processing. Restartability is usually accomplished with version numbers (for disc pages) and with sequence numbers (for virtual circuits or sessions). Essentially, the undo or redo operation reads the version or sequence number and does nothing if it is the desired number. Otherwise it transforms the object and the sequence number.”

Get Data Feed posts by ✉️ | 🐦 | 🐘