Supports both 2-Phased & Grayed Phased Commit
ObjectDatabase++ supports both the traditional transaction methodology of
2-phases commit, as well as deadlock prevention through a global locking order
– a grayed phase commit. When design your database tables, you can nominate
which order and which indexes are to be used to create a global order of
locking.
Transaction that execute within the same order as the global locking order are
given twenty times the length of time to complete its operation and transaction
that go against the grain are let to be aborted sooner. Used correctly,
transactions are latterly guaranteed to complete first time and not run into a
continuing sequence of both transactions aborting.
The standard 2-phase transaction uses the
ReadObject method to gain object locks before re-executing the
transaction with ReadObject,
RewriteObject and DeleteObject.
The in built global locking order is another feature of ObjectDatabase++ that
allows correctly drafted transactions to be deadlock free when following the
order. This allows the transaction to proceed while gaining object locks on the
fly and hence the name grayed-phase commit.
|