Professional Documents
Culture Documents
DS 09 OperationalTransformation PDF
DS 09 OperationalTransformation PDF
Operational Transformation
Locking
Lock object before accessing it
Conflicting operations will wait
Transactions
Lock access to multiple objects in the right order
Properties:
Distributed system with replicated data
Same user interface
Eventually consistent view on the same data
Highly-interactive (response user interface)
Real-time (user actions quickly update others views)
Collaboration (users are working together)
Operation generation
User actions generate operation requests, which are
broadcasted to other sites
Operation reception
Sites listen and receive operation requests from other
sites
Operation execution
Sites execute operation requests on their site object
Precedence Property:
For all o, p with o p, all sites execute o before p
Convergence Property:
When quiescent, data objects are identical at all sites
SV(o)
0
Generate: send SV(s) 0
0
Receive: no change
0
s executes o from t : 0
0
SV(s)[t] := SV(s)[t] + 1 0
0
0
Universitt Duisburg-Essen Matthus Wander 21
Verteilte Systeme
Operational Transformation Algorithm (4)
0
Generate: send SV(s) 0
0 1
Receive: no change 0
0 exec 0
s executes o from t : 0
0
SV(s)[t] := SV(s)[t] + 1 0
0
0
Universitt Duisburg-Essen Matthus Wander 22
Verteilte Systeme
Operational Transformation Algorithm (4)
0
Generate: send SV(s) 0
0 1
Receive: no change 0
0 exec 0
s executes o from t : 0
0
SV(s)[t] := SV(s)[t] + 1 0
0
0 wait
Universitt Duisburg-Essen Matthus Wander 23
Verteilte Systeme
Operational Transformation Algorithm (4)
0
Generate: send SV(s) 0
0 1
Receive: no change 0
0 exec 0
s executes o from t : 0
1
0
SV(s)[t] := SV(s)[t] + 1 0
0 0
0
0 wait exec
Universitt Duisburg-Essen Matthus Wander 24
Verteilte Systeme
Operational Transformation Algorithm (4)
0
Generate: send SV(s) 0
0 1
Receive: no change 0
0 exec 0
s executes o from t : 0
1 1
0
SV(s)[t] := SV(s)[t] + 1 0 1
0 0 0
0
0 wait exec exec
Universitt Duisburg-Essen Matthus Wander 25
Verteilte Systeme
Operational Transformation Algorithm (5)
0
0
0 1
Another example 0
0 exec 0
Assume an operation 0
0 0
processed here 0
0
1
0
0
exec
Universitt Duisburg-Essen Matthus Wander 26
Verteilte Systeme
Operational Transformation Algorithm (5)
0
0
0 1
Another example 0
0 exec 0
Assume an operation 0
0 0
processed here 0
0
1
0
0
exec wait
Universitt Duisburg-Essen Matthus Wander 27
Verteilte Systeme
Operational Transformation Algorithm (5)
0
0
0 1
Another example 0
0 exec 0
Assume an operation 0
1
0 0
processed here 0 0
0 1
1
0
0
exec wait trans
Universitt Duisburg-Essen
+exec
Matthus Wander 28
Verteilte Systeme
Operational Transformation Algorithm (5)
0
0
0 1
Another example 0
0 exec 0
Assume an operation 0
1 1
0 0
processed here 0 0 1
0 1 1
1
0
0
exec wait trans trans
Universitt Duisburg-Essen
+exec +exec
Matthus Wander 29
Verteilte Systeme
Operational Transformation Algorithm (6)