Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CRDT 101
Search
Sergey Arkhipov
December 09, 2014
Programming
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CRDT 101
Sergey Arkhipov
December 09, 2014
More Decks by Sergey Arkhipov
See All by Sergey Arkhipov
Fingerprinting
9seconds
0
190
Concurrency Models
9seconds
0
300
Probablistic Data Structures
9seconds
0
280
Own Mustache
9seconds
0
370
Daemonize
9seconds
0
370
Stuff That Works
9seconds
0
400
Evidence
9seconds
0
120
Redneck Monads
9seconds
1
140
Latency
9seconds
0
160
Other Decks in Programming
See All in Programming
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
1k
FDEが実現するAI駆動経営の現在地
gonta
2
280
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
110
Cloudflare is Agents
chimame
0
170
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
700
Google Apps Script で Ruby を動かす
kawahara
0
260
yield再入門 #phpcon
o0h
PRO
0
1.1k
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
520
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
1
140
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.5k
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.6k
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
5.9k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
240
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
650
Skip the Path - Find Your Career Trail
mkilby
1
180
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
250
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
280
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
25k
How to Talk to Developers About Accessibility
jct
2
520
Code Review Best Practice
trishagee
74
20k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Transcript
CRDT 101 Архипов Сергей @9seconds 10.12.2014
Наши проблемы ← CRDT ― Network ― RAM ― Persistent
storage ― CPU
90е ← CRDT Web Server Application Database
90е ← CRDT Web Server Application Database
2000: Load Balancing ← CRDT
2000: Load Balancing ← CRDT
2002: Replication ← CRDT
2004: Caching ← CRDT
2004: Caching ← CRDT
2006: Web 2.0 + Amazon = Sharding ← CRDT
2008: NoSQL ← CRDT
2010: MapReduce ← CRDT
2000: CAP ← CRDT ― Consistency ― Availability ― Partition
Tolerance
2009: CRDT ← CRDT
2009: CRDT ← CRDT
2009: CRDT ← CRDT
2009: CRDT ← CRDT
2009: CRDT ← CRDT
2009: CRDT ← CRDT
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.
LWW-element-Set ← CRDT
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
LWW-element-Set ← CRDT A R A R
LWW-element-Set ← CRDT A R A R (t1, a)
LWW-element-Set ← CRDT A R A R (t1, a) (t1,
a)
LWW-element-Set ← CRDT A R A R (t2, b) (t1,
a) (t1, a)
LWW-element-Set ← CRDT A R A R (t1, a) (t1,
a) (t2, b)
LWW-element-Set ← CRDT A R A R (t3, c) (t1,
a) (t1, a) (t2, b)
LWW-element-Set ← CRDT A R A R (t1, a) (t1,
a) (t2, b) (t3, c) (t2, b) (t2, b) (t4, c)
LWW-element-Set ← CRDT A R A R (t1, a) (t1,
a) (t2, b) (t3, c) (t2, b) (t2, b) (t4, c) (t4, c)
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)
LWW-element-Set ← CRDT A R (t1, a) (t1, a) (t3,
c) (t2, b) (t2, b) (t4, c) (t4, c)
LWW-element-Set ← CRDT A R (t1, a) (t3, c) (t2,
b) (t4, c)
LWW-element-Set ← CRDT (t1, a) (t2, b)
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)
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
(Not) Many implementations ← CRDT ― Apache Cassandra ― Apache
HBase ― Basho Riak ― SoundCloud Roshi ― Akka CRDT
Q/A ← CRDT @9seconds https://speakerdeck.com/9seconds/crdt-101