Patent ID: 7873605

Claim:
A method for removing database changes made by one or more first transactions to a database managed by a database system that executes transactions atomically without rolling back said one or more first transactions, comprising: identifying one or more second transactions, each of which logically depends on at least one first transaction of the one or more first transactions, wherein said identifying one or more second transactions comprises identifying at least one second transaction that has a read-after-write dependency that is based on said at least one second transaction (1) reading but not changing a data item changed by said at least one first transaction and (2) changing a different data item different than said data item changed by said at least one first transaction; identifying data manipulations made by the one or more first transactions and the one or more second transactions as data changes stored in the database system to be removed; establishing the one or more first transactions and the one or more second transactions as a causal set of transactions; and generating, based on the causal set of transactions, one or more compensating transactions to selectively remove the data changes stored in the database system without rolling back any of said causal set of transactions, wherein at least one of the one or more compensating transactions is a new transaction in the database system that executes a set of one or more instructions that compensate the data changes made by the causal set of transactions; and wherein the one or more first transactions, the one or more second transactions, and the one or more compensating transactions are atomically executed transactions; wherein the method is performed by one or more computing devices.