The techniques used to solve this and other related problems are known in the database industry as concurrency control.
Traditional products used locks which stated that a particular transaction was going to modify a record. Once the lock was placed, no one else could read or modify the data until the lock was released. The lock may block changes to a single record, a page (a group of records stored together on disk) of records, or every record examined by a particular transaction, depending on the lock resolution. Lock resolution is a tradeoff between performance and accuracy -- by blocking updates at the page level, for example, some updates will be blocked which do not in fact conflict with updates made by other transactions, but performance will be improved in comparison with record level locks.
Locking becomes an even bigger problem when combined with another feature common to all such systems, transaction isolation. This is because transactions typically involve both a read and a write -- in this example, to read the value of the account and then change it. In order to show an isolated view of the data the entire transaction, including records read but never written to, must be locked in many database servers.
In InterBase, readers do not block writers. Instead, each record in the database can exist in more than one version. For instance, when Bob and Jane read the accounts they would both get "version 1", reading 1000 dollars. When Bob then changes the account to make his withdrawal the data is not overwritten, but instead a new "version 2" will be created with 500 dollars. Jane's attempt to make her 800 dollar withdrawal will notice that there is a new version 2, and her attempt to make a withdrawal will fail.
This approach to concurrency control is called multiversion concurrency control. InterBase's implementation of multiversion concurrency control is commonly called its multi-generational architecture. InterBase was the second commercial database to use this technique; the first was DEC's Rdb/ELN.
Multiversion concurrency control also makes true snapshot transaction isolation relatively simple to implement. A transaction with snapshot isolation in InterBase shows the state of the database precisely as it was at the instant the transaction began. This is very useful for backups of an active database, long-running batch processes, and the like.
COUNTverb. Even when an index is available on the column or columns included in the
COUNT, all records must be visited in order to see if they are visible under the current transaction isolation.
Although InterBase's implementation is much more similar to the system described by Reed in his MIT dissertation than any other database that existed at the time and Starkey knew Bernstein from his previous position at the Computer Corporation of America and later at DEC, Starkey has stated that he arrived at the idea of multiversion concurrency control independently. In the same comment, Starkey says:
The inspiration for multi-generational concurrency control was a database system done by Prime that supported page level snapshots. The intention of the feature was to give a reader a consistent view of the database without blocking writers. The idea intrigued me as a very useful characteristic of a database system.
He had heard that the local workstation vendor Apollo Computer was looking for a database offering on their Unix machines, and agreed to fund development. With their encouragement he formed Groton Database Systems (named after the town, Groton, Massachusetts, where they were located) on Labor Day 1984 and started work on what would eventually be released as InterBase in 1986. Apollo suffered a corporate shakeup and decided to exit the software business, but by this time the product was making money.
With the InterBase division at Borland under new management, the company released a proprietary version of InterBase version 6 and then 6.5. Borland released several updates to the open source code before announcing that it would no longer actively develop the open source project. Firebird, an open source fork of the InterBase 6 code, however, remains in active development.
In September 2006, Borland announced the availability of InterBase 2007. Its new features include point in time recovery via journaling (which also allows recoverability without the performance penalty of synchronous writes), incremental backup, batch statement operations, new Unicode character encodings, and a new ODBC driver.
In September 2008, Embarcadero announced the availability of InterBase 2009. Its new features include full Database Encryption, selective Column-level data encryption and over-the-wire encryption offering secure TCP/IP communication via SSL.
ADS/Interbase. (Interbase Software's joint interface between the Interbase RDBMS and Convergent Solution's Application Development System, CS/ADS) (New Products: Minicomputers ) (product announcement)
Jul 01, 1991; Interbase Software, Bedford, Mass., has announced the availability of ADS/Interbase, a joint interface between the...