Accessibility

6.033--Computer System Engineering

Suggestions for classroom discussion


Topic: ACID terminology in transaction literature, Tanenbaum, System R, and 6.033

By J. H. Saltzer, April 27, 1995, updated 29 April 1999 and January 2004.


There is considerable diversity in the labels used for the four properties of a transaction. Here is a chart that provides correspondences for several of the more popular labels:


6.033         Hardware         System R                Transaction
              architects                               literature

recoverable   atomic          atomic or recoverable    Atomic or recoverable
consistent    coherent        consistent               Consistent
isolated      atomic          consistent               Isolated or serializable
durable                                                Durable, persistent, or permanent

In 6.033 we also use the word "atomic", but noting that it really describes the concept of hiding composition (and following the lead of hardware architects) we take it to mean recoverable or isolated or both.

If you choose the correct set of labels (the first label in the Transaction literature column), and arrange the properties in the right order, you can get the initial letters to spell "ACID", a catchy, if somewhat hokey, mnemonic.

In addition, the literature on transactions has changed the definition of, Consistency, as it has come to understand the concept better. In the System R paper, Gray et al. say "...any two transactions concurrently operating on common objects appear to run serially. This property is called consistency..." In fact, they are describing Serializability, which both 6.033 and some of the later transaction literature call Isolation.

The modern definition of Consistency, used both in 6.033 and in current literature, is "preserving application state invariants." If you look at papers on databases and transactions of the 1980's you will see things such as "level 1" and "level 2" consistency, among other qualified labels.

What is going on here is that at the time System R was being described, the distinctions among these concepts were still being formulated, and that paper represents an early formulation. In 1980 it was apparent that some form of consistency was needed, but it was thought that serializabilaity was that form. As work progressed, it became apparent that different applications actually had different consistency requirements, so various "levels" of consistency were defined, and serializability (isolation) was identified as a distinct concept applicable to some but not all levels of consistency. As sophistication increased, it finally became apparent that consistency is in the eye of the beholder; it is completely defined by the application as whatever that application consisiders to be the invariants that should apply to its data.


Comments and suggestions: Saltzer@mit.edu