Slide 1

Slide 1 text

Consistency and Candy Crush Neha Narula @neha dotScale June 8, 2015 1   Don’t give up on serializability just yet

Slide 2

Slide 2 text

@neha 2   •  PhD from MIT •  Formerly at Google •  Research in fast transactions for multi-core databases and distributed systems

Slide 3

Slide 3 text

3   … the most important person in my gang will be a systems programmer. A person who can debug a device driver or a distributed system is a person who can be trusted in a Hobbesian nightmare of breathtaking scope; a systems programmer has seen the terrors of the world and understood the intrinsic horror of existence.

Slide 4

Slide 4 text

Consistency models help us reason about our code and avoid subtle bugs

Slide 5

Slide 5 text

Outline Consistency as in ACID Consistency models Consistency as in CAP

Slide 6

Slide 6 text

Outline Consistency as in ACID! Consistency models Consistency as in CAP

Slide 7

Slide 7 text

7   mysql> START TRANSACTION; mysql> UPDATE t SET x=x+1 WHERE y=2; mysql> UPDATE t SET y=y+1 WHERE z=3; mysql> COMMIT;

Slide 8

Slide 8 text

ACID transactions Atomic Consistent Isolated Durable 8   Whole thing happens or not Application-defined correctness Transactions don’t interfere with each other Database can recover correctly from a crash

Slide 9

Slide 9 text

What is serializability? The result of executing a set of transactions is equivalent to executing those transactions one at a time, in some serial order. If each transaction preserves correctness, the database will be in a correct state. We can pretend like there’s no concurrency! 9  

Slide 10

Slide 10 text

What is serializability? 10   serializability != serial execution

Slide 11

Slide 11 text

TXN1(k, j Key) (int, int) { a := GET(k) b := GET(j) return a, b } Serializable database transactions 11   TXN2(k, j Key) { ADD(k,1) ADD(j,1) } TXN1 TXN2 TXN2 TXN1 time or" To the programmer:" Valid return values for TX1: (0,0)" k=0,j=0" or (1,1)"

Slide 12

Slide 12 text

Interleaved execution:" GET(k) GET(j) Transactions can execute in parallel 12   ADD(k,1) ADD(j,1) time k=0,j=0 TX1 returns (1,1)"

Slide 13

Slide 13 text

Interleaved execution:" GET(k)GET(j) Non-serializable means incorrect interleavings 13   ADD(k,1) ADD(j,1) time TX1 returns (1,0)!" k=0,j=0

Slide 14

Slide 14 text

Benefits of serializability •  Do not have to reason about interleavings •  Express invariants in one place: the code 14  

Slide 15

Slide 15 text

Outline Consistency as in ACID Consistency models! Consistency as in CAP

Slide 16

Slide 16 text

Eventual consistency: key/value stores •  Bigtable 16   •  Dynamo

Slide 17

Slide 17 text

Eventual consistency If no new updates are made to a key, eventually all accesses will return the last updated value.

Slide 18

Slide 18 text

Eventual consistency If no new updates are made to a key, eventually all accesses will return the last updated value the same value. (What is last, really?) (And when do we stop writing?)

Slide 19

Slide 19 text

Strict consistency •  Reads and writes appear to have executed in a total order that matches time •  Single processor semantics •  Linearizability 19  

Slide 20

Slide 20 text

Different Consistency Models Strict consistency Sequential consistency Causal consistency PRAM consistency Read-your-writes consistency Eventual consistency 20   Stronger" Weaker"

Slide 21

Slide 21 text

Outline Consistency as in ACID Consistency models Consistency as in CAP!

Slide 22

Slide 22 text

CAP theorem •  Brewer’s PODC talk: Consistency, Availability, Partition-tolerance: choose two in 2000 –  Partition-tolerance is a failure model –  Choice: can you process reads and writes during a partition or not? •  FLP result: Impossibility of Distributed Consensus with One Faulty Process in 1985 –  Asynchronous model; cannot tell the difference between message delay and failure

Slide 23

Slide 23 text

What does this mean? Is it impossible to run a correct distributed database?

Slide 24

Slide 24 text

NP-hard

Slide 25

Slide 25 text

What does CAP mean? It is impossible to 100% of the time make progress and get the right answer if we can’t rely on synchronous messaging We can 100% of the time make progress and get the right answer if partitions heal (we know the upper bound on message delays) We can still play Candy Crush

Slide 26

Slide 26 text

CAP" Consistency vs. performance Consistency requires communication and blocking. How do we reduce these costs while producing a correct ordering of reads and writes and handling failures?

Slide 27

Slide 27 text

Spanner/F1 “We believe it is better to have application programmers deal with performance problems due to overuse of transactions as bottlenecks arise, rather than always coding around the lack of transactions.” Corbett, James C., Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost, Jeffrey John Furman, Sanjay Ghemawat et al. "Spanner: Google’s globally distributed database." ACM Transactions on Computer Systems (TOCS) , 2013.

Slide 28

Slide 28 text

Outline Consistency as in ACID Consistency models Consistency as in CAP

Slide 29

Slide 29 text

Takeaways Use well-tested, long-lived databases with SERIALIZABLE until you have a performance problem Be aware of what is changing when you move between systems with different consistency models Consciously decide what trade-offs to make 29  

Slide 30

Slide 30 text

Thanks!" The Stata Center via emax: http://hip.cat/emax/ [email protected] http://nehanaru.la @neha