You are on page 1of 27

Project History

Description
People

An Introduction To Cassandra

Eric Evans
eevans@rackspace.com
@jericevans

OpenSQL Camp
November 14, 2009

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

A prophetess in Troy during the Trojan War. Her predictions were


always true, but never believed.

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

A massively scalable, decentralized, structured data store (aka


database).

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Outline

1 Project History

2 Description

3 People

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

4 new committers added


Dozens of contributors
60+ people on IRC
Hundreds of closed issues (bugs, features, etc)
2 major releases, 1 point release
0.5.0 RSN

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Outline

1 Project History

2 Description

3 People

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Cassandra is...

O(1) DHT
Eventual consistency
Tunable trade-offs, consistency vs. latency

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

But...

Values are structured, indexed


Columns / column families
Slicing w/ predicates (queries)

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Column families

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Supercolumn families

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Querying

By column
By column for multiple keys
Slice by names, or ranges of names
returning columns
returning super columns
Slice for multiple keys
Range of keys
Slice on a key range RSN

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Column comparators

TimeUUID
LexicalUUID
UTF8
Long
Bytes
...

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Updating

Insert column (by key)


Batch insert (multi-column but still by key)
Remove (by key)
Remove key range RSN

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Consistency

CAP Theorem: choose any two of Consistency, Availability, or


Partition tolerance.
Zero
One
Quorum ((N / 2) + 1)
All

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Client API

Thrift (12 different languages!)


Ruby
http://github.com/fauna/cassandra/tree/master
http://github.com/NZKoz/cassandra object/tree/master
Python
http://github.com/digg/lazyboy/tree/master
http://github.com/driftx/Telephus/tree/master (Twisted)
Scala
http://github.com/viktorklang/Cassidy/tree/master
http://github.com/nodeta/scalandra/tree/master

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Performance vs MySQL w/ 50GB

MySQL
300ms write
350ms read

Cassandra
0.12ms write
15ms read

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Writes

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

About writes...

No reads
No seeks
Sequential disk access
Atomic within a column family
Fast
Any node
Always writeable (hinted hand-off)

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Reads

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

About reads...

Any node
Read repair
Usual caching conventions apply

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Outline

1 Project History

2 Description

3 People

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

Droppin’ Names

Facebook
Digg
IBM Research
Rackspace
Twitter

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra


Project History
Description
People

http://incubator.apache.org/cassandra

#cassandra / irc.freenode.net

Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra

You might also like