nosql rollercoaster

71
A NoSQL Rollercoaster Saturday, November 6, 2010

Upload: wilfred-springer

Post on 25-Jun-2015

1.927 views

Category:

Technology


0 download

DESCRIPTION

Slides used during my JFall 2010 talk

TRANSCRIPT

Page 1: NoSQL Rollercoaster

A NoSQL Rollercoaster

Saturday, November 6, 2010

Page 2: NoSQL Rollercoaster

Saturday, November 6, 2010

Page 3: NoSQL Rollercoaster

IMSThe Hierarchical

Database

(1966)

Vern WattsSaturday, November 6, 2010

Page 4: NoSQL Rollercoaster

“A Relational Model for Large

Shared Databanks”

(1970)

Ted CoddSaturday, November 6, 2010

Page 5: NoSQL Rollercoaster

“"SEQUEL: A Structured

English Query Language"

Don Chamberlin & Ray Boyce

(1974)

Don ChamberlinSaturday, November 6, 2010

Page 6: NoSQL Rollercoaster

ACID

(late 1970’s)

Jim GraySaturday, November 6, 2010

Page 7: NoSQL Rollercoaster

“NoSQL” coined

(1998)

Carlo StrozziSaturday, November 6, 2010

Page 8: NoSQL Rollercoaster

“NoSQL” Reintroduced(2008)

Eric Evans

Saturday, November 6, 2010

Page 9: NoSQL Rollercoaster

select fun, profit from real_world where relational=false?

Saturday, November 6, 2010

Page 10: NoSQL Rollercoaster

“In striving to make every user happy, a technology an actually leave the majority

unhappy.”

“Every good idea is generalized to its level of

inapplicability.”

(Peter Principle)

Saturday, November 6, 2010

Page 11: NoSQL Rollercoaster

Saturday, November 6, 2010

Page 12: NoSQL Rollercoaster

Why?

Saturday, November 6, 2010

Page 13: NoSQL Rollercoaster

Internet Scale

• Massive data collections

• Huge number of requests

• Coming from geographic areas across the globe

• 24/7

Saturday, November 6, 2010

Page 14: NoSQL Rollercoaster

Total Cost of Ownership

• The price of a license

• The price of support

• The price of hardware

Saturday, November 6, 2010

Page 15: NoSQL Rollercoaster

Availability

Saturday, November 6, 2010

Page 16: NoSQL Rollercoaster

Data Models

Saturday, November 6, 2010

Page 17: NoSQL Rollercoaster

Column Oriented

key namedcolumn

namedcolumn

namedcolumn

namedcolumn

namedcolumn

Column Family ≈ Table

Empty cells are cheap (sparse

table)

Can grow “indefinitely”

Schemaless No secundary

indexes

Saturday, November 6, 2010

Page 18: NoSQL Rollercoaster

Column Oriented + Super Columns

key namedcolumn

namedcolumn

namedcolumn

namedcolumn

namedcolumn

namedcolumn

namedcolumn

namedcolumn

Super Columns

Saturday, November 6, 2010

Page 19: NoSQL Rollercoaster

Key Value Store

•Schemaless•Versioning

10110110

Saturday, November 6, 2010

Page 20: NoSQL Rollercoaster

Graph Database

SPARQL?

Saturday, November 6, 2010

Page 21: NoSQL Rollercoaster

Document Store

Improved Indexing

<persons><person><name>Wilfred</name><surname>Springer</person>…</persons>

[{ "Name" : "Wilfred", "Surname" : "Springer"}, …]

JSON

XML

Serverside Processing

Saturday, November 6, 2010

Page 22: NoSQL Rollercoaster

Challenges

Saturday, November 6, 2010

Page 23: NoSQL Rollercoaster

CAP Theorem

Eric Brewer

Saturday, November 6, 2010

Page 24: NoSQL Rollercoaster

Availability Consistency

PartitionTolerance

Pick two

Saturday, November 6, 2010

Page 25: NoSQL Rollercoaster

ConsistencyConsistency

Strong Consistency

Weak Consistency

Eventual Consistency Other

Causal Consistency

Read-your-writes

ConsistencySession

ConsistencyMonotonic Read

ConsistencyMonotonic Write

Consistency

Saturday, November 6, 2010

Page 26: NoSQL Rollercoaster

Strong Consistency

AB

C

1

2

2

2

0 value = "foo"

value = "bar"

value = "bar" value = "bar"

value = "bar"

After the update, any subsequent access will return the updated value.

Saturday, November 6, 2010

Page 27: NoSQL Rollercoaster

Weak Consistency

AB

C

1 value = "bar"

value = "bar" /"foo"

value = "bar" / "foo"

value = "bar" / "foo"

0 value = "foo"

>1

>1

>1

The system does not guarantee that at any given point in the future subsequent access will return the updated value

Saturday, November 6, 2010

Page 28: NoSQL Rollercoaster

Eventual Consistency

If no updates are made to the object, eventually all accesses will return the last updated value.

AB

C

1 value = "bar"

value = "bar" value = "bar"

value = "bar"

0 value = "foo"

t

t

t

t ≥ 1

Saturday, November 6, 2010

Page 29: NoSQL Rollercoaster

Session Consistency

Within the “session”, the system guarantees read-your-writes consistency

2 value = "foo"

Session 1

Session 2

AB

C

1 value = "bar"

0 value = "foo"

2 value = "bar"

Saturday, November 6, 2010

Page 30: NoSQL Rollercoaster

Partition Tolerance

Awrites new value

replicates new value

reads new value

Saturday, November 6, 2010

Page 31: NoSQL Rollercoaster

Partition Tolerance

Awrites new value

replicates new value

reads new value

!

Saturday, November 6, 2010

Page 32: NoSQL Rollercoaster

Partition Tolerance

Awrites new value

fails to replicate

new value

reads old value

Saturday, November 6, 2010

Page 33: NoSQL Rollercoaster

Partition Tolerance

A

failing attempt to write a new

value

fails to replicate

new value

Saturday, November 6, 2010

Page 34: NoSQL Rollercoaster

Byzantine Failures

Saturday, November 6, 2010

Page 35: NoSQL Rollercoaster

Faults that might occur in a

distributed system

•Lying

•Fabrication of messages

•Collisions

•Selective non-participation

Saturday, November 6, 2010

Page 36: NoSQL Rollercoaster

Byzantine Generals Problem

Saturday, November 6, 2010

Page 37: NoSQL Rollercoaster

Solution Strategies

Saturday, November 6, 2010

Page 38: NoSQL Rollercoaster

Strong Consistency

1

Saturday, November 6, 2010

Page 39: NoSQL Rollercoaster

Παξοί

Saturday, November 6, 2010

Page 40: NoSQL Rollercoaster

Leader Proposer

Acceptor Learner

Four Roles

Saturday, November 6, 2010

Page 41: NoSQL Rollercoaster

Paxos in a Nutshell

RequestPropose

Promise

AcceptAcceptedResponse

Saturday, November 6, 2010

Page 42: NoSQL Rollercoaster

Processors combine various

roles

Consensus based on

majority vote

Paxos guarantees progress for 2F + 1

processors in face of failure of F processors

Saturday, November 6, 2010

Page 43: NoSQL Rollercoaster

“Either Paxos, Paxos with

cruft, or broken”

Mike Burrows

(Google Chubby)

Saturday, November 6, 2010

Page 44: NoSQL Rollercoaster

Partitioning2

Saturday, November 6, 2010

Page 45: NoSQL Rollercoaster

Consistent HashingKey KA

B

C

DE

F

G

H

Saturday, November 6, 2010

Page 46: NoSQL Rollercoaster

High Availability

3

Saturday, November 6, 2010

Page 47: NoSQL Rollercoaster

ReplicationA

B

C

DE

F

G

H

Saturday, November 6, 2010

Page 48: NoSQL Rollercoaster

W = 3

N = 4R = 2

A

Replication Factor

Saturday, November 6, 2010

Page 49: NoSQL Rollercoaster

W = 3

N = 4R = 2

A

Reconciliation during reads

Reconciliation

Saturday, November 6, 2010

Page 50: NoSQL Rollercoaster

Handling Temporary

Failures

4

Saturday, November 6, 2010

Page 51: NoSQL Rollercoaster

ProblemReconcilation

?

Alice Ben CathyDave

Wednesday?

Thursday

Tuesday

What's it gonna be?

Tuesday ThursdayX? ? ?

Saturday, November 6, 2010

Page 52: NoSQL Rollercoaster

Vector Clocksdate = Wednesdayvclock = Alice:1

date = Tuesdayvclock = Alice:1, Ben:1

date = Tuesdayvclock = Alice:1, Ben:1, Dave:1

date = Tuesdayvclock = Alice:1, Cathy:1

date = Thursdayvclock = Alice:1, Ben:1, Cathy:1, Dave:2

Saturday, November 6, 2010

Page 53: NoSQL Rollercoaster

Conflict Resolution

date = Tuesdayvclock = Alice:1, Ben:1, Dave:1

date = Thursdayvclock = Alice:1, Ben:1, Cathy:1, Dave:2

6

Saturday, November 6, 2010

Page 54: NoSQL Rollercoaster

Recovering from permanent

failures

5

Saturday, November 6, 2010

Page 55: NoSQL Rollercoaster

What if nodes die permantly?A

B

C

DE

F

G

H

Saturday, November 6, 2010

Page 56: NoSQL Rollercoaster

Merkle Trees

##

#

#

##

##

#

#

#

##

#

Saturday, November 6, 2010

Page 57: NoSQL Rollercoaster

Enough is enough!!!

Saturday, November 6, 2010

Page 58: NoSQL Rollercoaster

Conclusions

Saturday, November 6, 2010

Page 59: NoSQL Rollercoaster

Conclusions

Scale!!!

Saturday, November 6, 2010

Page 60: NoSQL Rollercoaster

Conclusions

Scale!!!No free ride

Saturday, November 6, 2010

Page 61: NoSQL Rollercoaster

Conclusions

Scale!!!No free ride

You gain some

Saturday, November 6, 2010

Page 62: NoSQL Rollercoaster

Conclusions

Scale!!!No free ride

You gain some

You lose some

Saturday, November 6, 2010

Page 63: NoSQL Rollercoaster

Conclusions

Scale!!!No free ride

You gain some

You lose someChoice

Saturday, November 6, 2010

Page 64: NoSQL Rollercoaster

Conclusions

Scale!!!No free ride

You gain some

You lose someChoice

Control

Saturday, November 6, 2010

Page 65: NoSQL Rollercoaster

Conclusions

Scale!!!No free ride

You gain some

You lose someChoice

ControlTake control

Saturday, November 6, 2010

Page 66: NoSQL Rollercoaster

Conclusions

Scale!!!No free ride

You gain some

You lose someChoice

ControlTake control

Understand your options

Saturday, November 6, 2010

Page 67: NoSQL Rollercoaster

Conclusions

Scale!!!No free ride

You gain some

You lose someChoice

ControlTake control

Understand your options

Fun!!!

Saturday, November 6, 2010

Page 68: NoSQL Rollercoaster

Conclusions

Scale!!!No free ride

You gain some

You lose someChoice

ControlTake control

Understand your options

Fun!!!

Changes your way of thinking

Saturday, November 6, 2010

Page 69: NoSQL Rollercoaster

Conclusions

Scale!!!No free ride

You gain some

You lose someChoice

ControlTake control

Understand your options

Fun!!!

Changes your way of thinking

Saturday, November 6, 2010

Page 70: NoSQL Rollercoaster

No SQL!!!

[email protected]

Saturday, November 6, 2010

Page 71: NoSQL Rollercoaster

BASE

• Basically Available

• Soft State

• Eventually Consistent

Saturday, November 6, 2010