Abstract:
A database is stored as a plurality of database shards in a distributed database grid comprising a plurality of grid elements, each including a mid-tier database system. A first grid element receives, from an application executing in the same memory as a mid-tier database system of the first grid element, a first database transaction including at least one database operation on specific data stored in a first database shard that belongs to the first grid element. The first grid element performs and commits the first database transaction without participation of another grid element of the plurality of grid elements. The first grid element receives a second database transaction that requires access to another database shard that does not belong to the first grid element. Multiple grid elements of the plurality of grid elements perform the second database transaction and commit the second database transaction using a two-phase commit protocol.
Abstract:
Techniques are described for performing dependency locking to enable parallel execution of database server processes modifying the same object. In an embodiment, a DBMS receives a request to execute an operation on its managed database. The request may include an object identifier and a version identifier for a version of a database object, which is required for the successful execution of the operation on the database. The required version of the database object may not exist and may be generated only after the execution of another, second, operation on the database. The first database server process initiates execution of the earlier received operation on the database. The first database server process queries the first database for the version of the particular database object and determines that the version of the database object does not exist yet, in one embodiment. Based on such a determination, a dependency lock is generated for the version of the object, and the first database server process is suspended, preventing the completion of execution of the earlier received operation on the database. Another, second database server process executes another operation on the database and causes the generation of the version of the object on the database. The dependency lock is thereby released for the version of the object, and the first database server process completes the execution of the first operation on the first database.
Abstract:
A database is stored as a plurality of database shards in a distributed database grid comprising a plurality of grid elements, each including a mid-tier database system. A first grid element receives, from an application executing in the same memory as a mid-tier database system of the first grid element, a first database transaction including at least one database operation on specific data stored in a first database shard that belongs to the first grid element. The first grid element performs and commits the first database transaction without participation of another grid element of the plurality of grid elements. The first grid element receives a second database transaction that requires access to another database shard that does not belong to the first grid element. Multiple grid elements of the plurality of grid elements perform the second database transaction and commit the second database transaction using a two-phase commit protocol.