Cassandra FrOSCon 10

61
Jonathan Ellis [email protected] / @spyced Inside the Cassandra Database Saturday, August 21, 2010

description

 

Transcript of Cassandra FrOSCon 10

Page 1: Cassandra FrOSCon 10

Jonathan [email protected] / @spyced

Inside the Cassandra Database

Saturday, August 21, 2010

Page 2: Cassandra FrOSCon 10

Saturday, August 21, 2010

Page 3: Cassandra FrOSCon 10

Why NoSQL?

✤ Relational databases don’t scale

✤ The relational model maps poorly to some problems

✤ Relational databases are slow

Saturday, August 21, 2010

Page 4: Cassandra FrOSCon 10

Myth 1

✤ “NoSQL is for people who don’t understand {SQL, denormalization, query tuning, ...}”

✤ Similarly: “Only users of [database X] are turning to NoSQL databases, because X sucks.”

Saturday, August 21, 2010

Page 5: Cassandra FrOSCon 10

eBay: NoSQL pioneer

✤ “BASE is diametrically opposed to ACID. Where ACID is pessimistic and forces consistency at the end of every operation, BASE is optimistic and accepts that the database consistency will be in a state of flux. Although this sounds impossible to cope with, in reality it is quite manageable and leads to levels of scalability that cannot be obtained with ACID.”

✤ --BASE: An Acid Alternative, Dan Pritchett, eBay

✤ See also: The eBay Architecture, Randy Shoup and Dan Pritchett

Saturday, August 21, 2010

Page 6: Cassandra FrOSCon 10

(“The eBay Architecture,” Randy Shoup and Dan Pritchett)

Saturday, August 21, 2010

Page 7: Cassandra FrOSCon 10

Myth 2

✤ “NoSQL is nothing new because we had key/value databases like bdb years ago.”

Saturday, August 21, 2010

Page 8: Cassandra FrOSCon 10

Myth 3

✤ “Only huge web 2.0 sites like Facebook and Twitter care about scalability.”

Saturday, August 21, 2010

Page 9: Cassandra FrOSCon 10

Cassandra

✤ Relational databases don’t scale

✤ The relational model maps poorly to some problems

✤ Relational databases are slow

Saturday, August 21, 2010

Page 10: Cassandra FrOSCon 10

Saturday, August 21, 2010

Page 11: Cassandra FrOSCon 10

Saturday, August 21, 2010

Page 12: Cassandra FrOSCon 10

Saturday, August 21, 2010

Page 13: Cassandra FrOSCon 10

Saturday, August 21, 2010

Page 14: Cassandra FrOSCon 10

Saturday, August 21, 2010

Page 15: Cassandra FrOSCon 10

Saturday, August 21, 2010

Page 16: Cassandra FrOSCon 10

Use cases

✤ Digital Reasoning: NLP + entity analytics

✤ OpenX: largest publisher-side ad network in the world

✤ Cloudkick: performance data & aggregation

✤ SimpleGEO: location-as-API

✤ Ooyala: video analytics and business intelligence

✤ ngmoco: massively multiplayer game worlds

Saturday, August 21, 2010

Page 17: Cassandra FrOSCon 10

Cassandra

✤ Relational databases don’t scale

✤ The relational model maps poorly to some problems

✤ Relational databases are slow

Saturday, August 21, 2010

Page 18: Cassandra FrOSCon 10

Saturday, August 21, 2010

Page 19: Cassandra FrOSCon 10

Cassandra memory-aware index

<row data 0><row data 1>

...<row data 127>

...<row data 255>

...

<key 127><key 255>

...

Saturday, August 21, 2010

Page 20: Cassandra FrOSCon 10

Commitlog

MemtableWriterReader

The Log-Structured Merge-Tree,Bigtable: A Distributed Storage System for Structured Data

Saturday, August 21, 2010

Page 21: Cassandra FrOSCon 10

Saturday, August 21, 2010

Page 22: Cassandra FrOSCon 10

Durable

✤ Write to commitlog

✤ fsync is cheap since it’s append-only

✤ Write to memtable

✤ [amortized] flush memtable to sstable

Saturday, August 21, 2010

Page 23: Cassandra FrOSCon 10

Scaling

Saturday, August 21, 2010

Page 24: Cassandra FrOSCon 10

A

L

T

W

Saturday, August 21, 2010

Page 25: Cassandra FrOSCon 10

A

L

T

W

F

Saturday, August 21, 2010

Page 26: Cassandra FrOSCon 10

A

L

T

W

F(A-L]

Saturday, August 21, 2010

Page 27: Cassandra FrOSCon 10

A

L

T

W

F(A-F]

(F-L]

Saturday, August 21, 2010

Page 28: Cassandra FrOSCon 10

A

L

T

W

F

Key “C”

Saturday, August 21, 2010

Page 29: Cassandra FrOSCon 10

Reliability

✤ No single points of failure, clean design

✤ Multiple datacenters

✤ Monitorable

Saturday, August 21, 2010

Page 30: Cassandra FrOSCon 10

Saturday, August 21, 2010

Page 32: Cassandra FrOSCon 10

The opposite of heroes

✤ “If your software wakes someone up at 4 AM to fix it, you’re doing it wrong.”

Saturday, August 21, 2010

Page 33: Cassandra FrOSCon 10

Good architecture solves multiple problems at once

✤ Availability in single datacenter

✤ Availablility in multiple datacenters

✤ Built-in repair rather than an afterthought

✤ or worse, having to restart replication entirely

Saturday, August 21, 2010

Page 34: Cassandra FrOSCon 10

A

LT

W

F

P

YKey “C”

U

Saturday, August 21, 2010

Page 35: Cassandra FrOSCon 10

A

LT

W

P

Y

UF

Saturday, August 21, 2010

Page 36: Cassandra FrOSCon 10

A

LT

W

F

P

Y

U

Saturday, August 21, 2010

Page 37: Cassandra FrOSCon 10

A

LT

W

F

P

YKey “C”

U

Saturday, August 21, 2010

Page 38: Cassandra FrOSCon 10

A

LT

W

F

P

YKey “C”

U

Saturday, August 21, 2010

Page 39: Cassandra FrOSCon 10

A

LT

W

F

P

YKey “C”

U

Saturday, August 21, 2010

Page 40: Cassandra FrOSCon 10

A

LT

W

F

P

YKey “C”

U

Saturday, August 21, 2010

Page 41: Cassandra FrOSCon 10

A

LT

W

F

P

YKey “C”

U

Saturday, August 21, 2010

Page 42: Cassandra FrOSCon 10

A

LT

W

F

P

YKey “C”

U

XSaturday, August 21, 2010

Page 43: Cassandra FrOSCon 10

A

LT

W

F

P

YKey “C”

U

Xhint

Saturday, August 21, 2010

Page 44: Cassandra FrOSCon 10

A

LT

W

F

P

YKey “C”

U

Xhint

Saturday, August 21, 2010

Page 45: Cassandra FrOSCon 10

A

LT

W

F

P

Y

U

Saturday, August 21, 2010

Page 46: Cassandra FrOSCon 10

A

LT

W

F

P

Y

U

Saturday, August 21, 2010

Page 47: Cassandra FrOSCon 10

A

LT

W

F

P

Y

U

Saturday, August 21, 2010

Page 48: Cassandra FrOSCon 10

Saturday, August 21, 2010

Page 49: Cassandra FrOSCon 10

Eventual Tuneable consistency

✤ ONE, QUORUM, ALL

✤ R + W > N

✤ Choose availability vs consistency (and latency)

Saturday, August 21, 2010

Page 50: Cassandra FrOSCon 10

Monitorable

Saturday, August 21, 2010

Page 51: Cassandra FrOSCon 10

Events

Saturday, August 21, 2010

Page 52: Cassandra FrOSCon 10

0

375

750

1125

1500

Jan(0.5)

Feb(0.5.1) Mar

Apr(0.6, 0.6.1)

May(0.6.2)

Jun(0.6.3)

Jul(0.6.4)

mails sent

Saturday, August 21, 2010

Page 53: Cassandra FrOSCon 10

Data model

✤ Twitter: “Fifteen months ago, it took two weeks to perform ALTER TABLE on the statuses [tweets] table.”

Saturday, August 21, 2010

Page 54: Cassandra FrOSCon 10

Columns

ColumnFamilies

Saturday, August 21, 2010

Page 55: Cassandra FrOSCon 10

Saturday, August 21, 2010

Page 56: Cassandra FrOSCon 10

SELECT * FROM tweetsWHERE user_id IN (SELECT follower FROM followers WHERE user_id = ?)ORDER BY time_tweeted DESCLIMIT 40

followers

?

tweets

timeline

?

uuid:tweet

Cassandra “indexes” are materialized views

SORT

Saturday, August 21, 2010

Page 57: Cassandra FrOSCon 10

Analytics in Cassandra

✤ @afex: “Cassandra + Pig (Hadoop) is very exciting. A 7 line script to analyze data from my entire cluster transparently, with no ETL? Yes, please”

Saturday, August 21, 2010

Page 58: Cassandra FrOSCon 10

TaskTracker

JobTracker

Saturday, August 21, 2010

Page 59: Cassandra FrOSCon 10

Coming in 0.7 [beta1 released 13/8]

✤ Secondary indexes and expressions

✤ Large (> 2GB) rows

✤ More control over replica placement

✤ Online schema changes

✤ Flow control

✤ Dynamic routing around slow nodes

Saturday, August 21, 2010

Page 61: Cassandra FrOSCon 10

Questions

Saturday, August 21, 2010