Distributed Systems Principles and Paradigms

Similar documents
Synchronization. Clock Synchronization

Synchronization Part II. CS403/534 Distributed Systems Erkay Savas Sabanci University

Synchronization. Chapter 5

殷亚凤. Synchronization. Distributed Systems [6]

Synchronization Part 2. REK s adaptation of Claypool s adaptation oftanenbaum s Distributed Systems Chapter 5 and Silberschatz Chapter 17

DISTRIBUTED SYSTEMS [COMP9243] Lecture 5: Synchronisation and Coordination (Part 2) TRANSACTION EXAMPLES TRANSACTIONS.

DISTRIBUTED SYSTEMS [COMP9243] Lecture 5: Synchronisation and Coordination (Part 2) TRANSACTION EXAMPLES TRANSACTIONS.

Synchronization (contd.)

Clock Synchronization. Synchronization. Clock Synchronization Algorithms. Physical Clock Synchronization. Tanenbaum Chapter 6 plus additional papers

CSE 5306 Distributed Systems. Synchronization

Chapter 6 Synchronization

Distributed Systems Synchronization

Concurrency control CS 417. Distributed Systems CS 417

Synchronisation and Coordination (Part 2)

SYNCHRONIZATION. DISTRIBUTED SYSTEMS Principles and Paradigms. Second Edition. Chapter 6 ANDREW S. TANENBAUM MAARTEN VAN STEEN

CSE 5306 Distributed Systems

Exam 2 Review. Fall 2011

Distributed Systems Principles and Paradigms

Distributed Systems COMP 212. Revision 2 Othon Michail

Coordination 1. To do. Mutual exclusion Election algorithms Next time: Global state. q q q

CS /15/16. Paul Krzyzanowski 1. Question 1. Distributed Systems 2016 Exam 2 Review. Question 3. Question 2. Question 5.

Distributed systems. Lecture 6: distributed transactions, elections, consensus and replication. Malte Schwarzkopf

Advanced Topics in Distributed Systems. Dr. Ayman A. Abdel-Hamid. Computer Science Department Virginia Tech

Distributed Operating Systems. Distributed Synchronization

Distributed Systems Principles and Paradigms

Distributed Synchronization. EECS 591 Farnam Jahanian University of Michigan

Last Class: Naming. Today: Classical Problems in Distributed Systems. Naming. Time ordering and clock synchronization (today)

Concurrency Control in Distributed Systems. ECE 677 University of Arizona

Distributed Systems. coordination Johan Montelius ID2201. Distributed Systems ID2201

Part III Transactions

Control. CS432: Distributed Systems Spring 2017

Chapter 22. Transaction Management

Consistency in Distributed Systems

CMPSCI 677 Operating Systems Spring Lecture 14: March 9

Last Class: Clock Synchronization. Today: More Canonical Problems

Transactions. A Banking Example

Distributed Coordination 1/39

PROCESS SYNCHRONIZATION

Exam 2 Review. October 29, Paul Krzyzanowski 1

Coordination and Agreement

Distributed Systems. 12. Concurrency Control. Paul Krzyzanowski. Rutgers University. Fall 2017

Synchronization Part 1. REK s adaptation of Claypool s adaptation of Tanenbaum s Distributed Systems Chapter 5

Distributed Systems 8L for Part IB

Frequently asked questions from the previous class survey

Failure Tolerance. Distributed Systems Santa Clara University

Distributed Systems Principles and Paradigms. Chapter 01: Introduction

CS455: Introduction to Distributed Systems [Spring 2018] Dept. Of Computer Science, Colorado State University

Distributed Systems Principles and Paradigms. Chapter 01: Introduction. Contents. Distributed System: Definition.

Last time. Distributed systems Lecture 6: Elections, distributed transactions, and replication. DrRobert N. M. Watson

Distributed Systems (ICE 601) Transactions & Concurrency Control - Part1

(Pessimistic) Timestamp Ordering

Time in Distributed Systems

Transaction Management. Pearson Education Limited 1995, 2005

Clock and Time. THOAI NAM Faculty of Information Technology HCMC University of Technology

(Pessimistic) Timestamp Ordering. Rules for read and write Operations. Read Operations and Timestamps. Write Operations and Timestamps

Atomic Transac1ons. Atomic Transactions. Q1: What if network fails before deposit? Q2: What if sequence is interrupted by another sequence?

Process Synchroniztion Mutual Exclusion & Election Algorithms

Distributed Systems Exam 1 Review Paul Krzyzanowski. Rutgers University. Fall 2016

Concurrency Control. Transaction Management. Lost Update Problem. Need for Concurrency Control. Concurrency control

Synchronization. Distributed Systems IT332

Silberschatz and Galvin Chapter 18

Distributed Systems Principles and Paradigms. Chapter 08: Fault Tolerance

Chapter 8 Fault Tolerance

Distributed Systems COMP 212. Lecture 17 Othon Michail

Parallel and Distributed Systems. Programming Models. Why Parallel or Distributed Computing? What is a parallel computer?

Homework #2 Nathan Balon CIS 578 October 31, 2004

Last Time. 19: Distributed Coordination. Distributed Coordination. Recall. Event Ordering. Happens-before

CS October 2017

T ransaction Management 4/23/2018 1

CS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [DISTRIBUTED MUTUAL EXCLUSION] Frequently asked questions from the previous class survey

CS5412: TRANSACTIONS (I)

Chapter 16: Distributed Synchronization

CS455: Introduction to Distributed Systems [Spring 2018] Dept. Of Computer Science, Colorado State University

Concurrent & Distributed Systems Supervision Exercises

The transaction. Defining properties of transactions. Failures in complex systems propagate. Concurrency Control, Locking, and Recovery

CA464 Distributed Programming

Intro to Transactions

CS 347 Parallel and Distributed Data Processing

Distributed Coordination! Distr. Systems: Fundamental Characteristics!

Chapter 6 Synchronization (1)

PRIMARY-BACKUP REPLICATION

Chapter 18: Distributed

Transactions. Transaction. Execution of a user program in a DBMS.

2. Time and Global States Page 1. University of Freiburg, Germany Department of Computer Science. Distributed Systems

11/7/2018. Event Ordering. Module 18: Distributed Coordination. Distributed Mutual Exclusion (DME) Implementation of. DME: Centralized Approach

CS 347 Parallel and Distributed Data Processing

INSTITUTE OF AERONAUTICAL ENGINEERING (Autonomous) Dundigal, Hyderabad

Synchronisation in. Distributed Systems. Co-operation and Co-ordination in. Distributed Systems. Kinds of Synchronisation. Clock Synchronization

Database Principles: Fundamentals of Design, Implementation, and Management Tenth Edition. Chapter 13 Managing Transactions and Concurrency

Multi-User-Synchronization

Fault Tolerance. Goals: transparent: mask (i.e., completely recover from) all failures, or predictable: exhibit a well defined failure behavior

Chapter 7 (Cont.) Transaction Management and Concurrency Control

Database Tuning and Physical Design: Execution of Transactions

Verteilte Systeme (Distributed Systems)

Transaction Processing Concurrency control

Chapter 6 Synchronization (2)

Time Synchronization and Logical Clocks

CSE 5306 Distributed Systems. Fault Tolerance

Chapter 25: Advanced Transaction Processing

Module 8 Fault Tolerance CS655! 8-1!

Transcription:

Distributed Systems Principles and Paradigms Chapter 05 (version 16th May 2006) Maarten van Steen Vrije Universiteit Amsterdam, Faculty of Science Dept. Mathematics and Computer Science Room R4.20. Tel: (020) 444 7784 E-mail:steen@cs.vu.nl, URL: www.cs.vu.nl/ steen/ 01 Introduction 02 Communication 03 Processes 04 Naming 05 Synchronization 06 Consistency and Replication 07 Fault Tolerance 08 Security 09 Distributed Object-Based Systems 10 Distributed File Systems 11 Distributed Document-Based Systems 12 Distributed Coordination-Based Systems 00 1 /

Clock Synchronization Physical clocks Logical clocks Vector clocks 05 1 Distributed Algorithms/5.1 Clock Synchronization

Physical Clocks (1/3) Problem: Sometimes we simply need the exact time, not just an ordering. Solution: Universal Coordinated Time (UTC): Based on the number of transitions per second of the cesium 133 atom (pretty accurate). At present, the real time is taken as the average of some 50 cesium-clocks around the world. Introduces a leap second from time to time to compensate that days are getting longer. UTC is broadcast through short wave radio and satellite. Satellites can give an accuracy of about 0 5 ms. Question: Does this solve all our problems? Don t we now have some global timing mechanism? 05 2 Distributed Algorithms/5.1 Clock Synchronization

Physical Clocks (2/3) Problem: Suppose we have a distributed system with a UTC-receiver somewhere in it we still have to distribute its time to each machine. Basic principle: Every machine has a timer that generates an interrupt H times per second. There is a clock in machine p that ticks on each timer interrupt. Denote the value of that clock by C p t, where t is UTC time. Ideally, we have that for each machine p, C p t t, or, in other words, dc dt 1 05 3 Distributed Algorithms/5.1 Clock Synchronization

Physical Clocks (3/3) Clock time, C Fast clock dc dt > 1 Perfect clock Slow clock dc dt = 1 dc dt < 1 UTC, t In practice: 1 ρ dc dt 1 ρ. Goal: Never let two clocks in any system differ by more than δ time units synchronize at least every δ 2ρ seconds. 05 4 Distributed Algorithms/5.1 Clock Synchronization

Clock Synchronization Principles Principle I: Every machine asks a time server for the accurate time at least once every δ 2ρ seconds. Okay, but you need an accurate measure of round trip delay, including interrupt handling and processing incoming messages. Principle II: Let the time server scan all machines periodically, calculate an average, and inform each machine how it should adjust its time relative to its present time. Okay, you ll probably get every machine in sync. Note: you don t even need to propagate UTC time (why not?) Fundamental problem: You ll have to take into account that setting the time back is never allowed smooth adjustments. 05 5 Distributed Algorithms/5.1 Clock Synchronization

The Happened-Before Relationship Problem: We first need to introduce a notion of ordering before we can order anything. The happened-before relation on the set of events in a distributed system is the smallest relation satisfying: If a and b are two events in the same process, and a comes before b, then a b. If a is the sending of a message, and b is the receipt of that message, then a b. If a b and b c, then a c. Note: this introduces a partial ordering of events in a system with concurrently operating processes. 05 6 Distributed Algorithms/5.2 Logical Clocks

Logical Clocks (1/2) Problem: How do we maintain a global view on the system s behavior that is consistent with the happenedbefore relation? Solution: attach a timestamp C e to each event e, satisfying the following properties: P1: If a and b are two events in the same process, and a b, then we demand that C a C b. P2: If a corresponds to sending a message m, and b to the receipt of that message, then also C a C b. Problem: How to attach a timestamp to an event when there s no global clock maintain a consistent set of logical clocks, one per process. 05 7 Distributed Algorithms/5.2 Logical Clocks

Logical Clocks (2/2) Each process P i maintains a local counter C i and adjusts this counter according to the following rules: 1: For any two successive events that take place within P i, C i is incremented by 1. 2: Each time a message m is sent by process P i, the message receives a timestamp T m C i. 3: Whenever a message m is received by a process P j, P j adjusts its local counter C j : C j max C j 1 T m 1 Property P1 is satisfied by (1); Property P2 by (2) and (3). 05 8 Distributed Algorithms/5.2 Logical Clocks

Logical Clocks Example 0 6 12 18 24 30 36 42 48 54 60 0 6 12 18 24 30 36 42 48 70 76 0 8 16 24 32 40 48 56 64 72 80 0 8 16 24 32 40 48 61 69 72 80 0 10 20 30 40 50 60 70 80 90 100 0 10 20 30 40 50 60 70 80 90 100 A A B B C C D D (a) (b) 05 9 Distributed Algorithms/5.2 Logical Clocks

Total Ordering with Logical Clocks Problem: it can still occur that two events happen at the same time. Avoid this by attaching a process number to an event: P i timestamps event e with C i e i Then: C i a i before C j b j if and only if: 1: C i 2: C i a C j a C j b ; or b and i j 05 10 Distributed Algorithms/5.2 Logical Clocks

Example: Totally-Ordered Multicast (1/2) Problem: We sometimes need to guarantee that concurrent updates on a replicated database are seen in the same order everywhere: Process P 1 adds $100 to an account (initial value: $1000) Process P 2 increments account by 1% There are two replicas Update 1 Update 2 Update 1 is performed before update 2 Replicated database Update 2 is performed before update 1 Outcome: in absence of proper synchronization, replica #1 will end up with $1111, while replica #2 ends up with $1110. 05 11 Distributed Algorithms/5.2 Logical Clocks

Example: Totally-Ordered Multicast (2/2) Process P i sends timestamped message msg i to all others. The message itself is put in a local queue queue i. Any incoming message at P j is queued in queue j, according to its timestamp. P j passes a message msg i to its application if: (1) msg i is at the head of queue j (2) for each process P k, there is a message msg k in queue j with a larger timestamp. Note: We are assuming that communication is reliable and FIFO ordered. 05 12 Distributed Algorithms/5.2 Logical Clocks

Extension to Multicasting: Vector Timestamps (1/2) Observation: Lamport timestamps do not guarantee that if C a C b that a indeed happened before b. We need vector timestamps for that. Each process P i has an array V i! 1 " n#, where V i! j# denotes the number of events that process P i knows have taken place at process P j. When P i sends a message m, it adds 1 to V i! i#, and sends V i along with m as vector timestamp vt m. Result: upon arrival, each other process knows P i s timestamp. k mean in terms of mes- Question: What does V i! j#$ sages sent and received? 05 13 Distributed Algorithms/5.2 Logical Clocks

Extension to Multicasting: Vector Timestamps (2/2) When a process P j receives a message m from P i with vector timestamp vt m, it (1) updates each V j! k# to max V j! k#% vt m! k#&, and (2) increments V j! j# by 1. NOTE: Book is wrong! To support causal delivery of messages, assume you increment your own component only when sending a message. Then, P j postpones delivery of m until: vt m! i#$ V j! i#' 1. vt m! k#( V j! k# for k ) i. Example: Take V 3! 0 2 2#, vt m *! 1 3 0# from P 1. What information does P 3 have, and what will it do when receiving m (from P 1 )? 05 14 Distributed Algorithms/5.2 Logical Clocks

Global State (1/3) Basic Idea: Sometimes you want to collect the current state of a distributed computation, called a distributed snapshot. It consists of all local states and messages in transit. Important: A distributed snapshot should reflect a consistent state: Consistent cut Inconsistent cut P1 + + Time P1 Time P2 m1 m3 P2 m1 m3 P3 m2 P3 m2 Sender of m2 cannot be identified with this cut (a) (b) 05 15 Distributed Algorithms/5.3 Global State

Global State (2/3) Note: any process P can initiate taking a distributed snapshot P starts by recording its own local state P subsequently sends a marker along each of its outgoing channels When Q receives a marker through channel C, its action depends on whether it had already recorded its local state: Not yet recorded: it records its local state, and sends the marker along each of its outgoing channels Already recorded: the marker on C indicates that the channel s state should be recorded: all messages received before this marker and the time Q recorded its own state. Q is finished when it has received a marker along each of its incoming channels 05 16 Distributed Algorithms/5.3 Global State

Global State (3/3) 05 17 Distributed Algorithms/5.3 Global State

Election Algorithms Principle: An algorithm requires that some process acts as a coordinator. The question is how to select this special process dynamically. Note: In many systems the coordinator is chosen by hand (e.g. file servers). This leads to centralized solutions single point of failure. Question: If a coordinator is chosen dynamically, to what extent can we speak about a centralized or distributed solution? Question: Is a fully distributed solution, i.e. one without a coordinator, always more robust than any centralized/coordinated solution? 05 18 Distributed Algorithms/5.4 Election Algorithms

Election by Bullying (1/2) Principle: Each process has an associated priority (weight). The process with the highest priority should always be elected as the coordinator. Issue: How do we find the heaviest process? Any process can just start an election by sending an election message to all other processes (assuming you don t know the weights of the others). If a process P heavy receives an election message from a lighter process P light, it sends a take-over message to P light. P light is out of the race. If a process doesn t get a take-over message back, it wins, and sends a victory message to all other processes. 05 19 Distributed Algorithms/5.4 Election Algorithms

- / 0 / Election by Bullying (2/2), 4 2 Election 0 1 Election Election. 5 03 / 6, 4 2-0 1 OK 2O K. 5 03 / 6, 4 2-0 1 Election. 5 Election 3 Election 6 7 7 Previous coordinator has crashed (a) (b) (c) 7 12 1. 5 12 1. 5, 4 2O K 6 4 Coordinator / 6-0 7 03-0 7 03 (d) (e) Question: We re assuming something very important here what? 05 20 Distributed Algorithms/5.4 Election Algorithms

Election in a Ring Principle: Process priority is obtained by organizing processes into a (logical) ring. Process with the highest priority should be elected as coordinator. Any process can start an election by sending an election message to its successor. If a successor is down, the message is passed on to the next successor. If a message is passed on, the sender adds itself to the list. When it gets back to the initiator, everyone had a chance to make its presence known. The initiator sends a coordinator message around the ring containing a list of all living processes. The one with the highest priority is elected as coordinator. Question: Does it matter if two processes initiate an election? Question: What happens if a process crashes during the election? 05 21 Distributed Algorithms/5.4 Election Algorithms

Mutual Exclusion Problem: A number of processes in a distributed system want exclusive access to some resource. Basic solutions: Via a centralized server. Completely distributed, with no topology imposed. Completely distributed, making use of a (logical) ring. Centralized: Really simple: 0 1 2 0 1 2 0 1 Request OK Request Release No reply 3 Queue is 3 2 3 Coordinator empty OK 2 (a) (b) (c) 05 22 Distributed Algorithms/5.5 Mutual Exclusion

Mutual Exclusion: Ricart & Agrawala Principle: The same as Lamport except that acknowledgments aren t sent. Instead, replies (i.e. grants) are sent only when: The receiving process has no interest in the shared resource; or The receiving process is waiting for the resource, but has lower priority (known through comparison of timestamps). In all other cases, reply is deferred, implying some more local administration. 8 Enters critical region 0 0 0 8 12 8 OK 1 2 1 2 1 2 12 OK 12 (a) (b) (c) OK OK Enters critical region 05 23 Distributed Algorithms/5.5 Mutual Exclusion

Mutual Exclusion: Token Ring Algorithm Essence: Organize processes in a logical ring, and let a token be passed between them. The one that holds the token is allowed to enter the critical region (if it wants to) 1 2 3 0 2 4 9 7 1 6 5 8 3 0 4 7 6 5 (a) (b) Comparison: Algorithm # msgs Delay Problems Centralized 3 2 Coordinator crash Distributed 2 (n 1) 2 (n 1) Crash of any process Token ring 1 to 0 to n 1 Lost token, process crash 05 24 Distributed Algorithms/5.5 Mutual Exclusion

Distributed Transactions The transaction model Classification of transactions Concurrency control 05 25 Distributed Algorithms/5.6 Distributed Transactions

w w Transactions 3547698;: <>=@?A:$BC?EDF<G8IHJ:LKNMPORQTSUORQWVYX%Q[Z]\^M&Z`_aX&bdcC\fehg =i4j?ak(klx%q[z]\^m&z`_ax&bdcc\mv'n@oporqhsfv'tjzuxvzrehg =x8y<>4zklx%q[z]\^m{z`_axhbdcc\mv n}oporq~cv'tjzuxvzrehg \^Oa k ZuXvZ ƒi Ĥ k 8 Šz8 4Œk(KNtjZuX ZRe%g 8;ŠŽw =FHJ: 6EKP\^Oa k ZuX ZRe <G 4Œ:?A3HJ=}< <>=@?A:$BC?EDF<G8IHJ:LK XhQ Z]\`M&Z`_aXhb cc\fe%g 4Œ B 4 =x8y<>4zklx%q[z]\^m{z`_axhbdcc\mv n}oporq~cv \^Oa k ZuXvZRehg 4Œ: k <G=@?A:$BC? D <G8 Ĥ :LK X%Q[Z]\^M{Z`_aXhb cy\re%g 4Œ: k 8 Š7g Essential: All šˆ œÿž and š operations are executed, i.e. their effects are made permanent at the execution of ž š œ iœª > «. Observation: Transactions form an atomic operation. 05 26 Distributed Algorithms/5.6 Distributed Transactions

ACID Properties Model: A transaction is a collection of operations on the state of an object (database, object composition, etc.) that satisfies the following properties: Atomicity: All operations either succeed, or all of them fail. When the transaction fails, the state of the object will remain unaffected by the transaction. Consistency: A transaction establishes a valid state transition. This does not exclude the possibility of invalid, intermediate states during the transaction s execution. Isolation: Concurrent transactions do not interfere with each other. It appears to each transaction T that other transactions occur either before T, or after T, but never both. Durability: After the execution of a transaction, its effects are made permanent: changes to the state survive failures. 05 27 Distributed Algorithms/5.6 Distributed Transactions

Transaction Classification Flat transactions: The most familiar one: a sequence of operations that satisfies the ACID properties. Nested transactions: A hierarchy of transactions that allows (1) concurrent processing of subtransactions, and (2) recovery per subtransaction. Distributed transactions: A (flat) transaction that is executed on distributed data often implemented as a two-level nested transaction with one subtransaction per node. Nested transaction Distributed transaction Subtransaction Subtransaction Subtransaction Subtransaction Airline database Hotel database Two different (independent) databases (a) Distributed database Two physically separated parts of the same database (b) 05 28 Distributed Algorithms/5.6 Distributed Transactions

Flat Transactions: Limitations Problem: Flat transactions constitute a very simple and clean model for dealing with a sequence of operations that satisfies the ACID properties. However, after a series of successful operations all changes should be undone in the case of failure. Sometimes unnecessary: Trip planning. Plan a intercontinental trip where all flights have been reserved, but filling in the last part requires some experimentation. The first reservations are known to be in order, but cannot yet be committed. Bulk updates. When updating bank accounts for monthly interests we have to lock the entire database (every account should be updated exactly once: it is a transaction over the entire database.) Better: each update is immediately committed. However, in the case of failure, we ll have to be able to continue where we left off. 05 29 Distributed Algorithms/5.6 Distributed Transactions

Implementing Transactions (1/2) Solution 1: Use a private workspace, by which the client gets its own copy of the (part of the) database. When things go wrong delete copy, otherwise commit the changes to the original. Optimization: don t get everything: Index 0 1 2 Original index Private workspace 0 0 1 1 2 2 3 0 1 2 3 1 2 0 1 2 0 1 2 0 3 0 3 Free blocks (a) (b) (c) 05 30 Distributed Algorithms/5.6 Distributed Transactions

Implementing Transactions (2/2) Solution 2: Use a writeahead log in which changes are recorded allowing you to roll back when things go wrong: x = 0; y = 0; Log Log Log BEGIN TRANSACTION; x = x + 1; [x = 0/1] [x = 0/1] [x = 0/1] y = y + 2; [y = 0/2] [y = 0/2] x = y * y; [x = 1/4] END TRANSACTION; Question: Where do distributed transactions fit in? 05 31 Distributed Algorithms/5.6 Distributed Transactions

Transactions: Concurrency Control (1/2) Problem: Increase efficiency by allowing several transactions to execute at the same time. Constraint: Effect should be the same as if the transactions were executed in some serial order. Transactions READ/WRITE Transaction manager BEGIN_TRANSACTION END_TRANSACTION Scheduler LOCK/RELEASE or Timestamp operations Data manager Execute read/write Question: Does it actually make sense to allow concurrent transactions on a single server? 05 32 Distributed Algorithms/5.6 Distributed Transactions

Transactions: Concurrency Control (2/2) Distributed transactions: Transaction manager Scheduler Scheduler Scheduler Data manager Data manager Data manager Machine A Machine B Machine C Question: What about a distributed transaction manager? 05 33 Distributed Algorithms/5.6 Distributed Transactions

Serializability (1/2) Consider a collection E of transactions T 1 U ^ U ± T n. Goal is to conduct a serializable execution of E: Transactions in E are possibly concurrently executed according to some schedule S. Schedule S is equivalent to some totally ordered execution of T 1 ^ U U ± T n. BEGIN TRANS BEGIN TRANS BEGIN TRANS x = 0; x = 0; x = 0; x = x + 1; x = x + 2; x = x + 3; END TRANS END TRANS END TRANS Schedule 1 Schedule 2 Schedule 3 x = 0 x = 0 x = 0 x = x + 1 x = 0 x = 0 x = 0 x = x + 1 x = x + 1 x = x + 2 x = x + 2 x = 0 x = 0 x = 0 x = x + 2 x = x + 3 x = x + 3 x = x + 3 OK OK Illegal 05 34 Distributed Algorithms/5.6 Distributed Transactions

Serializability (2/2) Note: Because we re not concerned with the computations of each transaction, a transaction can be modeled as a log of read and write operations. Two operations ²* š ³ T i x and ²* š ³ T j x on the same data item x, and from a set of logs may conflict at a data manager: read-write conflict (rw): One is a read operation while the other is a write operation on x. write-write conflict (ww): Both are write operations on x. 05 35 Distributed Algorithms/5.6 Distributed Transactions

Basic Scheduling Theorem Let T T 1 ^ U U ± T n be a set of transactions and let E be an execution of these transactions modeled by logs L 1 U ^ U U L n. E is serializable if there exists a total ordering of T such that for each pair of conflicting operations O i and O j from distinct transactions T i and T j (respectively), O i precedes O j in any log L 1 U U U ± L n, if and only if T i precedes T j in the total ordering. Note: The important thing is that we process conflicting reads and writes in certain relative orders. This is what concurrency control is all about. Note: It turns out that read-write and write-write conflicts can be synchronized independently, as long as we stick to a total ordering of transactions that is consistent with both types of conflicts. 05 36 Distributed Algorithms/5.6 Distributed Transactions

Synchronization Techniques Two-phase locking: Before reading or writing a data item, a lock must be obtained. After a lock is given up, the transaction is not allowed to acquire any more locks. Timestamp ordering: Operations in a transaction are timestamped, and data managers are forced to handle operations in timestamp order. Optimistic control: Don t prevent things from going wrong, but correct the situation if conflicts actually did happen. Basic assumption: you can pull it off in most cases. 05 37 Distributed Algorithms/5.6 Distributed Transactions

Two-phase Locking (1/3) Clients do only šj iœ ž and š operations within transactions. Locks are granted and released only by scheduler. Locking policy is to avoid conflicts between operations 05 38 Distributed Algorithms/5.6 Distributed Transactions

Two-phase Locking (2/3) Rule 1: When client submits ²ˆ š*³ T iµi, scheduler tests whether it conflicts with an operation ²* š ³ T jµi from some other client. If no conflict then grant F º¹»³ T iµi, otherwise delay execution of ²ˆ š*³ T iµi. Conflicting operations are executed in the same order as that locks are granted. Rule 2: If F º¹»³ T iµi has been granted, do not release the lock until ²* š ³ T iµi has been executed by data manager. Guarantees order. Rule 3: If šj i œ» ³ T iµi has taken place, no more locks for T i may be granted. Combined with rule 1, guarantees that all pairs of conflicting operations of two transactions are done in the same order. 05 39 Distributed Algorithms/5.6 Distributed Transactions

Two-phase Locking (3/3) Lock point Number of locks Growing phase Shrinking phase Time Centralized 2PL: A single site handles all locks Primary 2PL: Each data item is assigned a primary site to handle its locks. Data is not necessarily replicated Distributed 2PL: Assumes data can be replicated. Each primary is responsible for handling locks for its data, which may reside at remote data managers. 05 40 Distributed Algorithms/5.6 Distributed Transactions

Two-phase Locking: Problems Problem 1: System can come into a deadlock. How? Practical solution: put a timeout on locks and abort transaction on expiration. Problem 2: When should the scheduler actually release a lock: (1) when operation has been executed (2) when it knows that no more locks will be requested No good way of testing condition (2) unless transaction has been committed or aborted. Moreover: Assume the following execution sequence takes place: šˆ i œ» ³ T iµi» ¼ ¹½³ T jµi ª œ ¾* š ³ T i. Consequence: scheduler will have to abort T j as well (cascaded aborts). Solution: Release all locks only at commit/abort time (strict two-phase locking). 05 41 Distributed Algorithms/5.6 Distributed Transactions

Timestamp Ordering (1/2) Basic idea: Transaction manager assigns a unique timestamp ½ ³ T i to each transaction T i. Each operation ²ˆ š*³ T iµi submitted by the transaction manager to the scheduler is timestamped ½ ³À ²ˆ š*³ T iµi ` ½ ³ T i. Scheduler adheres to following rule: If ²* š ³ T iµi and ²ˆ š*³ T jµi conflict then data manager processes ²* š ³ T iµi before ²* š*³ T jµi iff ½ ³À ²ˆ š*³ T iµi ^ Á ½ ³Â ²* š ³ T jµi ^ Note: rather aggressive for if a single ²ˆ š*³ T iµi is rejected, T i will have to be aborted. 05 42 Distributed Algorithms/5.6 Distributed Transactions

Timestamp Ordering (2/2) Suppose: ½ ³À ²ˆ š*³ T iµi ^ ½ ³À ²ˆ š*³ T jµi `, but that ²ˆ š*³ T jµi has already been processed by the data manager. Then: the scheduler should reject ²ˆ š*³ T iµi, as it came in too late. Suppose: ½ ³À ²ˆ š*³ T iµi ` ˆ ½ ³À ²ˆ š*³ T jµi `, and that ²ˆ š*³ T iµi has already been processed by the data manager. Then: the scheduler would submit ²* š*³ T jµi to data manager. Refinement: hold back ²ˆ š*³ T jµi until T i commits or aborts. Question: Why would we do this? 05 43 Distributed Algorithms/5.6 Distributed Transactions

Optimistic Concurrency Control Observation: (1) Maintaining locks costs a lot; (2) in practice not many conflicts. Alternative: Go ahead immediately with all operations, use tentative writes everywhere (shadow copies), and solve conflicts later on. validate ef- Phases: allow operations tentatively fects make updates permanent. Validation: Check two basic rules for each pair of active transactions T i and T j : Rule 1: T i must not read or write data that has been written by T j. Rule 2: T j must not read or write data that has been written by T i. If one of the rules doesn t hold: abort transaction. 05 44 Distributed Algorithms/5.6 Distributed Transactions