11
1.4 Concurrency
Concurrency control is an issue for all of the systems discussed above, and some of the
basic approaches have already been mentioned. This topic has a long history, with many
proposed methods of dealing with problems of preventing data inconsistency in the presence
of multiple independent processes modifying the same data. The most major distinction in
traditional concurrency control is that between optimisticandpessimisticmethods. Pessimis-
tic algorithms use locks or proactively abort update operations that might lead to inconsis-
tency in a data structure. This always guarantees that the data is consistent, but does not
guarantee that all updates can be performed at a particular time. The guarantee of consis-
tency is enforced by ensuring that the history of operations is serializable:that the final
state of the data structure is the same as would result from some serial execution of the ac-
cepted operations. In the general case, a pessimistic algorithm may block one update en-
tirely in favor of another, thus abortingan update that would conflict with another update.
Optimistic algorithms allow updates to proceed, determining as late as possible whether a
serializability conflict has occurred. One common thread leading through all the traditional
methods of concurrency control is that data is always maintained in a consistent state. This
reflects the ACID properties required of database systems: transactions should be Atomic,
Consistent, Isolated and Durable.
However, collaboration support has rather different requirements than a database back-
end. For many phases of the authoring process, the Atomicity of complex changes, and rigid
enforcement of Consistency constraints in intermediate and working versions are lower pri-
ority tasks. While the final products of collaborative efforts may have quite rigid require-
ments, the authoring process is not permanently damaged by sloppy drafting, in the way
that a database can become corrupted by the consequences of even a small inconsistency.
Durability of results is important in both cases. Systems to support authors and designers
1.4 Concurrency
Concurrency control is an issue for all of the systems discussed above, and some of the
basic approaches have already been mentioned. This topic has a long history, with many
proposed methods of dealing with problems of preventing data inconsistency in the presence
of multiple independent processes modifying the same data. The most major distinction in
traditional concurrency control is that between optimisticandpessimisticmethods. Pessimis-
tic algorithms use locks or proactively abort update operations that might lead to inconsis-
tency in a data structure. This always guarantees that the data is consistent, but does not
guarantee that all updates can be performed at a particular time. The guarantee of consis-
tency is enforced by ensuring that the history of operations is serializable:that the final
state of the data structure is the same as would result from some serial execution of the ac-
cepted operations. In the general case, a pessimistic algorithm may block one update en-
tirely in favor of another, thus abortingan update that would conflict with another update.
Optimistic algorithms allow updates to proceed, determining as late as possible whether a
serializability conflict has occurred. One common thread leading through all the traditional
methods of concurrency control is that data is always maintained in a consistent state. This
reflects the ACID properties required of database systems: transactions should be Atomic,
Consistent, Isolated and Durable.
However, collaboration support has rather different requirements than a database back-
end. For many phases of the authoring process, the Atomicity of complex changes, and rigid
enforcement of Consistency constraints in intermediate and working versions are lower pri-
ority tasks. While the final products of collaborative efforts may have quite rigid require-
ments, the authoring process is not permanently damaged by sloppy drafting, in the way
that a database can become corrupted by the consequences of even a small inconsistency.
Durability of results is important in both cases. Systems to support authors and designers