1. 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
2. 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
3. Project History
Description
People
A massively scalable, decentralized, structured data store (aka
database).
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
4. Project History
Description
People
Outline
1 Project History
2 Description
3 People
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
5. Project History
Description
People
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
6. Project History
Description
People
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
7. Project History
Description
People
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
8. 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
9. Project History
Description
People
Outline
1 Project History
2 Description
3 People
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
10. 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
11. Project History
Description
People
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
12. 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
13. Project History
Description
People
Column families
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
14. Project History
Description
People
Supercolumn families
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
15. 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
16. Project History
Description
People
Column comparators
TimeUUID
LexicalUUID
UTF8
Long
Bytes
...
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
17. 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
18. 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
19. 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
20. 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
21. Project History
Description
People
Writes
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
22. 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
23. Project History
Description
People
Reads
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
24. Project History
Description
People
About reads...
Any node
Read repair
Usual caching conventions apply
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
25. Project History
Description
People
Outline
1 Project History
2 Description
3 People
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
26. Project History
Description
People
Droppin’ Names
Facebook
Digg
IBM Research
Rackspace
Twitter
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra
27. Project History
Description
People
http://incubator.apache.org/cassandra
#cassandra / irc.freenode.net
Eric Evans eevans@rackspace.com @jericevans An Introduction To Cassandra