Computer based information systems are in widespread use today, ranging from simple small area file-sharing networks to global and sophisticated computer networked databases which provide the backbone for today's World Wide Web.
Generally, a user can access information stored on computer networked databases utilizing a client application such as a Windows™ application, which resides at the user's location such as on the user's personal computer. The client application is typically interfaced to a data-access system which is in turn interfaced to the computer networked database at a local or remote location. Pursuant to a request by a user to obtain a desired information, the client application communicates with the data-access system which in turn communicates with and queries the computer networked database for the requested information. Once the information is found, it is forwarded to the client application via the data-access system for presentation to the user.
Computer networked databases are generally designed to store data in data tables. Each table typically contains a set of rows, with each row having column-attributes in which the data is stored. For ease of search and access, information stored in each table is often categorized based on predetermined characteristics of the stored data. For example, in a university database system a table may be devoted to store information on the faculties where each row in the table contains the name of one faculty member, and where the information about that member such as age, identification numbers and years of experience are each stored in a separate column-attribute of that row. Still, another table may be similarly devoted to the names and description of courses offered by the university.
Currently, data-access systems play an important role in establishing an interface between the client application and the computer networked database server. A key feature of a data-access system is the ability to query a networked database for information request by a client application. Such data-access systems are implemented based on data-access models which provide underlying standard data access specifications for the data-access system. One form of such data-access model is the Object Linking and Embedding Database (OLE DB) Data Access on which an OLE DB data-access system is based.
While in widespread use today, OLE DB-based data-access systems are not without shortcomings, particularly when used by a client application to perform updating operations such as changing or deleting of data in the database. Generally, a client application requests data from database via the OLE DB-based data-access system which then obtains the requested data from the database in form of one or more rows in tables which contain the requested data. The obtained rows are then presented to the client application which performs the updating operations on the data in the rows.
To preserve the integrity and accuracy of data in the database corresponding to the data in an obtained row during the updating operations, a system of transaction isolation levels is used to determine a measure of extent to which changes are allowed to be made by other applications to data in the database corresponding to the requested data obtained by the client application. Generally, lower isolation levels such as Read Uncommitted (also called Browse) and Read Committed (also called Cursor Stability) allow for changes to be made to the data in the database that correspond to the requested data, while higher isolation levels such as Repeatable Read and Serializable (also called isolated) do not allow for (i.e. prevent) any changes to be made to the data in the database that correspond to the requested data.
Additionally, the process of modifying an obtained row involves generation of a duplicate of the requested data on which the client application performs the modification. To ensure that no changes have been made to the corresponding data in the database since the obtainment of the row, both the obtained row and the modified row are sent to the database. A comparison is then made between the obtained row and the corresponding data in the database. If no discrepancies are found, then it is deemed that no changes have been made to the corresponding data in the database since the obtainment of the row, and therefore the row is replaced with the modified row, or deleted if such has been requested. If discrepancies are found, then it is deemed that changes have been made to the corresponding data in the database since the obtainment of the row, and the client application is then notified of this circumstance, such as by way of a transmitted error message.
While this approach provides an effective method for preserving the integrity and accuracy of data in the database, it results in inefficient use of the system and networking resources. In particular, excessive network traffic is caused by transmission of the obtained row along with the modified row to the database, as well as extra consumption of the processor resources for verifying concurrency control constraints in comparing of the obtained row with the corresponding data in the database. This inefficiency becomes particularly stark in high volume multi-programmed transaction processing environments where it is highly imperative that application programs which perform update intensive tasks on the databases to be able to do so in as efficient a manner as possible to reduce operational processing time.
An ongoing need thus exists to reduce the need for transmission of the obtained row along with the modified row and the comparison of the obtained row with the corresponding data in the database thus to increase the overall efficiency of a data access system.