This paper explains why Jim Gray was awarded so many awards. It culminates in him being awarded the 1998 ACM Turing Award. This short summary summarises his major contributions in our field.
In June 1970, Ted Codd’s pioneering paper was published in CACM. There was immediate debate: The relational advocates argued that a simple database model (tables), as well a high-level language, (at the time Codd Data Language Alpha, now SQL), should form the basis for a reasonable DBMS architecture. The CODASYL supporters, who argued against the possibility of efficiently implementing relational queries languages. Codd’s query language was not understood by any programmers. Many researchers knew that the next step was to:
Specify a more user-friendly set of relational queries languages
Do the following:
This first task produced several new query language, but SQL won the market (largely due to the “throwweight” of IBM). The second task required a series of implementations. System R and Ingres were the best-known. Jim was one the System R researchers.
Crash recovery
Concurrency control
DBMS systems should not ever lose customer information, no matter what type of failure may occur. But what does this all mean? And how can it be implemented? DBMSs have to be able to manage parallel updates from multiple applications or users. One user might move all employees from the shoe section to the toys department, while another user might give a 10% raise to all employees. The second user can alter the information about the individuals. In such an instance, one needs to determine the best semantics and how to implement them. Jim created a groundbreaking paper in 1976. A book was published in the late 1980s. These (remarkably simple, but still revolutionary) ideas are largely his. You should break down DBMS activity into units called transactions. A transaction is a collection of statements in SQL or any other interaction language supported, interspersed with code written in a general-purpose programming language. One example of a transaction is to move $100 from one account to another. In SQL (and all other interaction languages), two statements are required to execute this statement. One to increment and decrement account A. These properties must be present in every transaction:
Atomic refers to the fact that all or part of a transaction is possible. I.e. The decrement cannot be made unless the paired addition also takes place. Transactions can be used to transfer the data base between two consistent states.
Consistent. A collection of integrity limitations can be defined by the data base. These constraints will determine legal database states. Account balances must be non-negative. A transaction that causes an update to violate an integrity constraint should be aborted. Executing a transaction that results in inconsistent DBMS states is therefore illegal.
Isolation: Parallel transactions cannot view intermediate states of other transactions. This means that the collection’s outcome must match the sequence of the individual transactions. Any other outcome would be inconsistent. There is no obligation to obey any serial order. This is a legal requirement that defines when parallel transactions are run.
Durable: There are only two outcomes in the event of failure. Either the transaction “happen” (i.e. Either it happened, or it was not. It is aborted. The DBMS will not develop amnesia if the user is notified of the transaction’s completion. Regardless of failures, the transaction effects cannot be lost.
These are collectively called “ACID properties”. These properties are a complex intellectual topic that has received much research over the past quarter century. One solution is to lock any objects that are touched by transactions and to keep them locked up until the transaction ends. A “log record” holds both the “before” and “after” images of each object that is updated by a transaction. The database can be “rewinded” if the transaction is to be undone. If a storage problem causes the commit transaction to be lost, the SIGMOD will restore its effects. Jim Gray made a significant contribution to the 1970’s and 1980’s by identifying the properties and then creating efficient implementation plans. In 1998, the Turing Award was presented to Gray for his pioneering efforts. Jim was an extraordinary person, and I am proud to say so. First, he had an insatiable intellect. He devoured Computer Science literature and was always interested in new topics. He was also open to new ideas and would share his views on those of others. As such, I am grateful for his mentorship and help. He is also one of my closest friends. Jim is a true pioneer in his field due to his intellectual curiosity, willingness of others to help him, and pure intellectual ability.