A method of assuring that each of a plurality of contemporaneously active database transactions comprising at least one read transaction and at most one update transaction has a consistent view of a database storing a plurality of versions of a relation. A transaction has a consistent view of a database if the data available to a transaction are not changed during its execution. An access dictionary is stored comprising an array of access blocks each defining the database location of one of the relation versions. At any given time, only one of the relation versions is defined as current. A relation dictionary comprising an array of relation blocks is stored such that as each database transaction is begun, a relation block associated with that database transaction is stored defining the access block defining the database location of the relation version then defined as current. For the update transaction, a new access block in the access dictionary is stored defining a new database location to be used for storing a new relation version. The relation block associated with the update transaction is modified to define the new access block and the new relation version is stored in the new database location. In addition the current relation version is redefined as old and the new relation version is defined as current. Access to the database by each of the plurality of database transactions is permitted only via the relation block associated with that database transaction. The method can be extended to allow contemporaneous access by noninterfering writers and an arbitrary number of readers to a database storing a plurality of relations each having a plurality of versions.
Disclosed is a concurrency control method and related system for permitting the correct execution of multiple concurrent transactions, each comprising one or more read and/or write operations, in a heterogeneous distributed database system. Read and write operations are processed at the required sites if no site cycles are detected. If any site cycles are detected in a read operation, then new sites are searched for. If any site cycle is detected for any of the sites for a write operation, then the transaction is aborted.
Exactly-once semantics in a transaction processing system are provided by queuing requests for data base transactions on a "task queue" and assigning a unique identification number to each request or "task" placed on the queue. When a requested transaction is performed, the task identification number is written into the data base when the data base is updated at the end of the transaction. To ensure that the updates are made exactly once in the event of a partial system failure or "crash", the data base is read to obtain any preexisting task identification number before any updates are made. If a match occurs between the identification number of the current task and any preexisting task identification number, the requested transaction is terminated without performing any current updates. Automatic recovery with exactly-once semantics therefore occurs as the result of resumed servicing of the task queue. A task which is initiated is not removed from the task queue until after its requested transaction is completed. When servicing of the task queue resumes during recovery from a partial system error, the data base has stored on it all of the identification numbers.
In a data management system of this invention, data elements to be registered are managed by item information records each comprising a name of the data element, an item code corresponding to an item to which the data element belongs, and a serial number. The relation between item information records is managed by a relation information record expressed by a source item ID, an object item ID, an item code associated with a source corresponding to an item, and a relation ID indicating the relation between the source and object items. The relation ID is given by a relation table. When a search instruction is input, the item information record, the relation information record, and the relation table are referred to, thus obtaining item information to be searched. The item formation record and relation information record can be registered as needed.
A print control apparatus includes a page memory and a format memory respectively for receiving and storing a plurality of page data items and a plurality of format data entries which are supplied from a host computer, and is adapted to expand the corresponding page data and format data stored in the memories into dot data to perform overlay operation to thereby output the print data to a printer. The format memory is divided into a plurality of blocks, and the in-use and unused states of each of the blocks are controlled by a control table. The format data is prefetched into blocks in a free state detected by the control table, to thereby prevent the printing operation from being interrupted in case of changing the format data.
An indexed sequential file is made accessible for random or sequential reading of records while allowing concurrent modification to the file. Each ordered group of records in the file is associated with timestamps referencing a deletion time of the group and the time that the group was last modified. During a current search in a group for a desired record, the timestamp referencing a deletion time of the group is compared to a search time established at the beginning of the search. For a sequential reading the timestamp referencing a last modification time of a group containing the desired record is compared to a respective timestamp corresponding to the reading of the preceeding record. The comparisons provide indications of whether the group to which the desired record belongs is currently the group to be searched. The most recently modified and deleted groups are stored in a cache memory. When the cache memory is full, an incoming group and respective timestamps replaces the least recent or least likely to be used group and respective timestamps. The most recent timestamps of replaced groups' timestamps are saved in local memory and are used in the comparisons for groups not currently in the cache.