replication › cignat › files › replication › replication_c4.pdf · state-based replication...

54
Claudia Ignat, [email protected] Réplication et cohérence de données 141 Agenda Optimistic replication § Operational transformation: algorithms § Conflict-free Replicated Data Types

Upload: others

Post on 23-Jun-2020

26 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 141

Agenda

•  Optimistic replication §  Operational transformation: algorithms §  Conflict-free Replicated Data Types

Page 2: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 142

SOCT2 algorithm(*) General control algorithm

… … … HB op1 op2 op3 opi opj opn

remote operation

the operation precedes the remote operation

the operation is concurrent with the remote operation a) The initial history buffer

… Equivalent HB …

operations preceding the remote operation

operations concurrent with the remote operation

remote operation

forward transposition

opn+1

b) Principle of integration (*) M. Suleiman, M. Cart, and J. Ferrié. Serialization of concurrent operations in a distributed collaborative environment. In Proceedings of the International ACM SIGGROUP Conference on Supporting Group Work : (GROUP'97), pages 435.445, Phoenix, Arizona, United States, November 1997.

Page 3: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 143

GOT algorithm(*)

•  Does not need to satisfy TP1 and TP2

•  Requires a global serialisation order §  Sum of state vector components §  If equality, then priority on sites

•  Requires undo/redo mechanism

•  Undo/redo very costly

(*) Chengzheng Sun, Xiaohua Jia, Yanchun Zhang, Yun Yang, and David Chen. Achieving convergence, causality preservation, and intention preservation in real-time cooperative editing systems. ACM Transactions on Computer-Human Interaction, 5(1):63−108, March 1998.

Page 4: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 144

SOCT4 algorithm(*)

•  Does not use undo/redo mechanism •  Eliminates TP2, but requires TP1 •  Does not need state vectors •  Global order of operations according to timestamps

generated by a sequencer •  Local operations executed immediately •  Assigns a timestamp to the operation and transmits it to the

other sites •  Defers broadcast until all preceding operations were

executed •  Transformations performed by each site (*) Nicolas Vidot, Michèle Cart, Jean Ferrié, and Maher Suleiman. Copies convergence in a distributed real-time collaborative environment. In Proceedings of the ACM Conference on Computer-Supported Cooperative Work (CSCW’00), page 171−180, Philadelphia, Pennsylvania,USA, December 2000.

Page 5: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 145

SOCT4 algorithm

Page 6: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 146

So6- variation of SOCT4 algorithm(*) getOp(ticket) retrieves operation identified by timestamp ticket

send(op,ticket) sends local operation with timestamp ticket. If ticket already exists, returns false

(*) Pascal Molli, Gérald Oster, Hala Skaf-Molli and Abdessamad Imine. Using the Transformational Approach to Build a Safe and Generic Data Synchronizer. In Proceedings of the ACM SIGGROUP Conference on Supporting Group Work - GROUP 2003, pages 212-220, Sanibel Island, Florida, USA, nov 2003

opr) opr=T(opr, opl)

opr

Page 7: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 147

So6 algorithm Site1, Ns=0 Site2, Ns=0 op1 op3 op2 op4 s1=synchronize

s2=synchronize s3=synchronize

•  At s1 §  sync([op1,op2],0) §  Send op1, op2 §  Ns=2

•  At s2 §  sync([op3,op4],0) §  op’1=T(op1,op3) §  op’3=T(op3,op1) §  op’’1=T(op’1,op4) §  op’4=T(op4,op’1) §  op’2=T(op2,op’3) §  op’’3=T(op’3,op2) §  op’’2=T(op’2,op’4) §  op’’4=T(op’4,op’2) §  op’’1, op’’2 are executed §  op’’3, op’’4 are sent §  Ns=4

•  At s3 §  sync([],2) §  op’’3 and op’’4 are executed §  Ns=4

Page 8: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 148

SO6 algorithm Site1, Ns=0 Site2, Ns=0 op1 op3 op2 op4 s1=synchronize

s2=synchronize s3=synchronize

op1 op2

op’’3=T(T(op3,op1),op2)

op’’4=T(T(op4,op’1),op’2)

op3

op4

op’’1=T(T(op1,op3),op4)

op’’2=T(T(op2,op’3),op’4)

Site 1 Site 2

Page 9: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 149

SO6 algorithm

obj1

•  create(obj)

•  change_color(obj,color)

•  del(obj)

•  T(create(obj),_):- return create(obj)

•  T(change_color(obj1,c), del(obj2)):- if (obj1==obj2) then return id() else return change_color(obj1,c)

•  T(del(obj1), del(obj2)):- if (obj1==obj2) then return id() else return del(obj1)

•  T(del(obj1),change_color(obj2,c)):-

return del(obj1)

•  T(change_color(obj1,c1),change(obj2,c2)):-

if (obj1==obj2) then

if(c1>c2) then return change_color(obj1,c1)

else return id()

else return change_color(obj1,c1)

•  T(id(),_):- return id()

•  T(op,id()):- return op

obj2

Page 10: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

obj1 obj2

Site 1

op1=del(obj1)

Site 2

op2=change_color(obj2,red)

obj1 obj2

obj2

obj2

op3=change_color(obj1,green)

obj1 obj2

op4=change_color(obj2,blue)

obj1 obj2

red>blue

§  op’1=T(op1,op3)=del(obj1) §  op’3=T(op3,op1)=id() §  op’’1=T(op’1,op4)=del(obj1) §  op’4=T(op4,op’1)=change_color(obj2,blue) §  op’2=T(op2,op’3)=change_color(obj2,red) §  op’’3=T(op’3,op2)=id() §  op’’2=T(op’2,op’4)=change_color(obj2,red) §  op’’4=T(op’4,op’2)=id()

op’’3=id()

obj2

op’’4=id()

obj2

op’’1=del(obj1)

obj2

op’’2=change_color(obj2,red)

obj2

Page 11: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 151

Jupiter algorithm(*)

•  Used in Google Drive

•  Requires a central server

•  Eliminates TP2, but requires TP1

•  Does not need state vectors

•  Transformations done on the server + client side

(*) David A. Nichols, Pavel Curtis, Michael Dixon, and John Lamping. High-latency, low-bandwidth windowing in the jupiter collaboration system. In Proceedings of the 8th annual ACM symposium on User interface and software technology (UIST ’95), page 111−120, Pittsburgh, Pennsylvania, USA, 1995.

Page 12: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 152

Jupiter algorithm

•  xform(c,s)={c’,s’}

•  xform(del x, del y)=

{del x-1, del y} if x>y

{del x, del y-1} if x<y

{no-op, no-op} if x=y

Page 13: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 153

Jupiter algorithm

Page 14: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 154

Jupiter algorithm

Page 15: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 155

Jupiter algorithm 2 sites

Page 16: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Site 1

op1

Site 2

op’3=T(T(op3,op1),op2))

op’4=T(op4,T(op2,T(op3,op1))

op4

op3

op’1=T(op1,op3)

(0,0)

(1,0)

(2,0)

op2

outgoing=[op1]

outgoing=[op1,op2]

Exec. op1

(0,0)

Exec. op2

outgoing=[T(op1,op3),T(op2,T(op3,op1))] (2,1)

Exec. op’3

(1,0)

(1,1)

outgoing=[T(op2,T(op3,op1))]

outgoing=[T(T(op2,T(op3,op1)),op4)] (2,2)

Exec. op’4

outgoing=[op3]

Exec. op3

outgoing=[T(op3,op1)]

Exec. op’1

outgoing=[T(op3,op1),op4] (2,1)

Exec. op4

op’2=T(T(op2,T(op3,op1)),op4) outgoing=[T(T(op3,op1),op2), T(op4,T(op2,T(op3,op1)))] (2,2)

Exec. op’2

Page 17: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 157

Jupiter algorithm – generalisation n Clients

client 1 client 2

client 3

msg msg

msg

apply msg.op locally;

for (c in client list) {

if (c != client)

send(c, msg);

}

apply msg.op locally;

Algorithm changes at server side

Page 18: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 158

Jupiter algorithm

•  Requires a server that performs transformations

•  Not suitable for P2P environments

•  False tie scenario gives different results according to integration order

Site 1“abc”

“axbc”

Site 2“abc”

“ac”

Site 3“abc”

“abyc”

“axyc”? “ayxc”?

op’1=Insert(2,x) ‏ op’3=Insert(2,y) ‏

op1=Insert(2,x) ‏ op2=Delete (2,b) ‏ op3=Insert(3,y) ‏

Page 19: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 159

Conflict-free Replicated Data Types (CRDT) (*)

•  Design operations to be commutative by construction

•  Abstract data types •  Designed to be replicated at multiple sites •  Any replica can be modified without

coordination •  State convergence is guaranteed

•  State-based and operation-based approaches (*) M. Shapiro, N. Preguica, C. Baquero, M. Zawirski. A comprehensive study of Convergent and Commutative Replicated Data Types, Research Report, RR-7506, INRIA, 2011

Page 20: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 160

Conflict-free Replicated Data Types State-based Replication

•  Replicated object: a tuple (S, s0, q, u, m) §  S: state domain §  Replica at process pi has state si ∈ S §  s0: initial state

•  Each replica can execute one of following commands §  q: query object’s state §  u: update object’s state §  m: merge state from a remote replica

s1

s2

s3

s1.u(a) s

s2.u(b) s1

s2.m(s1) s2

s3.m(s2)

s1.m(s2)

s2

Page 21: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 161

Conflict-free Replicated Data Types State-based Replication

•  Algorithm §  Periodically, replica at pi sends its current state to pj §  Replica pj merges received state into its local state by executing m

•  After receiving all updates (irrespective of order), each replica will have same state

s1

s2

s3

s1.u(a) s

s2.u(b) s1

s2.m(s1) s2

s3.m(s2)

s1.m(s2)

s2

Page 22: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 162

Conflict-free Replicated Data Types Semi-lattice

•  Partial order ≤ set S with a least upper bound (LUB), denoted ⊔ §  m = x ⊔ y is a LUB of { x, y } under ≤ if and only if ∀ m′, x ≤ m′ ∧ y ≤ m′ ⇒ x ≤ m ∧ y ≤ m ∧ m ≤ m′

•  It follows that ⊔ is: §  commutative: x ⊔ y = y ⊔ x §  idempotent: x ⊔ x = x §  associative: (x ⊔ y) ⊔ z = x ⊔ (y ⊔ z)

Page 23: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 163

Conflict-free Replicated Data Types Semi-lattice – Example on integers

•  Partial order ≤ on set of integers

•  Least upper bound ⊔ : max (maximum function)

•  Therefore, we have: §  commutative: max(x, y) = max(y, x) §  idempotent: max(x, x) = x §  associative: max(max(x, y), z) = max(x, max(y, z))

Page 24: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 164

Conflict-free Replicated Data Types Semi-lattice – Example on sets

•  Partial order ⊆on sets

•  Least upper bound ⊔ : ∪(set union)

•  Therefore, we have: §  commutative: A∪B = B∪A §  idempotent: A∪A = A §  associative: (A∪B)∪C = A∪(B∪C)

Page 25: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 165

Conflict-free Replicated Data Types Monotonic Semi-lattice Object

•  A state-based object with partial order ≤, noted (S,≤, s0, q, u, m), that has the following properties, is called a monotonic semi-lattice: 1.  Set S of values forms a semi-lattice ordered by ≤ 2.  Merging state s with remote state s′ computes the LUB of the two

states, i.e., s ⦁ m(s′) = s ⊔ s′ (delivery order is not important)

3.  State is monotonically non-decreasing across updates, i.e., s ≤ s ⦁ u (updates have effect, no rollback)

Page 26: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 166

Conflict-free Replicated Data Types Convergent Replicated Data Type (CvRDT)

•  Theorem: Assuming eventual delivery and termination, any replicated state-based object that satisfies the monotonic semi-lattice property is SEC

•  Since: §  Merge is both commutative and associative

¢  We do not care about order §  Merge is idempotent

¢  We do not care about delivering more than once

Page 27: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 167

Convergent Replicated Data Types Example

•  Each replica can execute one of following commands §  query q: returns entire set §  update u: adds new element (e, 𝛼)to local set §  merge m: compute unions between local set and

remote set

{5}

{5}

{5}

{5}

{5}

{5}

{5} U {3} = {3, 5}

{5} U {7} = {5, 7}

{3, 5} U {5, 7} = {3, 5, 7}

{5, 7} U {3, 5} = {3, 5, 7}

{5} U {3, 5} = {3, 5}

{3, 5} U {5, 7} = {3, 5, 7}

Page 28: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 168

Conflict-free Replicated Data Types Operation-based Replication

•  Replicated object: a tuple (S, s0, q, t, u, P). §  S: state domain §  Replica at process pi has state si ∈ S §  s0: initial state

•  Each replica can execute one of following commands §  q: query object’s state §  t: side-effect-free prepare-update method (at local replica) §  u: effect-free update method (at all replicas) §  P: delivery precondition

s1

s2

s3

s1.t(a);s1.u(a’) s

s2.t(b);

s2.u(b’)

s2.u(a’)

s3.u(b’)

s1.u(b’)

b’

b’ a’

s3.u(a’)

a’

Page 29: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 169

Conflict-free Replicated Data Types Operation-based Replication

•  Algorithm •  Updates are delivered to all replicas •  Use causally-ordered broadcast communication protocol, i.e.,

deliver every message to every node exactly once, w.r.t. happen-before order

•  Happen-before: updates from same replica are delivered in the order they happened to all recipients (effectively delivery precondition, P)

•  Note: concurrent updates can be delivered in any order

s1

s2

s3

s1.t(a);s1.u(a’) s

s2.t(b);

s2.u(b’)

S2.u(a’)

s3.u(b’)

s1.u(b’)

b’

b’ a’

s3.u(a’)

a’

Page 30: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 170

Conflict-free Replicated Data Types Commutativity Property

•  Updates (t, u) and (t′, u′) commute, if and only if for any reachable replica state s where both u and u′ are enabled: §  u (resp. u′ ) remains enabled in state s • u′ (resp. s • u ) §  s • u • u′ ≡ s • u′ • u

•  Commutativity holds for concurrent updates

Page 31: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 171

Conflict-free Replicated Data Types Commutative Replicated Data Type (CmRDT)

•  Theorem: Assuming causal delivery of updates and method termination, any replicated op-based object that satisfies the commutativity property for all concurrent updates is SEC

Page 32: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 172

Commutative Replicated Data Types Example

§  query q: returns entire set §  prepare method t: adds new element (e,𝛼) to

local set §  update u: add delta to any remote replica

{5}

{5}

{5}

{5}

{5}

{5}

{5} U {3} = {3, 5}

{5} U {7} = {5, 7}

{3, 5} U {7} = {3, 5, 7}

{5, 7} U {3} = {3, 5, 7}

{5} U {3} = {3, 5}

{3, 5} U {7} = {3, 5, 7}

Page 33: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 173

Consistency Maintenance Conflict-free Replicated Data Types (CRDT)

•  Register •  Last-Writer Wins •  Multi-Value

•  Set •  Grow-Only •  2-Phase •  Observed-Remove •  Observed-Update-Remove

173

•  Map

•  Counter •  Graph

•  Directed

•  Monotonic DAG

•  Edit graph

•  Sequence

[Just-Right Consistency] 25 [Just-Right Consistency]

SwiftCloud edge +cloud

26

Update, commit shared store locally Availability + consistency: DC switch Causal + transactional 3000+ client replicas

DC

DC

DC

C

C C

C

Transmit

partialdatabase

appProcess request& store update Transmit

Transmit

fail-over

fulldatabase

Transmit

[Just-Right Consistency]

AntidoteSyncFree EU project High performance, sharded, transactional, causal Aims to scale to 100s of DCs

• Very modular • Partial replication • Small but safe metadata (vector clock)

In DC: strong consistency, physical clocks (Clock-SI) Industrial apps: Virtual Wallet, SocialApp,

configuration management, FMK

27 [Just-Right Consistency]

(4) NMSI: strong, parallel

28

T1

T2

x

y

x?

Wait-Free Queries

y?T2x?

Forward Freshness

Mini. Commit. Synch + Genuine

Partial Repl.

T3y? x?

Non-Monotonic Snapshot

Read from causal snapshot Scalability properties:

• Wait-Free Queries • Forward Freshness • Mini. Commitment Synchronisation • Genuine Partial Replication

Page 34: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 174

Conflict-free Replicated Data Types Observed-Remove Set (CvRDT)

§  Payload: (A,R) - added/removed sets of (element, unique-token) §  Operations:

add(e): A := A U {(e,𝛼)} remove(e): R := R U {(e,-)∈A} remove all unique elements observed lookup(e): ∃(e,-)∈A\R merge(S, S’): (A U A’, R U R’)

§  {true} add(e) ǁ remove(e) {e∈S}

s1

s2

s3

s {}

{}

{}

s add(a)

{a𝛼}

s add(a)

{aβ}

m

{aβ}

{aβ} m

{a𝛼} }

{aβ,a𝛼} }

s rmv (a)

{a𝛼} }

m

{a𝛼} }

{aβ,a𝛼} }

m

{aβ} {a𝛼,aβ} ,aβ}

Page 35: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 175

Conflict-free Replicated Data Types Observed-Remove Set (CmRDT)

•  Payload: S = {(e,𝛼), (e,β), (e,Ɣ), …} where 𝛼, β, Ɣ,… are unique tokens

•  Operations: add(e): S := S U {(e,𝛼)} where 𝛼 is a fresh unique token lookup(e): ∃𝛼: (e,𝛼) ∈ S remove(e): R := {(e,𝛼)|∃𝛼 (e,𝛼)∈S} (at source) no tombstones

S := S\R {true} add(e) ǁ remove(e) {e∈ S}

s1

s2

s3

s {}

{}

{}

add(a)

{a𝛼}

add(a)

{aβ} add({aβ})

{aβ}

add({a𝛼}) })

{aβ,a𝛼} }

rmv (a)

{} del({a𝛼}) })

{aβ}

add({aβ}) {aβ}

Page 36: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 176

Conflict-free Replicated Data Types P-Counter (CvRDT)

•  Payload: §  P = [int, int, …]

•  Operations: §  value(): ∑i P[i] §  increment(): P[MyID]++

§  merge(S,S'): S ⊔ S' = […,max(s.P[i],s'.P[i]),…]i

•  Positive

Page 37: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 177

Conflict-free Replicated Data Types PN-Counter (CvRDT)

•  Payload: §  P = [int, int, …],

N = [int, int, …]

•  Operations: §  value(): ∑i P[i] – ∑i N[i] §  increment(): P[MyID]++ §  decrement(): N[MyID]++ §  merge(S,S'): S ⊔ S' = ([…,max(s.P[i],s'.P[i]),…]i,

[…,max(s.N[i],s'.N[i]),…]i)

•  Positive or negative

Page 38: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 178

Conflict-free Replicated Data Types (CRDT) CvRDT vs. CmRDT •  Both approaches are equivalent

•  A state-based object can emulate an operation-based object, and vice-versa

•  Operation-based: •  More efficient since you only ship small updates

•  But require exactly once causally-ordered broadcast

•  State-based: •  Only require reliable broadcast

•  Communication overhead of shipping the whole state

•  Delta State-based:

•  Small messages

•  Dissemination over unreliable communication channels

Page 39: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 179

Conflict-free replicated data type (CRDT) (Text) Sequence •  Document = linear sequence of elements •  Unique position identifiers

§  Each element has a unique identifier §  Identifier remains constant for the lifetime of the document •  Dense total order of identifiers consistent with element order: ∀ idx , idy: idx < idy ⇒ ∃ idz : idx < idz < idy

•  Real numbers require an infinite precision •  Different approaches for generating identifiers: Treedoc,

Logoot

Page 40: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 180

Logoot (*)

§  Identifier: <p1,s1,h1>. <p2,s2,h2> ⋅⋅⋅ <pk,sk,hk> pi integer si site identifier hi logical clock at site si <0,NA,NA>

<87,1,0>

<87,1,0>.<111,6,7>

<89,4,5>

<MAX,NA,NA>

CSCW conference

March 19-23, 2011

Hangzhou,China

(*) Stéphane Weiss, Pascal Urso and Pascal Molli. Logoot : a Scalable Optimistic Replication Algorithm for Collaborative Editing on P2P Networks. In ICDCS , Montreal, Quebec, Canada , June 2009

Page 41: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 181

Logoot

§  Site 9 wants to insert 5 lines between first 2 lines §  Take first components <1,1,1> and <4,2,1>

¢  2 identifiers: <2,9,h> and <3,9,h> §  Take first 2 components <1,1,1>.<5,2,4> and <4,2,1>.<2,4,6>

¢  25 identifiers –  <1,1,1>.<{6-9},9,h> –  <2,9,h>.<{1-9},9,h> –  <3,9,h>.<{1-9},9,h> –  <4,2,1>.<{1},9,h>

Choose 5 identifiers

<0,NA,NA>

<1,1,1>.<5,2,4>.<4,6,2>

<4,2,1>.<2,4,6>.<3,3,6>

<6,3,4>

<MAX,NA,NA>

CSCW conference

March 19-23, 2011

Hangzhou,China

Page 42: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 182

Logoot

§  Remote insertion: Insert(<2,9,1>.<2,9,2>, “Computer Supported Cooperative Work”)

§  Use binary search algorithm

<0,NA,NA>

<1,1,1>.<5,2,4>.<4,6,2>

<4,2,1>.<2,4,6>.<3,3,6>

<6,3,4>

<MAX,NA,NA>

CSCW conference

March 19-23, 2011

Hangzhou,China

<0,NA,NA>

<1,1,1>.<5,2,4>.<4,6,2>

<2,9,1>.<2,9,2>

<4,2,1>.<2,4,6>.<3,3,6>

<6,3,4>

<MAX,NA,NA>

CSCW conference

Computer Supported Cooperative Work

March 19-23, 2011

Hangzhou,China

Page 43: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 183

Logoot

§  Remote deletion: Delete(<4,2,1>.<2,4,6>.<3,3,6>) §  Use binary search algorithm

<0,NA,NA>

<1,1,1>.<5,2,4>.<4,6,2>

<2,9,1>.<2,9,2>

<6,3,4>

<MAX,NA,NA>

CSCW conference

Computer Supported Cooperative Work

Hangzhou,China

<0,NA,NA>

<1,1,1>.<5,2,4>.<4,6,2>

<2,9,1>.<2,9,2>

<4,2,1>.<2,4,6>.<3,3,6>

<6,3,4>

<MAX,NA,NA>

CSCW conference

Computer Supported Cooperative Work

March 19-23, 2011

Hangzhou,China

Page 44: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 184

Operational Transformation (OT)

concurency contrl Site 1

op1=ins(7,r)

concurrency contorl

Site 2

concurency contrl op2=ins(17,o)

concurrency control

op2=ins(17,o) op1=ins(7,r)

concurrency control op2=ins(18,o)

•  Transforms non commuting operations to make them commute

•  Genericity

•  Time complexity

Average: O(H.c) H: #ops

Worst case: O(H2) c: avg. #conc. ops

•  Difficult to write correct transformation functions

•  State vectors used for detecting concurrency ⇒ scalability limitations

•  Not very suitable for large scale peer-to-peer collaboration

concurrency contrl concurency control

Page 45: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 185

Conflict-free Replicated Data Types (CRDT)

<1,2,1> c

<1,2,2> o

<2,1,2> n

<3,1,3> c

<3,1,3><8,4,5> u

<3,2,5> r

<4,1,7> e

<4,1,7><9,2,6> n

<7,2,8> c

<9,1,7> y

<10,2,8>

<12,3,1> c

<12,3,1><6,5,1> o

<12,3,1><7,8,2> n

<12,3,1><7,8,2><12,3,5> t

<12,3,1><7,8,2><13,3,6> r

<12,3,1><7,8,2><14,3,7> l

ins(<3,2,5><13,1,7>, r)

ins(<12,3,1><7,8,2><13,3,6><7,2,9>, o)

• Time complexity

Average: O(k.log(n))

Worst case: O(H.log(H))

H: #ops

n: doc. size (non deleted chars.)

k: avg. size of Logoot identifier • No need for concurrency detection

• Identifiers storage cost

• New design for each data type

• Suitable for large-scale collaboration

Page 46: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 186

Conflict-free Replicated Data Types (CRDT) LogootSplit

1,1,[0,5] concur 1,1,5,2,1,[0,0] r 1,1, [6,15] ency contr 1,1,15,3,1,[0,0] o 1,1,[16,16] l

1,1,[0,16] concurency contrl

1,1,[0,5] concur 1,1,5,2,1,[0,0] r 1,1, [6,16] ency contrl

Insert r between “concur” and “ency contrl”

Insert o between “ency contr” and “l”

p1 … pn site_id clock begin end

Base Interval

LogootSplit identifiers

André, L. et al., “Supporting Adaptable Granularity of Changes for Massive Scale Collaborative Editing” CollaborateCom 2013 

Page 47: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 187

LogootSplit

ABCDEF

2,1,[0,5]

ABCDEF

2,1,[0,5]

Site 3 Site 4

insert XY between B and C

Page 48: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 188

XY

2,1,1,3,1,[0,1]

LogootSplit

ABCDEF

2,1,[0,5]

ABCDEF

2,1,[0,5]

insert XY between B and C

Site 3 Site 4

AB

2,1,[0,1]

CDEF

2,1,[2,5]

Page 49: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 189

ZT

2,1,3,4,1,[0,1]

LogootSplit

ABCDEF

2,1,[0,5]

ABCDEF

2,1,[0,5]

insert XY between B and C insert ZT between D and E

Site 3 Site 4

ABCD

2,1,[0,3]

EF

2,1,[4,5]

XY

2,1,1,3,1,[0,1]

AB

2,1,[0,1]

CDEF

2,1,[2,5]

Page 50: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 190 190

LogootSplit

ABCDEF

2,1,[0,5]

XY

2,1,1,3,1,[0,1]

ABCDEF

2,1,[0,5]

Site 3 Site 4

sending of operations

AB

2,1,[0,1]

CDEF

2,1,[2,5]

XY

2,1,1,3,1,[0,1]

AB

2,1,[0,1]

CDEF

2,1,[2,5]

ABCD

2,1,[0,3]

ZT

2,1,3,4,1,[0,1]

EF

2,1,[4,5]

insert XY between B and C insert ZT between D and E

ZT

2,1,3,4,1,[0,1]

EF

2,1,[4,5]

ABCD

2,1,[0,3]

Page 51: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 191

AB

2,1,[0,1]

XY

2,1,1,3,1,[0,1]

EF

2,1,[4,5]

ZT

2,1,3,4,1,[0,1]

191

LogootSplit

ABCDEF

2,1,[0,5]

XY

2,1,1,3,1,[0,1]

ABCDEF

2,1,[0,5]

ZT

2,1,3,4,1,[0,1]

Site 3 Site 4

CDEF

2,1,[2,5]

EF

2,1,[4,5]

XY

2,1,1,3,1,[0,1]

AB

2,1,[0,1]

ZT

2,1,3,4,1,[0,1]

CD

2,1,[2,3]

CD

2,1,[2,3]

EF

2,1,[4,5]

AB

2,1,[0,1]

ABCD

2,1,[0,3]

insert XY between B and C insert ZT between D and E

sending of operations

Page 52: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 192

LogootSplit Performance Comparison

192

Treedoc Woot Logoot

LogootSplitAVL LogootSplitNaive LogootSplitString

5 00010 000

15 000

20 000

10 1

10 2

10 3

Operation count

Generationtim

eµs

5 00010 000

15 000

20 000

10 1

10 2

10 3

Operation count

Integrationtim

eµs

Treedoc Woot Logoot

LogootSplitAVL LogootSplitNaive LogootSplitString

5 00010 000

15 000

20 000

10

20

30

40

Operation count

Memory

consumptionin

MB

Generation Time Integration Time Memory Consumption

Random block (avg. 50 char.) insertion/deletion

First 80% insertions, then 20% insertions

Page 53: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 193

Delays in MUTE

193

Page 54: Replication › CIgnat › files › replication › Replication_C4.pdf · State-based Replication • Replicated object: a tuple (S, s 0, q, u, m) § S: state domain § Replica at

Claudia Ignat, [email protected] Réplication et cohérence de données 194

Delays in GoogleDocs

194