Increasing advances in computer technology (e.g., microprocessor speed, memory capacity, data transfer bandwidth, software functionality, and the like) have generally contributed to increased computer application in various industries. Ever more powerful server systems, which are often configured as an array of servers, are often provided to service requests originating from external sources such as the World Wide Web, for example. As local Intranet systems have become more sophisticated thereby requiring servicing of larger network loads and related applications, internal system demands have grown accordingly as well.
Typically, a problem in computer systems has been handling the growing amount of information or data available, and continuously monitoring updates entered by a plurality of users. The sheer amount of information being stored on disks or other media for databases in some form has been increasing dramatically. While files and disks were measured in thousands of bytes a few decades ago—at that time being millions of bytes (megabytes), followed by billions of bytes (gigabytes)—now databases of a million megabytes (terabytes) and even billions of megabytes are being created and employed in day-to-day activities.
As such, much business data is stored in databases, under the management of a database management system (DBMS). For such DBMS systems, a demand for database transaction processing capacity in large installations has been growing significantly. At the same time, a large percentage of overall new database applications have been in a relational database environment. Such relational database can further provide an ideal environment for supporting various forms of queries on the database. For example, a growth in the use of ad hoc unstructured concomitant queries—is a trend that is expected to accelerate in such database environments. This can result in a growing requirement for simultaneously supporting both high volume transaction processing and unstructured queries against the same database. Thus, systems and methodologies that can effectively support both high volume transactions and complex queries, with minimal interference between the two, while sharing copies of data are in demand.
Typically, business entities create and maintain their databases through a high volume of relatively simple transactions, with an essential function of a database engine being able to execute a plurality of such transactions concurrently. Each of such plurality of transactions can be considered a piece of work, which can further consist of a sequence of operations such as, read, write, update, and/or delete, against a database. Such transaction can represent well-understood business operations (e.g., creating a new customer record, noting an account payment or transfer, and the like). Increasingly enterprises are becoming interested in running more ad hoc unstructured queries against their online data. As such, a measure of the correctness of the state of the database or a database's integrity becomes increasingly vital.
In general database integrity can refer to the problem of ensuring that two or more concurrently executing transactions do not interfere with each other in such a manner as to produce an incorrect state in the database. An application programmer typically should ensure that each transaction produces a correct state, and that each transaction begins when the database is in a correct state. Such transaction management should generally adhere to the ACID (Atomicity, Consistency, Isolation and Durability) standards. Yet, when multiple copies of data pages are created, such standards can be difficult to adhere to. At the same time, the more efficiently a database engine supports concurrent transactions, the better an end-user experience can be in terms of speed of operation and reduced database growth.
In particular, conventional shadow paging techniques do not typically provide for efficient operations during a commit stage of data modifications, and can require additional over head for merging purposes of concurrent transactions. Moreover, employing log records can in general add to the complexity of the database management and recovery.
Therefore, there is a need to overcome the aforementioned deficiencies associated with conventional systems and methodologies related to database operations and in general to any data management system accepting data entry from multiple users.