cassandra concepts, patterns and anti-patterns dave gardner @ davegardnerisme apachecon eu 2012
DESCRIPTION
Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012. Agenda Choosing NoSQL Cassandra concepts (Dynamo and Big Table) Patterns and anti-patterns of use. Choosing NoSQL . Find data store that doesn’t use SQL Anything - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/1.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Cassandra concepts, patterns and anti-
patternsDave Gardner
@davegardnerismeApacheCon EU 2012
![Page 2: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/2.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Agenda
• Choosing NoSQL• Cassandra concepts
(Dynamo and Big Table)• Patterns and anti-patterns
of use
![Page 3: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/3.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Choosing NoSQL...
![Page 4: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/4.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
1. Find data store that doesn’t use SQL
2. Anything3. Cram all the things into it4. Triumphantly blog this
success5. Complain a month later when
it bursts into flames
http://www.slideshare.net/rbranson/how-do-i-cassandra/4
![Page 5: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/5.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
“NoSQL DBs trade off traditional features to better support new and emerging use cases”
http://www.slideshare.net/argv0/riak-use-cases-dissecting-the-solutions-to-hard-problems
![Page 6: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/6.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
More widely used, tested and documented software..(MySQL first OS release 1998)
.. for a relatively immature product(Cassandra first open-sourced in 2008)
![Page 7: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/7.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Ad-hoc querying..(SQL join, group by, having, order)
.. for a rich data model with limited ad-hoc querying ability(Cassandra makes you denormalise)
![Page 8: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/8.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
What do we get in return?
![Page 9: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/9.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Proven horizontal scalabilityCassandra scales reads and writes linearly as new nodes are added
![Page 10: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/10.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-
on.html
![Page 11: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/11.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
High availability
Cassandra is fault-resistant with tunable consistency levels
![Page 12: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/12.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Low latency, solid performanceCassandra has very good write performance
![Page 13: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/13.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
http://blog.cubrid.org/dev-platform/nosql-benchmarking/
* Add pinch of salt
![Page 14: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/14.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Operational simplicityHomogenous cluster, no “master” node, no SPOF
![Page 15: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/15.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Rich data modelCassandra is more than simple key-value – columns, composites, counters, secondary indexes
![Page 16: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/16.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Choosing NoSQL...
![Page 17: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/17.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
“they say … I can’t decide between this project and this project even though they look nothing like each other. And the fact that you can’t decide indicates that you don’t actually have a problem that requires them.”http://nosqltapes.com/video/benjamin-black-on-nosql-cloud-computing-and-fast_ip(at 30:15)
![Page 18: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/18.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Or you haven’t learned enough about them..
![Page 19: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/19.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
• What tradeoffs are you making?
• How is it designed?• What algorithms does it use?• Are the fundamental design
decisions sane?
http://www.alberton.info/nosql_databases_what_when_why_phpuk2011.html
![Page 20: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/20.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Concepts...
![Page 21: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/21.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Consistent hashingVector clocks *Gossip protocolHinted handoffRead repairhttp://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
ColumnarSSTable storage
Append-onlyMemtable
Compactionhttp://labs.google.com/papers/bigtable-osdi06.
pdf* not in Cassandra
Amazon Dynamo + Google Big Table
![Page 22: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/22.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
1
2
Client
tokens are integers from
0 to 2127
Distributed Hash Table
(DHT)
3
4
5
6
![Page 23: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/23.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
1
2
Client
Coordinator node 3
4
5
6
consistent hashing
Client
![Page 24: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/24.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
1
2
Client
replication factor (RF) 3
coordinator node 3
4
5
6
Client
![Page 25: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/25.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Consistency Level (CL)How many replicas must respond
to declare success?
![Page 26: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/26.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Level DescriptionONE 1st ResponseQUORUM N/2 + 1 replicasLOCAL_QUORUM N/2 + 1 replicas in local data centreEACH_QUORUM N/2 + 1 replicas in each data centreALL All replicas
http://wiki.apache.org/cassandra/API#Read
For read operations
![Page 27: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/27.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Level DescriptionANY One node, including hinted handoffONE One nodeQUORUM N/2 + 1 replicasLOCAL_QUORUM N/2 + 1 replicas in local data centreEACH_QUORUM N/2 + 1 replicas in each data centreALL All replicas
http://wiki.apache.org/cassandra/API#Write
For write operations
![Page 28: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/28.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
1
2
Client
coordinator node 3
4
5
6
Client
RF = 3CL =
Quorum
![Page 29: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/29.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Hinted HandoffA hint is written to the coordinator
node when a replica is down
http://wiki.apache.org/cassandra/HintedHandoff
![Page 30: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/30.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
1
2
Client
coordinator node 3
4
5
6
Client
RF = 3CL =
Quorum
node offline
hint
![Page 31: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/31.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Read RepairBackground digest query on-read
to find and update out-of-date replicas*
http://wiki.apache.org/cassandra/ReadRepair* carried out in the background unless
CL:ALL
![Page 32: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/32.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
1
2
Client
coordinator node 3
4
5
6
Client
RF = 3CL = One
background digest query,
then update out-of-date replicas
![Page 33: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/33.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Big Table...
![Page 34: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/34.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
• Sparse column based data model
• SSTable disk storage• Append-only commit log• Memtable (buffer and sort)• Immutable SSTable files• Compaction
http://research.google.com/archive/bigtable-osdi06.pdfhttp://www.slideshare.net/geminimobile/bigtable-4820829
![Page 35: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/35.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
+ timestamp
Name
Value
ColumnTimestamp used
for conflict resolution (last
write wins)
![Page 36: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/36.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Name
Value
Column
Name
Value
Column
Name
Value
Column
we can have millions of columns
*
* theoretically up to 2 billion
![Page 37: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/37.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Name
Value
Column
Name
Value
Column
Name
Value
Column
Row Key
Row
![Page 38: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/38.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Column Family
ColumnRow Key Colum
nColum
n
ColumnRow Key Colum
nColum
n
ColumnRow Key Colum
nColum
n
we can have billions of rows
![Page 39: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/39.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Write Memtable
SSTable
SSTable
SSTable
SSTable
Commit Log
Memory
Disk
Write path buffer writes and sort data
flush on time or size trigger
immutable
![Page 40: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/40.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Sorted data written to disk in blocks
Each “query” can be answered from a single slice
of disk
Therefore start from your queries and work backwards
![Page 41: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/41.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Patterns and anti-patterns...
![Page 42: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/42.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
![Page 43: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/43.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Storing entities as individual columns
under one row
Pattern
![Page 44: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/44.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
row: USERID1234
name: Daveemail: [email protected]: Developer
Pattern
we can use C* secondary indexes to fetch all users with job=developer
one row per user
![Page 45: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/45.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Storing whole entity as single
column blob
Anti-pattern
![Page 46: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/46.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
row: USERID1234
data: {"name":"Dave",
"email":"[email protected]", "job":"Developer"}
now we can’t use secondary indexes nor easily update safely
one row per user
Anti-pattern
![Page 47: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/47.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Mutate just the changes to
entities, make use of C* conflict
resolution
Pattern
![Page 48: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/48.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
$userCf->insert( "USER1234", array("job" => "Cruft") );
Pattern
we only update the “job” column, avoiding any race conditions on reading all properties and then writing all, having only updated one
![Page 49: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/49.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Lock, read, update
Anti-pattern
![Page 50: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/50.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Don’t overwrite anything; store as time series data
Pattern
![Page 51: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/51.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
row: USERID1234
a384cff0-26c1-11e2-81c1-0800200c9a66{"action":"create", "name":"Dave"}10dc4c40-26c2-11e2-81c1-0800200c9a66{"action":"update", "name":"foo"}
Pattern
column name is a type 1 UUID (time based)http://www.famkruithof.net/guid-uuid-timebased.html
one row per user; many columns (wide row)
![Page 52: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/52.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
We can store all sorts of stuff as
time series
http://rubyscale.com/2011/basic-time-series-with-cassandra/
Pattern
![Page 53: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/53.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Order Preserving Paritioner (OPP)
http://ria101.wordpress.com/2010/02/22/cassandra-randompartitioner-vs-orderpreservingpartitioner/
Anti-pattern
![Page 54: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/54.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Distributed counters
Pattern
![Page 55: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/55.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Super Columns(a trap for the unwary)
http://rubyscale.com/2010/beware-the-supercolumn-its-a-trap-for-the-unwary/
Anti-pattern
![Page 56: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/56.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
In conclusion...
![Page 57: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/57.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Cassandra is founded on sound design
principles
![Page 58: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/58.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
The data model is incredibly powerful
![Page 59: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/59.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
CQL and a new breedof clients are making
it easier to use
![Page 60: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/60.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Lots of tools and integrations exist to
expand the feature set
![Page 61: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/61.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
There is a strongcommunity and
multiple companies offering professional
support
![Page 62: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/62.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Thanks
Learn more about Cassandra (if you’re ever in London)meetup.com/Cassandra-London
Learn more about the fundamentalshttp://nosqlsummer.org/
Watch videos from Cassandra SF 2011http://www.datastax.com/events/cassandrasf2011/presentations
looking for a job?
![Page 63: Cassandra concepts, patterns and anti-patterns Dave Gardner @ davegardnerisme ApacheCon EU 2012](https://reader036.vdocument.in/reader036/viewer/2022062323/568163c3550346895dd4eba0/html5/thumbnails/63.jpg)
Cassandra concepts, patterns and anti-patterns - ApacheCon EU 2012
Extending functionalitySearch via Apache Solr and DataStax Enterprisehttp://www.datastax.com/technologies/solr
Batch processing via Apache Hadoop and DataStax Enterprisehttp://www.datastax.com/technologies/hadoop
Real-time analytics via Acunu Reflexhttp://www.acunu.com/acunu-analytics.html