Wednesday, October 27, 2004

Isolation

ACID is Good "Unfortunately, ACID transactions do not work effectively over a long period of time. Do not expect things to work if your transactions last more than even a few seconds...This is the so-called “long transaction problem”. No one has found a solution for it after many years of research. The basic problem is achieving isolation – the “I” in “ACID”. There are no known concurrency control algorithms that will operate over a long period of time."

"Over the years, several techniques have been proposed for managing long-lived activities. One of the first is called a Saga. [GGKKS] Sagas require you to define compensating transactions. A compensating transaction compensates for the effects of a transaction. For example, a compensating transaction for reserving a hotel room would be a transaction that cancels the reservation."

"Therefore, rather than provide support for a single model, such as Sagas, JSR 95 defines an infrastructure to support a wide range of extended transaction models. The architecture is based on the insight that the various extended transaction models can be supported by providing a general purpose event signaling mechanism that can be programmed to enable activities (application specific units of computations) to coordinate each other in a manner prescribed by the extended transaction model under consideration."

The read phases in Kowari/TKS can work over days without interrupting other phases. I've been meaning to try and explain its isolation level which is somewhere between 2 and 3. Reads don't interact with locking but writes are serialized. It doesn't prevent phantom reads but it does mean that querying graphs and getting sub-graphs will always be consistent - i.e. as you constrain it further you always get fewer results.

No comments: