Topic > The reason why Jim Gray won the Turing Award

This short article is intended to describe to the layman why Jim Gray won so many awards, culminating in his selection to receive the Award ACM Turing in 1998, probably the “Nobel Prize” of Computer Science”. It briefly summarizes his major contributions to our field. Say no to plagiarism. Get a tailor-made essay on "Why Violent Video Games Shouldn't Be Banned"? Get an Original Essay After Ted Codd's pioneering article appeared in CACM in June 1970, there was an immediate debate between: Relational advocates who argued that a simple data model (tables) and a high-level language (at Codd's Data Language Alpha era or relational algebra; now SQL) were obviously good and should have formed the basis of a sensible DBMS architecture. Proponents of IMS and CODASYL, who argued that it was impossible to efficiently implement relational query languages. Furthermore, no real programmer could understand Codd query languages. For many researchers it was obvious that the next steps required were to: Specify more user-friendly relational query languages; Demonstrate that relational DBMSs were practical. The first task led to several new query languages, of which SQL is the one that won the market (largely due to IBM's "launch weight"). The second task resulted in a collection of implementations, of which Ingres (at Berkeley) and System R (at IBM Research) were the most developed. Jim was one of the researchers working on System R. Two of the complicated problems that had to be addressed in any implementation were: crash recovery; competition control. Of course, a DBMS should never lose customer data, no matter what type of error occurs. But what exactly does this mean and how should it be implemented? Additionally, most DBMSs must handle parallel updating by multiple users or applications. For example, one user might move all employees in the shoe department to the toy department while a concurrent user might offer a 10% raise to all employees in the toy department. Clearly, the set of individuals specified by the first user is modified by the second user. In such a situation, you need to decide which semantics to apply and how to do it efficiently. Jim wrote a pioneering article in 1976 and followed up in the mid-1980s with a book on this topic. He was largely responsible for the following ideas (very simple in retrospect – but revolutionary at the time). You should divide the DBMS activity into units of work, called transactions. A transaction consists of one or more statements in SQL (or any supported interaction language) interspersed with code in a general-purpose programming language. For example, a transaction might be to move $100 from account A to account B. In SQL (and most other interaction languages), this requires two statements, one to decrement account A and one to increment account B Each transaction must have the following properties: Atomic: either the entire transaction occurs or nothing occurs. That is, it is illegal for the decrement to occur unless the coupled increment also occurs. Therefore, transactions move the database from one consistent state to another. Consistent: The database is free to define a collection of integrity constraints, which define the legal states of the database. One of these requirements could be that account balances are not negative. Any transaction that performs an update that violates an integrity constraint must be aborted. Therefore, it is illegal to perform a transaction.