A database is a collection of data describing the activities of one or more related organizations. The software designed to assist in maintaining and using databases is called database management system, or DBMS.
A DBMS allows users to define the data to be stored in terms of a data model, which is a collection of high-level metadata that hide many low-level storage details. In practice, a typical database application is a client-server system where a number of users are connected to a database server via a terminal or a desktop computer. The user actions are translated into SQL commands by the client application and sent to the database server. The results are sent back to the client to be displayed in the adequate format by the client application.
A very important notion in DBMS is the concept of transaction, which is a set of commands that perform a given action and takes the database from a consistent state to another consistent state. Transaction management is an important functionality of DBMS and it is directly related to system dependability, particularly in what concerns to concurrency control and data recovery.
In order to correctly deal with concurrency control and recovery, DBMS transactions must fulfill a set of properties known as ACID properties (atomicity, consistency, isolation, and durability). The ascendance of networked information in our economy and daily lives has increased awareness of the importance of on time data management. This way, database applications for critical application areas (e.g., telecom, air traffic control, stock market, factories control, etc.) are increasingly giving more importance to the timely execution of transactions.
DBMS have a long tradition in high dependability, particularly in what concerns to data integrity and availability aspects. However, and in spite of the importance of time properties in some applications domains, there are no mechanisms implemented in typical commercial DBMS able to provide timing guarantees in the execution of transactions or at least to detect any type of timing failures.
In many situations timeliness is as important as correctness, which means that (approximate) correctness can be traded for timeliness. Similarly, atomicity issues may be relaxed. For instance, in a database application designed to manage information about a critical activity (e.g., a nuclear reactor), a transaction that reads and store the current reading of a sensor must be executed in a short time (i.e., the longer it takes to execute the transaction the less useful the reading becomes).
In other words, in many database applications, when a transaction is submitted and it does not complete before a specified deadline that transaction becomes irrelevant and this situations must be reported to the application/business layer in order to be handled in an adequate way. The goal of this project is to bring timeliness properties to the typical ACID transactions, putting together classic database transactions and recent achievements in the field of real time and distributed transactions.