SlideShare a Scribd company logo
1 of 39
Download to read offline
Apache Cassandra
http://cassandra.apache.org



        Benoit Perroud
    Software Engineer @Verisign
        & Apache Committer
  Geneva JUG, 26.02.2013
Agenda

β€’ NoSQL Quick Overview
β€’ Apache Cassandra Fundamentals
   – Design principles
   – Data & Query Model
β€’ Real Life Uses Cases
   – Illustrated in CQL3
β€’ Whatβ€Ÿs new in 1.2
β€’ Conclusion
β€’ Q&A


                                    2
NoSQL

β€’ [Wikipedia] NoSQL is a term used to designate database
  management systems that differ from classic relational
  database management systems (RDBMS) in some way.
  These data stores may not require fixed table schemas,
  usually avoid join operations, do not attempt to provide
  ACID properties and typically scale horizontally.

β€’ Pioneers : Google BigTable, Amazon Dynamo, etc.




                                                       3
Scalability

β€’ [Wikipedia] Scalability is a desirable property of a
  system, a network, or a process, which indicates its
  ability to either handle growing amounts of work in a
  graceful manner or to be readily enlarged.

β€’ Scalability in two dimensions :
   – Scale up β†’ scale vertically (increase RAM in an existing node)
   – Scale out β†’ scale horizontally (add a node to the cluster)


β€’ In summary : handle load and peaks.


                                                                  4
Availability

β€’ [Wikipedia] Availability refers to the ability of the users to
  access and use the system. If a user cannot access the
  system, it is said to be unavailable. Generally, the term
  downtime is used to refer to periods when a system is
  unavailable.
β€’ In summary : minimize downtime.




                                                            5
CAP Theorem

β€’ Consistency : all nodes see the same data at the same
  time
β€’ Availability : node failures do not prevent survivors from
  continuing to operate
β€’ Partition Tolerance : the system continues to operate
  despite arbitrary message loss

β€’ According to the theorem, a distributed system can
  satisfy any two of these guarantees at the same time, but
  not all three.

                                                          6
NoSQL Promises

β€’ Scale horizontally
   – Double computational power or storage by doubling size of the
     cluster. Cluster shrinking should also be true (tight provisioning)
   – Adding nodes to the cluster in constant time
β€’ High availability
   – No / few / under control SPoF
β€’ On commodity hardware
   – 32 cores, 64GB RAM, 12x2TB HDD IS commodity hardware 


β€’ Let see how Cassandra achieves all of these


                                                                      7
Apache Cassandra

β€’ Apache Cassandra is could be simplified as a scalable,
  distributed, sparse and eventually consistent hash
  map. But it's actually way more.
β€’ Originally developed by Facebook, hit AFS incubator
  early 2008, version 1.0 in 2010, version 1.2 early 2013
β€’ Inspired from Amazon Dynamo and Google BigTable
β€’ Version at time of speaking 1.2.2
β€’ Under high development by several startups : Datastax,
  Acunu, Netflix, Twitter, Rackspace, …



                                                       8
Apache Cassandra is a scalable distributed,
      sparse, eventually consistent hash map

β€’ Gossip protocol (spreading states like a rumor)
β€’ Consistent hashing
   – Node responsible for key range and replica sets
β€’ Replication factor (RF) to achieve persistence
β€’ No single point of failure
                                              100% keyspace
                                           0


β€’ Key space is 2^128 bits           87            12
                                             ?                             ?



       More on this later               75        Take half of key range            25
       with VNodes                      ?
                                                  of most loaded node               ?



                                             62                                37
                                             ?                                 ?

                                                             50
                                  Take half of key range                                 9
                                  of most loaded node
Apache Cassandra is a scalable distributed,
     sparse, eventually consistent hash map

β€’ Schemaless
   – A schema (metadata) may be determined for convenience
   – Column names are stored for every rows
β€’ [Wikipedia] Bloom filter is a space-efficient probabilistic
  data structure that is used to test whether an element is a
  member of a set.




                                                             10
Apache Cassandra is a scalable distributed,
     sparse, eventually consistent hash map

β€’ [Wikipedia] A quorum is the minimum number of votes
  that a distributed transaction has to obtain in order to be
  allowed to perform an operation in a distributed system.
  A quorum-based technique is implemented to enforce
  consistent operation in a distributed system.

β€’ Quorum : W + R > N
   – N : number of replica, R : number of node read, W : number of
     node written.
   – Condition met when:
       β€’ R = 1, W = N
       β€’ R = N, W = 1
       β€’ R = N/2, W = N/2 (+1 if N is even)                      11
Apache Cassandra is a scalable distributed,
     sparse, eventually consistent hash map

β€’ Key space [0,99], previously put(22, 1, t1)
β€’ Replication factor 2
β€’ Consistency : ONE
                               coordinator              0




             Put (22, 2, t2)
                                    80                                     20




                                                  Async put(22,2, t2)
                                             60                       40

                                                                                owner

                                                            replica                     12
Apache Cassandra is a scalable distributed,
     sparse, eventually consistent hash map

β€’ Key space [0,99], previously put(13, 1, t1)
β€’ Replication factor 3
β€’ Consistency : QUORUM (R = 2, W = 2)

                                                  0



                                                 Read(13) = 2, t2
             Put (13, 2, t2)                Put (13, 2, t2)
                               80                                   20




                                    Read(13) = 1, t1
                                    Read repair
                                       60                    40



                                                                         13
Apache Cassandra is a scalable distributed,
     sparse, eventually consistent hash map

β€’ Can be seen as a multilevel map :
  Map of SortedMap of Objects

β€’ Keyspace > ColumnFamily > row > column name = value
   – # use keyspace1;
   – # set ColumnFamily1['key1']['columName1'] = 'value1';
   – # get ColumnFamily1['key1']['columName1'];




                                                             14
Data Model : Keyspace

Keyspace > ColumnFamily > row > column name = value

β€’ Equivalent to database name in SQL world
β€’ Define replication factor and network topology
   – Network topology include multi datacenters topology
   – Replication factor can be defined per datacenters




                                                           15
Data Model : Column Family

Keyspace > ColumnFamily > row > column name = value

β€’ Equivalent to table name in SQL world
   – Term may change in upcoming releases to stop confusing users
β€’ Define
   – Type of the keys
   – Column name comparator
   – Additional metadata (types of certain known columns)




                                                              16
Data Model : Row

Keyspace > ColumnFamily > row > column name = value

β€’ Defined by the key.
   – Eventually stored to a node and it's replicas
β€’ Keys are typed
β€’ 2 strategies of key partitioner on the key space
   – Random partitioner
       β€’ md5(key), murmur3(key), evenly distribute keys on nodes
   – Byte Ordered partitioner
       β€’ Keep order while iterating through the keys, may lead to hot spots



                                                                         17
Data Model : Column Name

    Keyspace > ColumnFamily > row > column name = value
    β€’    Could be seen as column in SQL world
    β€’    Not mandatory to be declared
          – If declared, their corresponding values have types
          – Or secondary index
    β€’    Ordered
    β€’    Column Names are often used as values
                                                      Column names
          Event1

Column
Family        24.04.2012             07:00                  08:00
                                     239                    255
                                                                     18
              Row key                              Values
Data Model : Value

Keyspace > ColumnFamily > row > column name = value

β€’ Can be typed, seen as array of bytes otherwise
β€’ Existing types include
   –   Bytes
   –   Strings (ASCII or UTF-8 strings)
   –   Integer, Long, Float, Double, Decimal
   –   UUID, dates
   –   Counters (of long)
β€’ Can expire
β€’ No foreign keys (!)
                                                   19
Write path

1.   Write to commit log
                                   Memory
2.   Update MemTable                 CF1
                                    MemTable
                                                 CF2
                                                MemTable
                                                                    CFn
                                                                   MemTable
                                                               …
3.   Acknowledge the client
4.   When MemTable reaches a       Disks
                                                 CF1                CFn
                                   Commit log
     threshold, flush to disk as                Bloom filter   …    SSTable

     SSTable                                       Index

                                                   Data




                                                   …
                                                 SSTable            SSTable




                                                                       20
Read path

β€’ Versions of the same column
                                           Memory
  can be spread at the same time             CF1         CF2                CFn
                                            MemTable    MemTable           MemTable
                                                                       …
   – In the MemTable
   – In the MemTable being flushed         Disks
   – In one or multiple SSTable            Commit log
                                                         CF1                CFn

                                                                       …
β€’ All versions read, and resolved /
                                                        Bloom filter
                                                                            SSTable
                                                           Index

  merged using timestamp                                   Data




                                                           …
   – Keys and Rows cache
                                                         SSTable            SSTable
   – Bloom filters allow to skip reading
     unnecessary SSTables
   – SSTables are indexed
   – Compaction keep things
     reasonable                                                                21
Compaction

β€’   Runs regularly as a background operation
β€’   Merge SSTables together
β€’   Remove expired and deleted values
β€’   Has impact on general I/O availability (and thus
    performance)
     – This is where most of tuning happens
     – Can be throttled
β€’ Two type of compaction
     – Size-tiered
            β€’ Fewer I/O consumption οƒ  write-heavy workload
     – Leveled
            β€’ Guarantee to read from fewer SSTables οƒ  read-heavy workload
β€’   See http://www.datastax.com/dev/blog/leveled-compaction-in-apache-cassandra for complete details.   22
Query Model

β€’ Thrift API
   – CLI
   – Higher level third-party libraries
       β€’   Hector
       β€’   Pycassa
       β€’   Phpyandra
       β€’   Astyanax
       β€’   Helenus
β€’ CQL (Cassandra Query Language)
   – And newly CQL3 released with C*1.2



                                          23
Query Model

β€’ Cassandra is more than a key – value store.
   –   Get
   –   Put
   –   Delete
   –   Update
   –   But also various range queries
        β€’ Key range
        β€’ Column range (slice)
   – Secondary indexes




                                                24
Query Model : Get

β€’ Get single key
                     – Give me key β€žaβ€Ÿ
β€’ Get multiple keys
                     – Give me rows for keys β€žaβ€Ÿ, β€žcβ€Ÿ, β€ždβ€Ÿ and β€žfβ€Ÿ
                                         Ordered regarding column name comparator

                                  β€˜1’       β€˜2’           β€˜3’          β€˜4’          β€˜5’
                        β€žcβ€Ÿ       8         9             10                        11
                        β€žeβ€Ÿ                 12            13                        14
RandomPartitionner




                        β€žfβ€Ÿ       15                                   16           17
                        β€žaβ€Ÿ                 18
                        β€žbβ€Ÿ       19        20                                      20
                        β€ždβ€Ÿ       22        23            24           25           26
                                                                                          25
Query Model : Get Range

β€’ Range
  – Query for a range of key
      β€’ Give me all rows with keys between β€žcβ€Ÿ and β€žfβ€Ÿ.
      β€’ Mind the partitioner.



               β€˜1’       β€˜2’       β€˜3’        β€˜4’         β€˜5’
     β€žcβ€Ÿ       8         9         10                     11
     β€žeβ€Ÿ                 12        13                     14
     β€žfβ€Ÿ       15                             16          17
     β€žaβ€Ÿ                 18
     β€žbβ€Ÿ       19        20                               20
     β€ždβ€Ÿ       22        23        24         25          26
                                                                26
Query Model : Get Slice

β€’ Slice
   – Query for a slice of columns
       β€’ For key β€žcβ€Ÿ, give me all columns between β€ž3β€Ÿ and β€ž5β€Ÿ
       β€’ For key β€ždβ€Ÿ, give me all columns between β€ž3β€Ÿ and β€ž5β€Ÿ



                β€˜1’       β€˜2’       β€˜3’        β€˜4’       β€˜5’
      β€žcβ€Ÿ       8         9         10                   11
      β€žeβ€Ÿ                 12        13                   14
      β€žfβ€Ÿ       15                             16        17
      β€žaβ€Ÿ                 18
      β€žbβ€Ÿ       19        20                             20
      β€ždβ€Ÿ       22        23        24         25        26
                                                                27
Query Model : Get Range Slice

β€’ Range and Slice can be combined : rangeSliceQuery
   – For keys between β€žbβ€Ÿ and β€ždβ€Ÿ, give me columns between β€ž2β€Ÿ and β€ž4β€Ÿ




               β€˜1’      β€˜2’      β€˜3’     β€˜4’      β€˜5’
      β€žaβ€Ÿ      8        9        10               11
      β€žbβ€Ÿ               12       13               14
      β€žcβ€Ÿ      15                        16       17
      β€ždβ€Ÿ               18
      β€žeβ€Ÿ      19       20                        20
      β€žfβ€Ÿ      22       23       24      25       26
                                                                 28
Query Model : Secondary Index

β€’ Secondary Index
  – Give me all rows where value for column β€ž2β€Ÿ is β€ž12β€Ÿ




              β€˜1’      β€˜2’      β€˜3’      β€˜4’       β€˜5’
     β€žaβ€Ÿ      8        9        10                 11
     β€žbβ€Ÿ               12       13                 14
     β€žcβ€Ÿ      15                         16        17
     β€ždβ€Ÿ               18
     β€žeβ€Ÿ      19       20                          20
     β€žfβ€Ÿ      22       23       24       25        26
                                                          29
Real Life Use Case : Doodle Clone

β€’ Living demo http://doodle.noisette.ch
   Data model
     Polls { id, label, [choices], email, limit, [ subscribers ] }
β€’ Id generation
   – TimeUUID is your friend
β€’ Avoid super column families
   – Use composite, or CQL3 
β€’ Subscriberβ€Ÿs name uniqueness per poll ?
   – Cassandra anti-pattern (read after write)
β€’ Limit to n subscribers per option ?
   – Cassandra anti-pattern (read after write)
                                                                     31
Real Life Use Case : Doodle Clone
CREATE KEYSPACE Doodle
           WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};
USE doodle;
CREATE TABLE Polls (
    id uuid,
    label text,
    choices list<text>,
    email text,
    maxChoices int,
    subscribers list<text>,
    PRIMARY KEY (id)
) WITH compaction = { 'class' : 'LeveledCompactionStrategy' }
  AND read_repair_chance = 0.0;
INSERT INTO Polls (id, label, email, choices) VALUES (eba080a0-8011-11e2-9e96-0800200c9a66,
    'Test poll1', 'benoit@noisette.ch', ['Monday', 'Tuesday', 'Wednesday', 'Thursday',
    'Friday']);
UPDATE Polls SET subscribers = subscribers + [ 'Benoit' ] WHERE id = eba080a0-8011-11e2-9e96-
    0800200c9a66;
UPDATE Polls SET subscribers = subscribers + [ 'Maxime', 'Nicolas' ] WHERE id = eba080a0-8011-
    11e2-9e96-0800200c9a66;
DELETE subscribers[0] FROM Polls WHERE id = eba080a0-8011-11e2-9e96-0800200c9a66;




                                                                                          32
Real Life Use Case : Heavy Writes

β€’ Cassandra is a really good fit when the ratio read / write
  is close to 0
   – Event logging / redo logs
   – Time series
β€’ Best practice to write data in its raw format
  AND in aggregated forms at the same time
β€’ But need compation tuning
   – {min,max}_compaction_threshold
   – memtable_flush_writers
   – … no magic solution here, only pragmatic approach
       β€’ change configuration in one node, and mesure the difference (load, latency, …)



                                                                                          33
Real Life Use Case : Counters

β€’ Cassandra >= 0.8 (CASSANDRA-1072)
   CREATE TABLE Events (id uuid, count counter, PRIMARY KEY (id));
   UPDATE Events SET count = count + 1 WHERE id = 95b64d72-8014-11e2-9e96-0800200c9a66;




β€’ Example
  counterCF['entity1'][2012-06-14       18:30:00]
  counterCF['entity1'][2012-06-14       18:30:05]           Query per entity
  counterCF['entity1'][2012-06-14       18:30:10]           number of hits for β€žentity1β€Ÿ
  …                                                         between 18:30:00 and 19:00:00
  counterCF['entity2'][2012-06-14       18:30:05]

  counterCF[2012-06-14     18:30:00]['entity1']
  counterCF[2012-06-14     18:30:00]['entity2']              Query per date range
  counterCF[2012-06-14     18:30:00]['entity3']              all entities being hit between
  …                                                          18:30:00 and 19:00:00
  counterCF[2012-06-14     18:30:05]['entity1']              ! need complete date enumeration




                                                                                                34
Real Life Use Case : Bulk Loading

β€’ Data is transformed (e.g. using MapReduce)
β€’ Data is bulk loaded
   – ColumFamilyOutputFormat (< v1.1)
      β€’ Not real bulk loading
   – BulkOutputFormat (>= v1.1)
      β€’ SSTable generated during the tranformation, and streamed
β€’ Prefer Leveled Compaction Strategy
   – Reduce read latency
   – Size sstable_size_in_mb to your data




                                                                   35
Real Life Use Case : Bulk Loading

β€’ Data is transformed (e.g. using MapReduce)
β€’ Data is bulk loaded
   – ColumFamilyOutputFormat (< v1.1)
      β€’ Not real bulk loading
   – BulkOutputFormat (>= v1.1)
      β€’ SSTable generated during the tranformation, and streamed
β€’ Prefer Leveled Compaction Strategy
   – Reduce read latency
   – Size sstable_size_in_mb to your data




                                                                   36
Real Life Use Case : Ξ» Architecture

β€’ Enabling real-time queries to end-users
   – β€œHybrid Approach to Enable Real-Time Queries to End-Users”,
     Software Developer Journal February 2013




                                                              37
Whatβ€Ÿs New in 1.2

 β€’ CQL3
       – http://cassandra.apache.org/doc/cql3/CQL.html
 β€’ Virtual Nodes (vnodes)




 β€’    Atomic batches
 β€’    Murmur3Partitioner
 β€’    Off-heap SSTable metadata
 β€’    Query tracing
 β€’    … a lot more …                                                                                          38

Illustrations credits to Datastax, http://www.datastax.com/dev/blog/upgrading-an-existing-cluster-to-vnodes
Conclusion

β€’ Cassandra is not a general purpose solution
β€’ But Cassandra is doing a really good job if used
  accordingly
   – Really good scalability
       β€’ Netflixβ€Ÿs 1M w/s on AWS
         http://techblog.netflix.com/2011/11/benchmarking-cassandra-
         scalability-on.html
   – Low operational cost
       β€’ Admin friendly, no SPoF, Vnodes, snapshot, …
   – Advanced data and query model




                                                                       39
Thanks for your attention

β€’ Questions?

     benoit@noisette.ch
     @killerwhile

β€’ No? Cool … ApΓ©ro 




                                   40

More Related Content

What's hot

Introduction to Apache Cassandra
Introduction to Apache CassandraIntroduction to Apache Cassandra
Introduction to Apache CassandraRobert Stupp
Β 
Introduction to Cassandra
Introduction to CassandraIntroduction to Cassandra
Introduction to CassandraSoftwareMill
Β 
Apache Cassandra training. Overview and Basics
Apache Cassandra training. Overview and BasicsApache Cassandra training. Overview and Basics
Apache Cassandra training. Overview and BasicsOleg Magazov
Β 
Cassandra overview
Cassandra overviewCassandra overview
Cassandra overviewSean Murphy
Β 
Cassandra architecture
Cassandra architectureCassandra architecture
Cassandra architectureT Jake Luciani
Β 
The Cassandra Distributed Database
The Cassandra Distributed DatabaseThe Cassandra Distributed Database
The Cassandra Distributed DatabaseEric Evans
Β 
Apache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinApache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinChristian Johannsen
Β 
NoSQL overview implementation free
NoSQL overview implementation freeNoSQL overview implementation free
NoSQL overview implementation freeBenoit Perroud
Β 
Apache Cassandra overview
Apache Cassandra overviewApache Cassandra overview
Apache Cassandra overviewElifTech
Β 
Cassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patternsCassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patternsDave Gardner
Β 
Presentation of Apache Cassandra
Presentation of Apache Cassandra Presentation of Apache Cassandra
Presentation of Apache Cassandra Nikiforos Botis
Β 
Introduction to cassandra
Introduction to cassandraIntroduction to cassandra
Introduction to cassandraNguyen Quang
Β 
Cassandra Database
Cassandra DatabaseCassandra Database
Cassandra DatabaseYounesCharfaoui
Β 
Cassandra: Open Source Bigtable + Dynamo
Cassandra: Open Source Bigtable + DynamoCassandra: Open Source Bigtable + Dynamo
Cassandra: Open Source Bigtable + Dynamojbellis
Β 
Cassandra background-and-architecture
Cassandra background-and-architectureCassandra background-and-architecture
Cassandra background-and-architectureMarkus Klems
Β 
Cassandra Day Atlanta 2015: Introduction to Apache Cassandra & DataStax Enter...
Cassandra Day Atlanta 2015: Introduction to Apache Cassandra & DataStax Enter...Cassandra Day Atlanta 2015: Introduction to Apache Cassandra & DataStax Enter...
Cassandra Day Atlanta 2015: Introduction to Apache Cassandra & DataStax Enter...DataStax Academy
Β 
Intro to cassandra
Intro to cassandraIntro to cassandra
Intro to cassandraAaron Ploetz
Β 

What's hot (20)

Introduction to Apache Cassandra
Introduction to Apache CassandraIntroduction to Apache Cassandra
Introduction to Apache Cassandra
Β 
Introduction to Cassandra
Introduction to CassandraIntroduction to Cassandra
Introduction to Cassandra
Β 
Apache Cassandra training. Overview and Basics
Apache Cassandra training. Overview and BasicsApache Cassandra training. Overview and Basics
Apache Cassandra training. Overview and Basics
Β 
Cassandra overview
Cassandra overviewCassandra overview
Cassandra overview
Β 
Cassandra architecture
Cassandra architectureCassandra architecture
Cassandra architecture
Β 
The Cassandra Distributed Database
The Cassandra Distributed DatabaseThe Cassandra Distributed Database
The Cassandra Distributed Database
Β 
Intro to Cassandra
Intro to CassandraIntro to Cassandra
Intro to Cassandra
Β 
Apache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinApache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek Berlin
Β 
NoSQL overview implementation free
NoSQL overview implementation freeNoSQL overview implementation free
NoSQL overview implementation free
Β 
Cassandra 101
Cassandra 101Cassandra 101
Cassandra 101
Β 
Apache Cassandra overview
Apache Cassandra overviewApache Cassandra overview
Apache Cassandra overview
Β 
Cassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patternsCassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patterns
Β 
Presentation of Apache Cassandra
Presentation of Apache Cassandra Presentation of Apache Cassandra
Presentation of Apache Cassandra
Β 
Introduction to cassandra
Introduction to cassandraIntroduction to cassandra
Introduction to cassandra
Β 
Cassandra Database
Cassandra DatabaseCassandra Database
Cassandra Database
Β 
Cassandra: Open Source Bigtable + Dynamo
Cassandra: Open Source Bigtable + DynamoCassandra: Open Source Bigtable + Dynamo
Cassandra: Open Source Bigtable + Dynamo
Β 
Cassandra background-and-architecture
Cassandra background-and-architectureCassandra background-and-architecture
Cassandra background-and-architecture
Β 
Cassandra training
Cassandra trainingCassandra training
Cassandra training
Β 
Cassandra Day Atlanta 2015: Introduction to Apache Cassandra & DataStax Enter...
Cassandra Day Atlanta 2015: Introduction to Apache Cassandra & DataStax Enter...Cassandra Day Atlanta 2015: Introduction to Apache Cassandra & DataStax Enter...
Cassandra Day Atlanta 2015: Introduction to Apache Cassandra & DataStax Enter...
Β 
Intro to cassandra
Intro to cassandraIntro to cassandra
Intro to cassandra
Β 

Viewers also liked

Master en Direccion de Restaurantes y F & B Hotelero. EdiciΓ³n de Valencia
Master en Direccion de Restaurantes y F & B Hotelero. EdiciΓ³n de ValenciaMaster en Direccion de Restaurantes y F & B Hotelero. EdiciΓ³n de Valencia
Master en Direccion de Restaurantes y F & B Hotelero. EdiciΓ³n de ValenciaFlorida Universitaria
Β 
A Fun, Fit Future - SXSW Future 15 Talk - Florian Gschwandtner - Runtastic
A Fun, Fit Future - SXSW Future 15 Talk - Florian Gschwandtner - RuntasticA Fun, Fit Future - SXSW Future 15 Talk - Florian Gschwandtner - Runtastic
A Fun, Fit Future - SXSW Future 15 Talk - Florian Gschwandtner - RuntasticFlorian Gschwandtner
Β 
BoletΓ­n Informativo sobre Gobierno ElectrΓ³nico de octubre
BoletΓ­n Informativo sobre Gobierno ElectrΓ³nico de octubreBoletΓ­n Informativo sobre Gobierno ElectrΓ³nico de octubre
Boletín Informativo sobre Gobierno Electrónico de octubreONGEI PERÚ
Β 
Webinar 4 Export Import Marketing 2
Webinar 4 Export Import Marketing 2Webinar 4 Export Import Marketing 2
Webinar 4 Export Import Marketing 2STC International
Β 
communicode referenz casestudy bessey
communicode referenz casestudy besseycommunicode referenz casestudy bessey
communicode referenz casestudy besseycommunicode AG
Β 
Cirugia de la epilepsia infantil
Cirugia de la epilepsia infantilCirugia de la epilepsia infantil
Cirugia de la epilepsia infantilJOSEBUN33
Β 
BoletΓ­n Informativo de MERCATENERIFE Especial Navidad 2008
BoletΓ­n Informativo de MERCATENERIFE Especial Navidad 2008BoletΓ­n Informativo de MERCATENERIFE Especial Navidad 2008
BoletΓ­n Informativo de MERCATENERIFE Especial Navidad 2008MERCATENERIFE
Β 
Ibrahim abou ramadan cv 2015
Ibrahim abou ramadan cv 2015Ibrahim abou ramadan cv 2015
Ibrahim abou ramadan cv 2015Ibrahim Abou ramadan
Β 
Rotary Club El Rimac - BoletΓ­n Junio 2016
Rotary Club El Rimac - BoletΓ­n Junio 2016Rotary Club El Rimac - BoletΓ­n Junio 2016
Rotary Club El Rimac - BoletΓ­n Junio 2016Rotary Club El Rimac
Β 
Profucom Alianzas & Servicios
Profucom Alianzas & ServiciosProfucom Alianzas & Servicios
Profucom Alianzas & Serviciosrosslili
Β 
Mas anglada (esp), adamas villas- Luxury villa rentals
Mas anglada (esp), adamas villas- Luxury villa rentalsMas anglada (esp), adamas villas- Luxury villa rentals
Mas anglada (esp), adamas villas- Luxury villa rentalsAdamas Villas
Β 
Meritocracy and Elitism in a Global City: Ideological Shifts in Singapore
Meritocracy and Elitism in a Global City: Ideological Shifts in SingaporeMeritocracy and Elitism in a Global City: Ideological Shifts in Singapore
Meritocracy and Elitism in a Global City: Ideological Shifts in SingaporeJames Chan
Β 
Tres grandes filosofos de la Grecia Clasica
Tres grandes filosofos de la Grecia ClasicaTres grandes filosofos de la Grecia Clasica
Tres grandes filosofos de la Grecia ClasicaSara Galindo
Β 
Murales Vitoria Gasteiz
Murales Vitoria GasteizMurales Vitoria Gasteiz
Murales Vitoria Gasteizolgalumendieta
Β 

Viewers also liked (20)

Master en Direccion de Restaurantes y F & B Hotelero. EdiciΓ³n de Valencia
Master en Direccion de Restaurantes y F & B Hotelero. EdiciΓ³n de ValenciaMaster en Direccion de Restaurantes y F & B Hotelero. EdiciΓ³n de Valencia
Master en Direccion de Restaurantes y F & B Hotelero. EdiciΓ³n de Valencia
Β 
A Fun, Fit Future - SXSW Future 15 Talk - Florian Gschwandtner - Runtastic
A Fun, Fit Future - SXSW Future 15 Talk - Florian Gschwandtner - RuntasticA Fun, Fit Future - SXSW Future 15 Talk - Florian Gschwandtner - Runtastic
A Fun, Fit Future - SXSW Future 15 Talk - Florian Gschwandtner - Runtastic
Β 
Luminarias y direcciΓ³n de la luz
Luminarias y direcciΓ³n de la luzLuminarias y direcciΓ³n de la luz
Luminarias y direcciΓ³n de la luz
Β 
BoletΓ­n Informativo sobre Gobierno ElectrΓ³nico de octubre
BoletΓ­n Informativo sobre Gobierno ElectrΓ³nico de octubreBoletΓ­n Informativo sobre Gobierno ElectrΓ³nico de octubre
BoletΓ­n Informativo sobre Gobierno ElectrΓ³nico de octubre
Β 
Webinar 4 Export Import Marketing 2
Webinar 4 Export Import Marketing 2Webinar 4 Export Import Marketing 2
Webinar 4 Export Import Marketing 2
Β 
communicode referenz casestudy bessey
communicode referenz casestudy besseycommunicode referenz casestudy bessey
communicode referenz casestudy bessey
Β 
Cirugia de la epilepsia infantil
Cirugia de la epilepsia infantilCirugia de la epilepsia infantil
Cirugia de la epilepsia infantil
Β 
BoletΓ­n Informativo de MERCATENERIFE Especial Navidad 2008
BoletΓ­n Informativo de MERCATENERIFE Especial Navidad 2008BoletΓ­n Informativo de MERCATENERIFE Especial Navidad 2008
BoletΓ­n Informativo de MERCATENERIFE Especial Navidad 2008
Β 
Ibrahim abou ramadan cv 2015
Ibrahim abou ramadan cv 2015Ibrahim abou ramadan cv 2015
Ibrahim abou ramadan cv 2015
Β 
Rotary Club El Rimac - BoletΓ­n Junio 2016
Rotary Club El Rimac - BoletΓ­n Junio 2016Rotary Club El Rimac - BoletΓ­n Junio 2016
Rotary Club El Rimac - BoletΓ­n Junio 2016
Β 
32 59 orfebre www.gftaognosticaespiritual.org
32 59 orfebre www.gftaognosticaespiritual.org32 59 orfebre www.gftaognosticaespiritual.org
32 59 orfebre www.gftaognosticaespiritual.org
Β 
Profucom Alianzas & Servicios
Profucom Alianzas & ServiciosProfucom Alianzas & Servicios
Profucom Alianzas & Servicios
Β 
English food
English foodEnglish food
English food
Β 
Mas anglada (esp), adamas villas- Luxury villa rentals
Mas anglada (esp), adamas villas- Luxury villa rentalsMas anglada (esp), adamas villas- Luxury villa rentals
Mas anglada (esp), adamas villas- Luxury villa rentals
Β 
El protagonista es usted: Ahora el ciudadano comΓΊn y corriente no particularm...
El protagonista es usted: Ahora el ciudadano comΓΊn y corriente no particularm...El protagonista es usted: Ahora el ciudadano comΓΊn y corriente no particularm...
El protagonista es usted: Ahora el ciudadano comΓΊn y corriente no particularm...
Β 
ArtΓ­culo cinco dΓ­as
ArtΓ­culo cinco dΓ­asArtΓ­culo cinco dΓ­as
ArtΓ­culo cinco dΓ­as
Β 
Meritocracy and Elitism in a Global City: Ideological Shifts in Singapore
Meritocracy and Elitism in a Global City: Ideological Shifts in SingaporeMeritocracy and Elitism in a Global City: Ideological Shifts in Singapore
Meritocracy and Elitism in a Global City: Ideological Shifts in Singapore
Β 
Pregonero10
Pregonero10Pregonero10
Pregonero10
Β 
Tres grandes filosofos de la Grecia Clasica
Tres grandes filosofos de la Grecia ClasicaTres grandes filosofos de la Grecia Clasica
Tres grandes filosofos de la Grecia Clasica
Β 
Murales Vitoria Gasteiz
Murales Vitoria GasteizMurales Vitoria Gasteiz
Murales Vitoria Gasteiz
Β 

Similar to Apache Cassandra @Geneva JUG 2013.02.26

Cassandra talk @JUG Lausanne, 2012.06.14
Cassandra talk @JUG Lausanne, 2012.06.14Cassandra talk @JUG Lausanne, 2012.06.14
Cassandra talk @JUG Lausanne, 2012.06.14Benoit Perroud
Β 
04-Introduction-to-CassandraDB-.pdf
04-Introduction-to-CassandraDB-.pdf04-Introduction-to-CassandraDB-.pdf
04-Introduction-to-CassandraDB-.pdfhothyfa
Β 
Talk about apache cassandra, TWJUG 2011
Talk about apache cassandra, TWJUG 2011Talk about apache cassandra, TWJUG 2011
Talk about apache cassandra, TWJUG 2011Boris Yen
Β 
Talk About Apache Cassandra
Talk About Apache CassandraTalk About Apache Cassandra
Talk About Apache CassandraJacky Chu
Β 
Cassandra integrations
Cassandra integrationsCassandra integrations
Cassandra integrationsT Jake Luciani
Β 
Cassandra for Sysadmins
Cassandra for SysadminsCassandra for Sysadmins
Cassandra for SysadminsNathan Milford
Β 
NoSQL - Cassandra & MongoDB.pptx
NoSQL -  Cassandra & MongoDB.pptxNoSQL -  Cassandra & MongoDB.pptx
NoSQL - Cassandra & MongoDB.pptxNaveen Kumar
Β 
Scaling web applications with cassandra presentation
Scaling web applications with cassandra presentationScaling web applications with cassandra presentation
Scaling web applications with cassandra presentationMurat Γ‡akal
Β 
Cassandra Learning
Cassandra LearningCassandra Learning
Cassandra LearningEhsan Javanmard
Β 
Cassandra - A Distributed Database System
Cassandra - A Distributed Database System Cassandra - A Distributed Database System
Cassandra - A Distributed Database System Md. Shohel Rana
Β 
Cassandra
CassandraCassandra
CassandraCarbo Kuo
Β 
NoSQL Session II
NoSQL Session IINoSQL Session II
NoSQL Session IIRoopa Chandran
Β 
Vitalii Bondarenko - β€œAzure real-time analytics and kappa architecture with K...
Vitalii Bondarenko - β€œAzure real-time analytics and kappa architecture with K...Vitalii Bondarenko - β€œAzure real-time analytics and kappa architecture with K...
Vitalii Bondarenko - β€œAzure real-time analytics and kappa architecture with K...Lviv Startup Club
Β 
Cassndra (4).pptx
Cassndra (4).pptxCassndra (4).pptx
Cassndra (4).pptxNikhilAmauriya
Β 
NoSql Database
NoSql DatabaseNoSql Database
NoSql DatabaseSuresh Parmar
Β 
Cassandra
CassandraCassandra
Cassandraexsuns
Β 
The No SQL Principles and Basic Application Of Casandra Model
The No SQL Principles and Basic Application Of Casandra ModelThe No SQL Principles and Basic Application Of Casandra Model
The No SQL Principles and Basic Application Of Casandra ModelRishikese MR
Β 
Cassandra - A decentralized storage system
Cassandra - A decentralized storage systemCassandra - A decentralized storage system
Cassandra - A decentralized storage systemArunit Gupta
Β 
Apache Cassandra, part 1 – principles, data model
Apache Cassandra, part 1 – principles, data modelApache Cassandra, part 1 – principles, data model
Apache Cassandra, part 1 – principles, data modelAndrey Lomakin
Β 

Similar to Apache Cassandra @Geneva JUG 2013.02.26 (20)

Cassandra talk @JUG Lausanne, 2012.06.14
Cassandra talk @JUG Lausanne, 2012.06.14Cassandra talk @JUG Lausanne, 2012.06.14
Cassandra talk @JUG Lausanne, 2012.06.14
Β 
04-Introduction-to-CassandraDB-.pdf
04-Introduction-to-CassandraDB-.pdf04-Introduction-to-CassandraDB-.pdf
04-Introduction-to-CassandraDB-.pdf
Β 
Talk about apache cassandra, TWJUG 2011
Talk about apache cassandra, TWJUG 2011Talk about apache cassandra, TWJUG 2011
Talk about apache cassandra, TWJUG 2011
Β 
Talk About Apache Cassandra
Talk About Apache CassandraTalk About Apache Cassandra
Talk About Apache Cassandra
Β 
Cassandra integrations
Cassandra integrationsCassandra integrations
Cassandra integrations
Β 
Cassandra for Sysadmins
Cassandra for SysadminsCassandra for Sysadmins
Cassandra for Sysadmins
Β 
NoSQL - Cassandra & MongoDB.pptx
NoSQL -  Cassandra & MongoDB.pptxNoSQL -  Cassandra & MongoDB.pptx
NoSQL - Cassandra & MongoDB.pptx
Β 
Scaling web applications with cassandra presentation
Scaling web applications with cassandra presentationScaling web applications with cassandra presentation
Scaling web applications with cassandra presentation
Β 
Cassandra Learning
Cassandra LearningCassandra Learning
Cassandra Learning
Β 
Cassandra - A Distributed Database System
Cassandra - A Distributed Database System Cassandra - A Distributed Database System
Cassandra - A Distributed Database System
Β 
Cassandra
CassandraCassandra
Cassandra
Β 
NoSQL Session II
NoSQL Session IINoSQL Session II
NoSQL Session II
Β 
Vitalii Bondarenko - β€œAzure real-time analytics and kappa architecture with K...
Vitalii Bondarenko - β€œAzure real-time analytics and kappa architecture with K...Vitalii Bondarenko - β€œAzure real-time analytics and kappa architecture with K...
Vitalii Bondarenko - β€œAzure real-time analytics and kappa architecture with K...
Β 
Cassndra (4).pptx
Cassndra (4).pptxCassndra (4).pptx
Cassndra (4).pptx
Β 
NoSql Database
NoSql DatabaseNoSql Database
NoSql Database
Β 
Cassandra
CassandraCassandra
Cassandra
Β 
The No SQL Principles and Basic Application Of Casandra Model
The No SQL Principles and Basic Application Of Casandra ModelThe No SQL Principles and Basic Application Of Casandra Model
The No SQL Principles and Basic Application Of Casandra Model
Β 
Cassandra - A decentralized storage system
Cassandra - A decentralized storage systemCassandra - A decentralized storage system
Cassandra - A decentralized storage system
Β 
BigData Developers MeetUp
BigData Developers MeetUpBigData Developers MeetUp
BigData Developers MeetUp
Β 
Apache Cassandra, part 1 – principles, data model
Apache Cassandra, part 1 – principles, data modelApache Cassandra, part 1 – principles, data model
Apache Cassandra, part 1 – principles, data model
Β 

Recently uploaded

DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
Β 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
Β 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
Β 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
Β 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
Β 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
Β 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vΓ‘zquez
Β 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
Β 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
Β 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
Β 
Mcleodganj Call Girls πŸ₯° 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls πŸ₯° 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls πŸ₯° 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls πŸ₯° 8617370543 Service Offer VIP Hot ModelDeepika Singh
Β 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
Β 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
Β 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
Β 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
Β 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
Β 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Christopher Logan Kennedy
Β 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
Β 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
Β 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
Β 

Recently uploaded (20)

DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
Β 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Β 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Β 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
Β 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Β 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
Β 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Β 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Β 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Β 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
Β 
Mcleodganj Call Girls πŸ₯° 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls πŸ₯° 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls πŸ₯° 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls πŸ₯° 8617370543 Service Offer VIP Hot Model
Β 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Β 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Β 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Β 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
Β 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Β 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
Β 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Β 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
Β 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Β 

Apache Cassandra @Geneva JUG 2013.02.26

  • 1. Apache Cassandra http://cassandra.apache.org Benoit Perroud Software Engineer @Verisign & Apache Committer Geneva JUG, 26.02.2013
  • 2. Agenda β€’ NoSQL Quick Overview β€’ Apache Cassandra Fundamentals – Design principles – Data & Query Model β€’ Real Life Uses Cases – Illustrated in CQL3 β€’ Whatβ€Ÿs new in 1.2 β€’ Conclusion β€’ Q&A 2
  • 3. NoSQL β€’ [Wikipedia] NoSQL is a term used to designate database management systems that differ from classic relational database management systems (RDBMS) in some way. These data stores may not require fixed table schemas, usually avoid join operations, do not attempt to provide ACID properties and typically scale horizontally. β€’ Pioneers : Google BigTable, Amazon Dynamo, etc. 3
  • 4. Scalability β€’ [Wikipedia] Scalability is a desirable property of a system, a network, or a process, which indicates its ability to either handle growing amounts of work in a graceful manner or to be readily enlarged. β€’ Scalability in two dimensions : – Scale up β†’ scale vertically (increase RAM in an existing node) – Scale out β†’ scale horizontally (add a node to the cluster) β€’ In summary : handle load and peaks. 4
  • 5. Availability β€’ [Wikipedia] Availability refers to the ability of the users to access and use the system. If a user cannot access the system, it is said to be unavailable. Generally, the term downtime is used to refer to periods when a system is unavailable. β€’ In summary : minimize downtime. 5
  • 6. CAP Theorem β€’ Consistency : all nodes see the same data at the same time β€’ Availability : node failures do not prevent survivors from continuing to operate β€’ Partition Tolerance : the system continues to operate despite arbitrary message loss β€’ According to the theorem, a distributed system can satisfy any two of these guarantees at the same time, but not all three. 6
  • 7. NoSQL Promises β€’ Scale horizontally – Double computational power or storage by doubling size of the cluster. Cluster shrinking should also be true (tight provisioning) – Adding nodes to the cluster in constant time β€’ High availability – No / few / under control SPoF β€’ On commodity hardware – 32 cores, 64GB RAM, 12x2TB HDD IS commodity hardware  β€’ Let see how Cassandra achieves all of these 7
  • 8. Apache Cassandra β€’ Apache Cassandra is could be simplified as a scalable, distributed, sparse and eventually consistent hash map. But it's actually way more. β€’ Originally developed by Facebook, hit AFS incubator early 2008, version 1.0 in 2010, version 1.2 early 2013 β€’ Inspired from Amazon Dynamo and Google BigTable β€’ Version at time of speaking 1.2.2 β€’ Under high development by several startups : Datastax, Acunu, Netflix, Twitter, Rackspace, … 8
  • 9. Apache Cassandra is a scalable distributed, sparse, eventually consistent hash map β€’ Gossip protocol (spreading states like a rumor) β€’ Consistent hashing – Node responsible for key range and replica sets β€’ Replication factor (RF) to achieve persistence β€’ No single point of failure 100% keyspace 0 β€’ Key space is 2^128 bits 87 12 ? ? More on this later 75 Take half of key range 25 with VNodes ? of most loaded node ? 62 37 ? ? 50 Take half of key range 9 of most loaded node
  • 10. Apache Cassandra is a scalable distributed, sparse, eventually consistent hash map β€’ Schemaless – A schema (metadata) may be determined for convenience – Column names are stored for every rows β€’ [Wikipedia] Bloom filter is a space-efficient probabilistic data structure that is used to test whether an element is a member of a set. 10
  • 11. Apache Cassandra is a scalable distributed, sparse, eventually consistent hash map β€’ [Wikipedia] A quorum is the minimum number of votes that a distributed transaction has to obtain in order to be allowed to perform an operation in a distributed system. A quorum-based technique is implemented to enforce consistent operation in a distributed system. β€’ Quorum : W + R > N – N : number of replica, R : number of node read, W : number of node written. – Condition met when: β€’ R = 1, W = N β€’ R = N, W = 1 β€’ R = N/2, W = N/2 (+1 if N is even) 11
  • 12. Apache Cassandra is a scalable distributed, sparse, eventually consistent hash map β€’ Key space [0,99], previously put(22, 1, t1) β€’ Replication factor 2 β€’ Consistency : ONE coordinator 0 Put (22, 2, t2) 80 20 Async put(22,2, t2) 60 40 owner replica 12
  • 13. Apache Cassandra is a scalable distributed, sparse, eventually consistent hash map β€’ Key space [0,99], previously put(13, 1, t1) β€’ Replication factor 3 β€’ Consistency : QUORUM (R = 2, W = 2) 0 Read(13) = 2, t2 Put (13, 2, t2) Put (13, 2, t2) 80 20 Read(13) = 1, t1 Read repair 60 40 13
  • 14. Apache Cassandra is a scalable distributed, sparse, eventually consistent hash map β€’ Can be seen as a multilevel map : Map of SortedMap of Objects β€’ Keyspace > ColumnFamily > row > column name = value – # use keyspace1; – # set ColumnFamily1['key1']['columName1'] = 'value1'; – # get ColumnFamily1['key1']['columName1']; 14
  • 15. Data Model : Keyspace Keyspace > ColumnFamily > row > column name = value β€’ Equivalent to database name in SQL world β€’ Define replication factor and network topology – Network topology include multi datacenters topology – Replication factor can be defined per datacenters 15
  • 16. Data Model : Column Family Keyspace > ColumnFamily > row > column name = value β€’ Equivalent to table name in SQL world – Term may change in upcoming releases to stop confusing users β€’ Define – Type of the keys – Column name comparator – Additional metadata (types of certain known columns) 16
  • 17. Data Model : Row Keyspace > ColumnFamily > row > column name = value β€’ Defined by the key. – Eventually stored to a node and it's replicas β€’ Keys are typed β€’ 2 strategies of key partitioner on the key space – Random partitioner β€’ md5(key), murmur3(key), evenly distribute keys on nodes – Byte Ordered partitioner β€’ Keep order while iterating through the keys, may lead to hot spots 17
  • 18. Data Model : Column Name Keyspace > ColumnFamily > row > column name = value β€’ Could be seen as column in SQL world β€’ Not mandatory to be declared – If declared, their corresponding values have types – Or secondary index β€’ Ordered β€’ Column Names are often used as values Column names Event1 Column Family 24.04.2012 07:00 08:00 239 255 18 Row key Values
  • 19. Data Model : Value Keyspace > ColumnFamily > row > column name = value β€’ Can be typed, seen as array of bytes otherwise β€’ Existing types include – Bytes – Strings (ASCII or UTF-8 strings) – Integer, Long, Float, Double, Decimal – UUID, dates – Counters (of long) β€’ Can expire β€’ No foreign keys (!) 19
  • 20. Write path 1. Write to commit log Memory 2. Update MemTable CF1 MemTable CF2 MemTable CFn MemTable … 3. Acknowledge the client 4. When MemTable reaches a Disks CF1 CFn Commit log threshold, flush to disk as Bloom filter … SSTable SSTable Index Data … SSTable SSTable 20
  • 21. Read path β€’ Versions of the same column Memory can be spread at the same time CF1 CF2 CFn MemTable MemTable MemTable … – In the MemTable – In the MemTable being flushed Disks – In one or multiple SSTable Commit log CF1 CFn … β€’ All versions read, and resolved / Bloom filter SSTable Index merged using timestamp Data … – Keys and Rows cache SSTable SSTable – Bloom filters allow to skip reading unnecessary SSTables – SSTables are indexed – Compaction keep things reasonable 21
  • 22. Compaction β€’ Runs regularly as a background operation β€’ Merge SSTables together β€’ Remove expired and deleted values β€’ Has impact on general I/O availability (and thus performance) – This is where most of tuning happens – Can be throttled β€’ Two type of compaction – Size-tiered β€’ Fewer I/O consumption οƒ  write-heavy workload – Leveled β€’ Guarantee to read from fewer SSTables οƒ  read-heavy workload β€’ See http://www.datastax.com/dev/blog/leveled-compaction-in-apache-cassandra for complete details. 22
  • 23. Query Model β€’ Thrift API – CLI – Higher level third-party libraries β€’ Hector β€’ Pycassa β€’ Phpyandra β€’ Astyanax β€’ Helenus β€’ CQL (Cassandra Query Language) – And newly CQL3 released with C*1.2 23
  • 24. Query Model β€’ Cassandra is more than a key – value store. – Get – Put – Delete – Update – But also various range queries β€’ Key range β€’ Column range (slice) – Secondary indexes 24
  • 25. Query Model : Get β€’ Get single key – Give me key β€žaβ€Ÿ β€’ Get multiple keys – Give me rows for keys β€žaβ€Ÿ, β€žcβ€Ÿ, β€ždβ€Ÿ and β€žfβ€Ÿ Ordered regarding column name comparator β€˜1’ β€˜2’ β€˜3’ β€˜4’ β€˜5’ β€žcβ€Ÿ 8 9 10 11 β€žeβ€Ÿ 12 13 14 RandomPartitionner β€žfβ€Ÿ 15 16 17 β€žaβ€Ÿ 18 β€žbβ€Ÿ 19 20 20 β€ždβ€Ÿ 22 23 24 25 26 25
  • 26. Query Model : Get Range β€’ Range – Query for a range of key β€’ Give me all rows with keys between β€žcβ€Ÿ and β€žfβ€Ÿ. β€’ Mind the partitioner. β€˜1’ β€˜2’ β€˜3’ β€˜4’ β€˜5’ β€žcβ€Ÿ 8 9 10 11 β€žeβ€Ÿ 12 13 14 β€žfβ€Ÿ 15 16 17 β€žaβ€Ÿ 18 β€žbβ€Ÿ 19 20 20 β€ždβ€Ÿ 22 23 24 25 26 26
  • 27. Query Model : Get Slice β€’ Slice – Query for a slice of columns β€’ For key β€žcβ€Ÿ, give me all columns between β€ž3β€Ÿ and β€ž5β€Ÿ β€’ For key β€ždβ€Ÿ, give me all columns between β€ž3β€Ÿ and β€ž5β€Ÿ β€˜1’ β€˜2’ β€˜3’ β€˜4’ β€˜5’ β€žcβ€Ÿ 8 9 10 11 β€žeβ€Ÿ 12 13 14 β€žfβ€Ÿ 15 16 17 β€žaβ€Ÿ 18 β€žbβ€Ÿ 19 20 20 β€ždβ€Ÿ 22 23 24 25 26 27
  • 28. Query Model : Get Range Slice β€’ Range and Slice can be combined : rangeSliceQuery – For keys between β€žbβ€Ÿ and β€ždβ€Ÿ, give me columns between β€ž2β€Ÿ and β€ž4β€Ÿ β€˜1’ β€˜2’ β€˜3’ β€˜4’ β€˜5’ β€žaβ€Ÿ 8 9 10 11 β€žbβ€Ÿ 12 13 14 β€žcβ€Ÿ 15 16 17 β€ždβ€Ÿ 18 β€žeβ€Ÿ 19 20 20 β€žfβ€Ÿ 22 23 24 25 26 28
  • 29. Query Model : Secondary Index β€’ Secondary Index – Give me all rows where value for column β€ž2β€Ÿ is β€ž12β€Ÿ β€˜1’ β€˜2’ β€˜3’ β€˜4’ β€˜5’ β€žaβ€Ÿ 8 9 10 11 β€žbβ€Ÿ 12 13 14 β€žcβ€Ÿ 15 16 17 β€ždβ€Ÿ 18 β€žeβ€Ÿ 19 20 20 β€žfβ€Ÿ 22 23 24 25 26 29
  • 30. Real Life Use Case : Doodle Clone β€’ Living demo http://doodle.noisette.ch Data model Polls { id, label, [choices], email, limit, [ subscribers ] } β€’ Id generation – TimeUUID is your friend β€’ Avoid super column families – Use composite, or CQL3  β€’ Subscriberβ€Ÿs name uniqueness per poll ? – Cassandra anti-pattern (read after write) β€’ Limit to n subscribers per option ? – Cassandra anti-pattern (read after write) 31
  • 31. Real Life Use Case : Doodle Clone CREATE KEYSPACE Doodle WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1}; USE doodle; CREATE TABLE Polls ( id uuid, label text, choices list<text>, email text, maxChoices int, subscribers list<text>, PRIMARY KEY (id) ) WITH compaction = { 'class' : 'LeveledCompactionStrategy' } AND read_repair_chance = 0.0; INSERT INTO Polls (id, label, email, choices) VALUES (eba080a0-8011-11e2-9e96-0800200c9a66, 'Test poll1', 'benoit@noisette.ch', ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']); UPDATE Polls SET subscribers = subscribers + [ 'Benoit' ] WHERE id = eba080a0-8011-11e2-9e96- 0800200c9a66; UPDATE Polls SET subscribers = subscribers + [ 'Maxime', 'Nicolas' ] WHERE id = eba080a0-8011- 11e2-9e96-0800200c9a66; DELETE subscribers[0] FROM Polls WHERE id = eba080a0-8011-11e2-9e96-0800200c9a66; 32
  • 32. Real Life Use Case : Heavy Writes β€’ Cassandra is a really good fit when the ratio read / write is close to 0 – Event logging / redo logs – Time series β€’ Best practice to write data in its raw format AND in aggregated forms at the same time β€’ But need compation tuning – {min,max}_compaction_threshold – memtable_flush_writers – … no magic solution here, only pragmatic approach β€’ change configuration in one node, and mesure the difference (load, latency, …) 33
  • 33. Real Life Use Case : Counters β€’ Cassandra >= 0.8 (CASSANDRA-1072) CREATE TABLE Events (id uuid, count counter, PRIMARY KEY (id)); UPDATE Events SET count = count + 1 WHERE id = 95b64d72-8014-11e2-9e96-0800200c9a66; β€’ Example counterCF['entity1'][2012-06-14 18:30:00] counterCF['entity1'][2012-06-14 18:30:05] Query per entity counterCF['entity1'][2012-06-14 18:30:10] number of hits for β€žentity1β€Ÿ … between 18:30:00 and 19:00:00 counterCF['entity2'][2012-06-14 18:30:05] counterCF[2012-06-14 18:30:00]['entity1'] counterCF[2012-06-14 18:30:00]['entity2'] Query per date range counterCF[2012-06-14 18:30:00]['entity3'] all entities being hit between … 18:30:00 and 19:00:00 counterCF[2012-06-14 18:30:05]['entity1'] ! need complete date enumeration 34
  • 34. Real Life Use Case : Bulk Loading β€’ Data is transformed (e.g. using MapReduce) β€’ Data is bulk loaded – ColumFamilyOutputFormat (< v1.1) β€’ Not real bulk loading – BulkOutputFormat (>= v1.1) β€’ SSTable generated during the tranformation, and streamed β€’ Prefer Leveled Compaction Strategy – Reduce read latency – Size sstable_size_in_mb to your data 35
  • 35. Real Life Use Case : Bulk Loading β€’ Data is transformed (e.g. using MapReduce) β€’ Data is bulk loaded – ColumFamilyOutputFormat (< v1.1) β€’ Not real bulk loading – BulkOutputFormat (>= v1.1) β€’ SSTable generated during the tranformation, and streamed β€’ Prefer Leveled Compaction Strategy – Reduce read latency – Size sstable_size_in_mb to your data 36
  • 36. Real Life Use Case : Ξ» Architecture β€’ Enabling real-time queries to end-users – β€œHybrid Approach to Enable Real-Time Queries to End-Users”, Software Developer Journal February 2013 37
  • 37. Whatβ€Ÿs New in 1.2 β€’ CQL3 – http://cassandra.apache.org/doc/cql3/CQL.html β€’ Virtual Nodes (vnodes) β€’ Atomic batches β€’ Murmur3Partitioner β€’ Off-heap SSTable metadata β€’ Query tracing β€’ … a lot more … 38 Illustrations credits to Datastax, http://www.datastax.com/dev/blog/upgrading-an-existing-cluster-to-vnodes
  • 38. Conclusion β€’ Cassandra is not a general purpose solution β€’ But Cassandra is doing a really good job if used accordingly – Really good scalability β€’ Netflixβ€Ÿs 1M w/s on AWS http://techblog.netflix.com/2011/11/benchmarking-cassandra- scalability-on.html – Low operational cost β€’ Admin friendly, no SPoF, Vnodes, snapshot, … – Advanced data and query model 39
  • 39. Thanks for your attention β€’ Questions? benoit@noisette.ch @killerwhile β€’ No? Cool … ApΓ©ro  40