Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CRDT 101

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

CRDT 101

Avatar for Sergey Arkhipov

Sergey Arkhipov

December 09, 2014
Tweet

More Decks by Sergey Arkhipov

Other Decks in Programming

Transcript

  1. 2009: CRDT ← CRDT CmRDT — Commutative Replicated Data Type

    Assuming causal delivery of updates and method termination, any op-based object that satisfies the commutativity property for all concurrent updates, and whose delivery precondition is satisfied by causal delivery, is strong eventual consistent.
  2. LWW-element-Set ← CRDT tweet = { id: "3b6730f1-50c7-4fad-ac47-ba8c2efadfc1", timestamp: 1416757099,

    user: "9seconds" message: "Test message" } def tweet_to_lww(tweet): return tweet["timestamp"], tweet
  3. LWW-element-Set ← CRDT A R A R (t1, a) (t1,

    a) (t2, b) (t3, c) (t2, b) (t2, b) (t4, c)
  4. LWW-element-Set ← CRDT A R A R (t1, a) (t1,

    a) (t2, b) (t3, c) (t2, b) (t2, b) (t4, c) (t4, c)
  5. LWW-element-Set ← CRDT A R A R (t1, a) (t1,

    a) (t2, b) (t3, c) (t2, b) (t2, b) (t4, c) (t4, c) Synchronizer (SoundCloud Roshi)
  6. LWW-element-Set ← CRDT A R (t1, a) (t1, a) (t3,

    c) (t2, b) (t2, b) (t4, c) (t4, c)
  7. LWW-element-Set ← CRDT A R A R (t1, a) (t1,

    a) (t2, b) (t3, c) (t2, b) (t4, c) (t4, c) Synchronizer (SoundCloud Roshi) (t3, c)
  8. Many CRDTs! ← CRDT ― Op-based Counter ― G-Counter ―

    State-based PN Counter ― LWW-Register ― MV-Register ― G-Set ― 2P-Set ― LWW-element-Set ― PN-Set ― OR Set ― Add-only monotonic DAG ― Add-Remove Partial Order data type ― RGA ― RHA ― TreeDoc ― Logoot ― WOOT ― WOOTH
  9. (Not) Many implementations ← CRDT ― Apache Cassandra ― Apache

    HBase ― Basho Riak ― SoundCloud Roshi ― Akka CRDT