{small lecturenumber - heblocknumber :} Transactionsaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Transactionsaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Exampleaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Example transactionaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Committing and Abortingaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} ACIDaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Atomicityaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Consistencyaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Isolationaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Isolationaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Durabilityaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Common problems in transaction processingaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Lost updatesaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Lost updatesaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Inconsistent retrievalsaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Inconsistent retrievalsaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Serial equivalenceaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Conflicting operationsaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Conflicting operationsaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Lockingaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Locking exampleaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Lockingaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Lockingaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Locksaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Deadlocksaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Deadlock exampleaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Preventing deadlockaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Detecting deadlockaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Distributed Transactionsaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Nested transactionsaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Nested transactionsaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Committing in nested transactionsaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Flat and Nested Distributed transactionsaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Coordinatorsaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Two-phase commitaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Two-phase commitaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Two-phase commitaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Two-phase commitaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Two-phase commitaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Two-phase commitaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Two-phase commitaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Nested two-phase commitaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Failure in Two-phase commitaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Locking and Deadlockaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Distributed Deadlockaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Edge chasingaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Edge chasingaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Edge Chasing Exampleaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Edge Chasing Exampleaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Edge Chasing Exampleaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Edge Chasing Exampleaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Breaking deadlockaddtocounter {blocknumber}{1}{small lecturenumber - heblocknumber :} Summaryaddtocounter {blocknumber}{1}Distributed Software DevelopmentTransactionsChris BrooksDepartment of Computer ScienceUniversity of San FranciscoDepartment of Computer Science — University of San Francisco – p.1/??17-0: TransactionsFeatures of transactionsSerial equivalenceLocking and deadlockDistributed transactionsTwo-phase commitDistributed deadlockDepartment of Computer Science — University of San Francisco – p.2/??17-1: TransactionsA transaction is a sequence of operations between a clientand a server.Goal: make sure that:Objects remain in a consistent stateSystem is tolerant to crash failuresTransaction effects are independent of othertransactionsTransactions are either completed or not started.Department of Computer Science — University of San Francisco – p.3/??17-2: ExampleAs an example, we’ll look at an interface to a bankingsystem.We’d like to be able to do the following operations onaccounts:deposit(amt)withdraw(amt)getBalance()setBalance(amt)We’d also like the following operations to be available forbranches:CreateAccount(name)lookUpAccount(name)totalAccounts()Department of Computer Science — University of San Francisco – p.4/??17-3: Example transactionA transaction may involve several operations, each ofwhich changes the state of a different object:Transaction T:1. alexAcct.withdraw(100)2. nancyAcct.deposit(100)3. nancyAcct.widthdraw(200)4. brooksAcct.deposit(200)We can’t stop in the middle, lose any of the operations,or do them in the wrong order.Department of Computer Science — University of San Francisco – p.5/??17-4: Committing and AbortingA transaction may be either committed or aborted.When all operations are complete and the transaction isready to be accepted, it is committed.Written to permanent storageAfter this point, it cannot be undoneIf the server decided that a transaction cannot beprocessed (undone by the client, or it will leave the systemin an inconsistent state), it is aborted.All operations are
View Full Document