ABSTRACT

Many service-oriented businesses and organizations, such as banks, airlines, catalog retailers, hospitals, etc., have grown to depend on fast, reliable, and correct access to their “mission-critical” data on a constant basis. In many cases, particularly for global enterprises, 7 × 24 access is required; that is, the data must be available seven days a week, twenty-four hours a day. Database management systems (DBMSs) are often employed to meet these stringent performance, availability, and reliability demands. As a result, two of the core functions of a DBMS are (1) to protect the data stored in the database and (2) to provide correct and highly available access to those data in the presence of concurrent access by large and diverse user populations, despite various software and hardware failures. The responsibility for these functions resides in the concurrency control and recovery components of the DBMS software. Concurrency control ensures that individual users see consistent states of the database even though operations on behalf of many users may be interleaved by the database system. Recovery ensures that the database is fault-tolerant; that is, that the database state is not corrupted as the result of a software, system, or media failure. The existence of this functionality in the DBMS allows applications to be written without explicit concern for concurrency and fault tolerance. This freedom provides a tremendous increase in programmer productivity and allows new applications to be added more easily and safely to an existing system.