SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
NoSQL Deep Dive mit Cassandra
Kai Spichale




                                1
20.09.2011
NoSQL




20.09.2011   2   Tech Talk
NoSQL




             Wide Column Stores /
                                     Document Stores
             Column Families




              Graph Databases       Key Value / Tupe Stores




20.09.2011    3   Tech Talk
Apache Cassandra - eine Definition




“Apache Cassandra is an open source, distributed, decentralized, elastically
scalable, highly available, fault-tolerant, tuneably consistent, column-oriented
database that bases its distribution design on Amazon’s Dynamo and its data
model on Google’s Bigtable. Created at Facebook, it is now used at some of the
most popular sites on the Web.”


                                          Hewitt, Eben: Cassandra – The Definite Guide, S. 14




20.09.2011   4   Tech Talk
Agenda

►   Key Features
►   Projektgeschichte
►   Verteilung mit DHT
►   Konsistenz
►   Replikatverteilung
►   Datenmodell
►   Client API
►   Fazit




20.09.2011   5   Tech Talk
Key Features

►   Verteilte, horizontal skalierbare Datenbank
►   Symmetrisches Design
►   Hochverfügbar
►   Riesige Datenmenge (Petabytes)
►   Flexible Partitionierung, Replikatverteilung
►   Eventually consistent: ACID ist nicht immer notwendig
►   Flexible Trade-offs zwischen Konsistenz und Performance
►   Automated Provisioning (Seek Nodes)
►   Erweiterbare Multi-Datacenter Unterstützung
►   Schemaloses, strukturiertes Datenmodell




20.09.2011   6   Tech Talk
Key Features

►   Verteilte, horizontal skalierbare Datenbank
►   Symmetrisches Design
►   Hochverfügbar
►   Riesige Datenmenge (Petabytes)
►   Flexible Partitionierung, Replikatverteilung
►   Eventually consistent: ACID ist nicht immer notwendig
►   Flexible Trade-offs zwischen Konsistenz und Performance
►   Automated Provisioning (Seek Nodes)
►   Erweiterbare Multi-Datacenter Unterstützung
►   Schemaloses, strukturiertes Datenmodell




20.09.2011   7   Tech Talk
Projektgeschichte

►   Ursprunglich von facebook entwickelt
►   Projektbeginn 2007, seit 2008 Open Source
►   Verwendung für Inbox Search:
    > Benutzer können ihre Nachrichten nach Absendernamen oder anderen
      Schlüsselwörtern durchsuchen
    > In-house System zum Indexieren (invertierte Indizes) und Speichern der
        Nachrichten
►   Anforderung:
    > kostengünstig (Commodity Server)
    > inkrementell skalierbar




20.09.2011   8   Tech Talk
Verteilung mit DHT

►   Ein Distributed Hash Table
    (DHT) ist ein Klasse von
    dezentralen verteilten
    Systemen
►   O(1) Knoten-Lookup
►   P2P- Netzwerk



                                 ►   Shared-nothing Architecture

►   Daten werden möglichst       ►   Symmetrisches Design:
    gleichmäßig auf die Knoten       > Kein Single Point of
    verteilt                           Failure
                                     > Kein zentraler Controller
                                     > Keine Master/Slaves
                                 ►   Clients können sich mit
                                     beliebigen Knoten verbinden
    20.09.2011   9   Tech Talk
Verteilung mit DHT
Partitioner( RowKey ) = Token

Hosts    Initial Token
A        0
B        4
C        8
D        12
E        16
F        20
G        24
H        28




    20.09.2011   10   Tech Talk
Verteilung mit DHT
Partitioner( RowKey ) = Token

Hosts    Initial Token                      [28,31]    [0,3]
A        0
B        4
C        8                        [24,27]                       [4,7]
D        12
E        16
F        20
G        24
H        28                       [20,23]                       [8,11]


                                            [16,19]   [12,15]




    20.09.2011   11   Tech Talk
Verteilung mit DHT
Partitioner( RowKey ) = Token

Hosts    Initial Token                      [28,31]    [0,3]
A        0
B        4
C        8                        [24,27]                       [4,7]
D        12
E        16
F        20
G        24
H        28                       [20,23]                       [8,11]


                                            [16,19]   [12,15]


                                                      Beispiel:
                                                      Partitioner( „Cassandra“ ) = 7


    20.09.2011   12   Tech Talk
Verteilung mit DHT


Hosts   Initial Token            Hosts   Initial Token
A       0                        A       0
B       4                        B       21267647932558653966460912964485513215
C       8                        C       42535295865117307932921825928971026430
D       12                       D       63802943797675961899382738893456539645
E       16                       E       85070591730234615865843651857942052860
F       20                       F       106338239662793269832304564822427566075
G       24                       G       127605887595351923798765477786913079290
H       28                       H       148873535527910577765226390751398592505

                                 Tokens sind Integer von 0 bis 2^127

                                 i * (2^127 / N ) für i = 0 .. N-1

                                 z.B. Random Partitioner mit MD5



   20.09.2011   13   Tech Talk
Verteilung mit DHT

►   Verteilung der Daten im Cluster durch Partitioner


►   Random Partitioner ( Consistent Hashing )
    > Basiert auf MD5
    > Implizites Load Balancing


►   Order Preserving Partitioner
    > Geeignet für Range Slices
    > Evtl. ungleiche Verteilung der Daten im Cluster


►   Weitere Implementierungen von org.apache.cassandra.dht.IPartitioner




20.09.2011   14   Tech Talk
CAP-Theorem

►   CAP:
    > Strong Consistency
    > High Availability
    > Partition Tolerance


►   CAP-Theorem nach Eric Brewer besagt, dass ein verteiltes System nicht
    gleichzeitig alle drei Anforderungen erfüllen kann, sondern höchstens zwei.


►   Cassandra ist ein AP-System




20.09.2011   15   Tech Talk
CAP-Theorem

►   CA-System:
    > Jeder lebende Knoten, der Requests empfängt, sendet Responses
    > Netzwerkpartitionen werden nicht berücksichtigt (Implementierungsdetail)
►   CP-System:
    > Kann bei Netzwerkpartitionen betrieben werden
    > Knoten können absichtlich deaktiviert werden, um Konsistenz sicherzustellen
    > Verfügbarkeit wird gegen Konsistenz eingetauscht
►   AP-System:
    > Verfügbar und tolerant gegenüber Partitionen
    > Konsistenz kann nicht garantiert werden




20.09.2011   16   Tech Talk
CAP-Theorem

►   B und C erhalten Request:
►   CA:
    > B kann antworten
    > C wird blockiert
►   CP:
    > C kann antworten
    > Lock von A wird aufgehoben
►   AP:
    > B und C können antworten
    > Eventuell inkonsistente Daten




20.09.2011   17   Tech Talk
Konsistenz

►   Vertikale vs. horizontale Skalierung
►   ACID vs. BASE (basically available, soft state, eventually consistent)
►   Eventually consistency
    > Synch nach Berlin, asynch nach New York
    > Kompromiss zugunsten Verfügbarkeit und Performance
►   Cassandra unterstützt verschiedene Konsistenzstufen




20.09.2011   18   Tech Talk
Konsistenz

►   Verschiedene Konsistenzstufen für Lese- und Schreiboperationen
►   Wenn W + R > N, dann (fast) stark konsistent
             Level             Write Consistency
             ZERO              Asynchron, ohne Rückmeldung
             ANY               1 Knoten (inkl. HintedHandoff Empfänger)
             ONE               1 Knoten
             QUORUM            (N/2)+1 Knoten                             R+W>N
             LOCAL_QUORUM      Quorum im lokalen DC
             EACH_QUORUM       Quorum in allen DCs
             ALL               N Knoten

             Level             Read Consistency
             ONE               1 Knoten
             QUORUM            (N/2)+1 Knoten                             R+W>N
             LOCAL_QUORUM      Quorum im lokalen DC
             EACH_QUORUM       Quorum in allen DCs
             ALL               N Knoten

20.09.2011    19   Tech Talk
Konsistenz

►   Hinted Handoff: Bei Knotenausfall wird auf einem anderen Knoten ein Hint
    hinterlassen, sodass die Schreiboperation nachgeholt werden kann


►   Read Repair: Synchronisation aller Replikate (evtl. im Background)


►   Anti Entropy: Vergleich der Replikate und Aktualisierung




20.09.2011   20   Tech Talk
Konsistenzprobleme beim Löschen

►   Eventually consistent: Client liest möglicherweise ein Replikat, das noch nicht
    alle Updates erhalten hat (bei niedriger Konsistenzstufe)
►   Gleiches Problem beim Löschen
►   Lösung:
    > Nicht sofort Löschen, sondern mit Tombstones markieren
    > Wenn GCGraceSeconds < Tombstone Alter, dann Löschen


►   Konsequenz: Knoten dürfen nicht länger als GCGraceSeconds down sein!




20.09.2011   21   Tech Talk
Replikationsverteilung

►   Variabler Replikationsfaktor bestimmt die Anzahl der Kopien im Cluster
►   Strategien zur Verteilung der Replikate im Cluster:
    > Simple Strategy
    > Old Network Topology Strategy
    > Network Topology Strategy




20.09.2011   22   Tech Talk
Replikationsverteilung

►   Simple Strategy (Rack-unaware Strategy): Replikate werden auf nachfolgende
    Knoten im Ring verteilt
►   Datacenters und Racks werden nicht beachtet
►   Standardstrategie

                              Data Center 1
                                 Rack 1       Rack 2

                                 Node 1       Node 5

                                 Node 2       Node 6

                                 Node 3       Node 7

                                 Node 4       Node 8



20.09.2011   23   Tech Talk
Replikationsverteilung

►   Old Network Topology Strategy (Rack-aware Strategy): Heuristik zur
    Verteilung der Replikate auf verschiedenen Racks und Datacenters
►   Rack-aware Snitch ist notwendig
►   Höhere Verfügbarkeit
►   Höhere Latenz
             Data Center 1                 Data Center 2
                Rack 1         Rack 2         Rack 3       Rack 4

                Node 1         Node 5         Node 1       Node 5

                Node 2         Node 6         Node 2       Node 6

                Node 3         Node 7         Node 3       Node 7

                Node 4         Node 8         Node 4       Node 8


20.09.2011    24   Tech Talk
Replikationsverteilung

►   Network Topology Strategy (Datacenter Shard Strategy): Für jedes DC kann
    pro Keyspace die Anzahl der Replikate angegeben werden
►   Verteilung auf verschiedene Racks innerhalb eines DCs (wenn möglich)
►   Rack-ware Snitch ist notwendig
             Data Center 1                  Data Center 2
                Rack 1         Rack 2           Rack 3         Rack 4

                Node 1         Node 5           Node 1         Node 5

                Node 2         Node 6           Node 2         Node 6

                Node 3         Node 7           Node 3         Node 7

                Node 4         Node 8           Node 4         Node 8

                                        Konfiguration:
                                        DC 1 hat 2 Replikate
20.09.2011    25   Tech Talk            DC 2 hat 2 Replikate
Datenmodell

►   Strukturiertes Datenmodell ohne Schema
►   Mehr als nur Key-Value-Modell
►   Besteht aus den Konzepten:
     Cluster
       Keyspace
       Column Family
       Row
       SuperColumn
       Column




20.09.2011   26   Tech Talk
Datenmodell

►   Cluster > Keyspace > Column Family > Row > Column




                              Column
                              byte[] name
                              byte[] value
                              long timestamp




20.09.2011   27   Tech Talk
Datenmodell

►   Cluster > Keyspace > Column Family > Row




                   Row
                   Key              Key              Key

                   Column           Column           Column
                   byte[] name      byte[] name      byte[] name
                   byte[] value     byte[] value     byte[] value
                   long timestamp   long timestamp   long timestamp




20.09.2011   28   Tech Talk
Datenmodell

►   Cluster > Keyspace > Column Family
                  Column Family

                  Key          Row
                               Key      Key      Key

                               Column   Column   Column

                  Key          Row
                               Key      Key

                               Column   Column

                  Key          Row

                               Key      Key      Key      Key

                               Column   Column   Column   Column


20.09.2011   29    Tech Talk
Datenmodell

• Cluster > Keyspace          Keyspace

                                         Column Family
                               Key          Row
                                           Column Column

                               Key          Row
                                           Column

                               Key          Row
                                           Column Column Column

                                         Column Family

                                            Row
                                           Column Column Column

                                            Row
                                           Column Column



20.09.2011   30   Tech Talk
Datenmodell

►   Cluster > Keyspace > Column Family > Row > SuperColumn




                              SuperColumn

                               Key    Column
                                      byte[] name
                                      byte[] value
                                      long timestamp

                               Key    Column
                                      byte[] name
                                      byte[] value
                                      long timestamp




20.09.2011   31   Tech Talk
Datenmodell

►   Cluster > Keyspace > Column Family > Row

                  Row
                  Key                           Key

                  SuperColumn                   SuperColumn

                   Key         Column            Key    Column
                               byte[] name              byte[] name
                               byte[] value             byte[] value
                               long timestamp           long timestamp

                   Key         Column
                               byte[] name
                               byte[] value
                               long timestamp




20.09.2011   32    Tech Talk
Datenmodell
                              Keyspace
►   Cluster > Keyspace                   Column Family

                               Key          Row
                                           Column Column

                               Key          Row
                                           Column

                               Key          Row
                                           Column Column Column

                                         Column Family

                                            Row
                                           SuperColumn   SuperColumn
                                           Column Column Column Column

                                            Row
                                           SuperColumn
                                           Column Column Column


20.09.2011   33   Tech Talk
Datenmodellbeispiel




                              Column
                              name = "firstname"
                              value = "Kai"
                              Column
                              name = "lastname"
                              value = "Spichale"




20.09.2011   34   Tech Talk
Datenmodellbeispiel




                              SuperColumn

                               "firstname"   Column
                                             name = "firstname"
                                             value = "Kai"

                                "lastname"   Column
                                             name = "lastname"
                                             value = "Spichale"




20.09.2011   35   Tech Talk
Datenmodellbeispiel




                              Row

                              "user_name"

                              SuperColumn

                               "firstname"   Column
                                             name = "firstname"
                                             value = "Kai"
                                "lastname"   Column
                                             name = "lastname"
                                             value = "Spichale"




20.09.2011   36   Tech Talk
Datenmodellbeispiel



             "user"         Column Family

             "42"                 Row

                                  "user_name"

                                  SuperColumn

                                   "firstname"   Column
                                                 name = "firstname"
                                                 value = "Kai"
                                    "lastname"   Column
                                                 name = "lastname"
                                                 value = "Spichale"




20.09.2011     37     Tech Talk
Datenmodellbeispiel – flexible Struktur
 "user_name"

 SuperColumn

    "firstname"         Column               "firstname6"    Column
                        name = "firstname"                   name = "firstname"
                        value = "Karl"                       value = "Jacob"
   "firstname2"         Column               "firstname7"    Column
                        name = "firstname"                   name = "firstname"
                        value = "Theodor"                    value = "Philipp"

   "firstname3"         Column               "firstname8"    Column
                        name = "firstname"                   name = "firstname"
                        value = "Maria"                      value = "Franz"

   "firstname4"         Column               "firstname9"    Column
                        name = "firstname"                   name = "firstname"
                        value = "Nikolaus"                   value = "Joseph"

   "firstname5"         Column               "firstname10"   Column
                        name = "firstname"                   name = "firstname"
                        value = "Johann"                     value = "Sylvester "

20.09.2011   38   Tech Talk
Cassandra vs. MySQL (50GB Daten)




►   MySQL
    > 300ms write
    > 350ms read


►   Cassandra
    > 0.12ms write
    > 15ms read




    Quelle: http://www.odbms.org/download/cassandra.pdf, Zugriff 7.4.2011



20.09.2011   39    Tech Talk
Schreibvorgang




20.09.2011   40   Tech Talk
Schreibvorgang

►   Client schickt Write Request zu beliebigen Knoten im Cluster
►   Write Request wird sequentiell ins lokale Disk Commit Log geschrieben
►   Partitioner bestimmt verantwortliche Knoten
►   Verantwortliche Knoten erhalten Write Request und schreiben in lokales
    Logdatei
►   Memtables (Write-back Cache) werden aktualisiert
►   Flush auf Festplatte in SSTable und SSTableIndex


►   Eigenschaften:
    > Kein Lesen, keine Suche, keine Locks
    > Sequentieller Festplattenzugriff
    > Atomare Vorgang für eine ColumnFamily
    > „Always Writable“ (d.h. akzeptiert auch Write Requests bei partiellen Failure)



20.09.2011   41   Tech Talk
Lesevorgang




20.09.2011   42   Tech Talk
Lesevorgang

►   Client schickt Read Request zu beliebigen Knoten im Cluster
►   Partitioner bestimmt verantwortliche Knoten
►   Warten auf R Antworten
►   Warten auf N – R Antworten für Read Repair im Hintergrund


►   Eigenschaften:
    > Liest mehrere SSTables
    > Langsamer als Schreiben
    > Skaliert sehr gut




20.09.2011   43   Tech Talk
Client API



►   „The API is horrible and it produces pointless verbose code in addition to
    being utterly confusing.“


►   „The RCP interface is baroque, and too tightly coupled to Cassandra‘s
    internals.“




20.09.2011   44   Tech Talk
Client API

►   Cassandra:
    > Thrift-Interface bietet für viele Sprachen (Python, Ruby, Java, PHP) die API
    > RPC framework
    > CQL ab Version 0.8 (SQL-like)


►   Aber besser sind high-level Client Libraries:
    > Java: Pelops, Hector
    > Python: Pycassa
    > Ruby: Cassandra


►   Object Mapper:
    > Kundera: JPA 1.0 Implementierung für Cassandra
    > Hector: nicht JPA-compliant, kein Entity Relationship Support




20.09.2011   45   Tech Talk
Hector

►   High-level Cassandra Client
►   Open Source: https://github.com/rantav/hector
►   Queries:
    > Ein Request bezieht sich auf einen Keyspace und eine ColumnFamily
    > Einfache Requests mit ColumnQuery / SuperColumnQuery
    > *SliceQuery zur Abfrage von Columns, SuperColumns und Sub-Columns
        – Column Range
        – Row Range


►   Sekundärer Index:
    > Abfragen mit IndexedSlicesQuery




20.09.2011   46   Tech Talk
Hector – ein Beispiel
Cluster myCluster = HFactory.getOrCreateCluster("MyCluster",
 "192.168.178.37:9160");


Keyspace keyspace = HFactory.createKeyspace("MyKeyspace",
 myCluster);


StringSerializer se = StringSerializer.get();




  20.09.2011   47   Tech Talk
Hector – ein Beispiel
List<HColumn<String, String>> subColumns = new
 ArrayList<HColumn<String, String>>();


subColumns.add(HFactory.createColumn("firstname", "Kai", se, se));
subColumns.add(HFactory.createColumn("lastname", "Spichale", se, se));


HSuperColumn<String, String, String> superColumn = HFactory
 .createSuperColumn("UserName", subColumns, se, se, se);


Mutator<String> mutator = HFactory.createMutator(keyspace, se);
mutator.insert("rowKey1", "User", superColumn);




  20.09.2011   48   Tech Talk
Hector – ein Beispiel


SuperColumnQuery<String, String, String, String> query = HFactory
 .createSuperColumnQuery(keyspace, se, se, se, se);


QueryResult<HSuperColumn<String, String, String>> queryResult = query
 .setColumnFamily("User").setKey("rowKey1")
 .setSuperName("UserName");


queryResult.execute();


HSuperColumn<String, String, String> hSuperColumn = queryResult.get();




  20.09.2011   49   Tech Talk
Einschränkungen

►   Keine Joins
►   Kein ORDERED BY, GROUP BY, LIKE
►   Kein kaskadierendes Löschen
►   Keine referenzielle Integrität


►   Konsequenzen für Datenmodellentwurf
    > Bereits beim Entwurf des Datenmodells müssen alle Abfragen identifiziert
      sein
    > Zusätzliche Abfragepfade können schwer hinzugefügt werden
    > Denormalisierung, sodass jeder Request mit einer oder mehreren Zeilen
        einer ColumnFamily beantwortet werden kann
    > Client macht Joins




20.09.2011   50   Tech Talk
Column Comparators

►   Bytes
►   UTF 8
►   TimeUUID
►   Long
►   LexicalUUID
►   Composite (third-party)




20.09.2011   51   Tech Talk
Fazit

►   Hochskalierbare Datenbank, kann riesige Datenmengen speichern
►   Einfache Administration




►   Gewöhnungsbedürftiges Modell
►   Eventually Consistent




►   Keine Standard-Client-Library
►   API-Veränderungen
►   Upgrade




20.09.2011   52   Tech Talk
Vielen Dank für Ihre Aufmerksamkeit!




                              Fragen?




20.09.2011   53   Tech Talk

Mais conteúdo relacionado

Destaque

Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architektenadesso AG
 
FMK2014: Verband der FileMaker Entwickler by Holger Darjus
FMK2014: Verband der FileMaker Entwickler by Holger DarjusFMK2014: Verband der FileMaker Entwickler by Holger Darjus
FMK2014: Verband der FileMaker Entwickler by Holger DarjusVerein FM Konferenz
 
Complex Event Processing (CEP) gets in touch with JSF
Complex Event Processing (CEP) gets in touch with JSFComplex Event Processing (CEP) gets in touch with JSF
Complex Event Processing (CEP) gets in touch with JSFadesso AG
 
FMK2015: Neue Funktionen in FileMaker Go 14 by Jörg Köster
FMK2015: Neue Funktionen in FileMaker Go 14 by Jörg KösterFMK2015: Neue Funktionen in FileMaker Go 14 by Jörg Köster
FMK2015: Neue Funktionen in FileMaker Go 14 by Jörg KösterVerein FM Konferenz
 
Final-Präsentation GERMAN RACING Concept Challenge 2013 – 4. Platz "Racehorse...
Final-Präsentation GERMAN RACING Concept Challenge 2013 – 4. Platz "Racehorse...Final-Präsentation GERMAN RACING Concept Challenge 2013 – 4. Platz "Racehorse...
Final-Präsentation GERMAN RACING Concept Challenge 2013 – 4. Platz "Racehorse...GERMAN RACING Concept Challenge
 
Die größten Ängste der Kommunikationschefs
Die größten Ängste der KommunikationschefsDie größten Ängste der Kommunikationschefs
Die größten Ängste der KommunikationschefsFaktenkontor
 
Og presentation german- 2011
Og presentation german- 2011Og presentation german- 2011
Og presentation german- 2011HealthyMoney
 
Daftar harga barang
Daftar harga barangDaftar harga barang
Daftar harga barangAditya Eka
 
Stabhochsprung: Geheimnis der Konzentration
Stabhochsprung: Geheimnis der KonzentrationStabhochsprung: Geheimnis der Konzentration
Stabhochsprung: Geheimnis der KonzentrationGuenther Lohre
 
DECRETO Nº 121 DEL 2 DE OCT DE 2014
DECRETO Nº 121 DEL 2 DE OCT DE 2014DECRETO Nº 121 DEL 2 DE OCT DE 2014
DECRETO Nº 121 DEL 2 DE OCT DE 2014VIDEOS DE URABÁ
 
energiehoch3 Produktvorteile
energiehoch3 Produktvorteileenergiehoch3 Produktvorteile
energiehoch3 Produktvorteileenergiehoch3
 
Mythos High Performance Teams
Mythos High Performance TeamsMythos High Performance Teams
Mythos High Performance Teamsadesso AG
 
FMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
FMK2015: FileMaker Grundlagen Formeln by Longin ZieglerFMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
FMK2015: FileMaker Grundlagen Formeln by Longin ZieglerVerein FM Konferenz
 
Social Media Atlas 2013
Social Media Atlas 2013Social Media Atlas 2013
Social Media Atlas 2013Faktenkontor
 
Social Media Services rw
Social Media Services rwSocial Media Services rw
Social Media Services rwSMTravelers
 
6993027462328718949
69930274623287189496993027462328718949
6993027462328718949Jeremy Joo
 
FMK2015: FileMaker 14 Webdirect by Michael Valentin
FMK2015: FileMaker 14 Webdirect by Michael ValentinFMK2015: FileMaker 14 Webdirect by Michael Valentin
FMK2015: FileMaker 14 Webdirect by Michael ValentinVerein FM Konferenz
 

Destaque (20)

Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architekten
 
FMK2014: Verband der FileMaker Entwickler by Holger Darjus
FMK2014: Verband der FileMaker Entwickler by Holger DarjusFMK2014: Verband der FileMaker Entwickler by Holger Darjus
FMK2014: Verband der FileMaker Entwickler by Holger Darjus
 
Complex Event Processing (CEP) gets in touch with JSF
Complex Event Processing (CEP) gets in touch with JSFComplex Event Processing (CEP) gets in touch with JSF
Complex Event Processing (CEP) gets in touch with JSF
 
FMK2015: Neue Funktionen in FileMaker Go 14 by Jörg Köster
FMK2015: Neue Funktionen in FileMaker Go 14 by Jörg KösterFMK2015: Neue Funktionen in FileMaker Go 14 by Jörg Köster
FMK2015: Neue Funktionen in FileMaker Go 14 by Jörg Köster
 
Final-Präsentation GERMAN RACING Concept Challenge 2013 – 4. Platz "Racehorse...
Final-Präsentation GERMAN RACING Concept Challenge 2013 – 4. Platz "Racehorse...Final-Präsentation GERMAN RACING Concept Challenge 2013 – 4. Platz "Racehorse...
Final-Präsentation GERMAN RACING Concept Challenge 2013 – 4. Platz "Racehorse...
 
Große Focus Reportage über die Generation 50plus
Große Focus Reportage über die Generation 50plusGroße Focus Reportage über die Generation 50plus
Große Focus Reportage über die Generation 50plus
 
Die größten Ängste der Kommunikationschefs
Die größten Ängste der KommunikationschefsDie größten Ängste der Kommunikationschefs
Die größten Ängste der Kommunikationschefs
 
Lösungen handout
Lösungen handoutLösungen handout
Lösungen handout
 
Og presentation german- 2011
Og presentation german- 2011Og presentation german- 2011
Og presentation german- 2011
 
Daftar harga barang
Daftar harga barangDaftar harga barang
Daftar harga barang
 
Stabhochsprung: Geheimnis der Konzentration
Stabhochsprung: Geheimnis der KonzentrationStabhochsprung: Geheimnis der Konzentration
Stabhochsprung: Geheimnis der Konzentration
 
DECRETO Nº 121 DEL 2 DE OCT DE 2014
DECRETO Nº 121 DEL 2 DE OCT DE 2014DECRETO Nº 121 DEL 2 DE OCT DE 2014
DECRETO Nº 121 DEL 2 DE OCT DE 2014
 
energiehoch3 Produktvorteile
energiehoch3 Produktvorteileenergiehoch3 Produktvorteile
energiehoch3 Produktvorteile
 
Mythos High Performance Teams
Mythos High Performance TeamsMythos High Performance Teams
Mythos High Performance Teams
 
FMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
FMK2015: FileMaker Grundlagen Formeln by Longin ZieglerFMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
FMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
 
Social Media Atlas 2013
Social Media Atlas 2013Social Media Atlas 2013
Social Media Atlas 2013
 
Tabela obo 2-2013
Tabela obo 2-2013Tabela obo 2-2013
Tabela obo 2-2013
 
Social Media Services rw
Social Media Services rwSocial Media Services rw
Social Media Services rw
 
6993027462328718949
69930274623287189496993027462328718949
6993027462328718949
 
FMK2015: FileMaker 14 Webdirect by Michael Valentin
FMK2015: FileMaker 14 Webdirect by Michael ValentinFMK2015: FileMaker 14 Webdirect by Michael Valentin
FMK2015: FileMaker 14 Webdirect by Michael Valentin
 

Semelhante a Tech Talk Cassandra

GPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der PraxisGPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der PraxisJörn Dinkla
 
Tipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
Tipps & Tricks für den erfolgreichen Einsatz von GPU-ComputingTipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
Tipps & Tricks für den erfolgreichen Einsatz von GPU-ComputingJörn Dinkla
 
20111006 roadshow-sandy-bridge
20111006 roadshow-sandy-bridge20111006 roadshow-sandy-bridge
20111006 roadshow-sandy-bridgeWerner Fischer
 
Die Containerplattform Lego für DevOps
Die Containerplattform Lego für DevOpsDie Containerplattform Lego für DevOps
Die Containerplattform Lego für DevOpsATIX AG
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...inovex GmbH
 
Multi-GPU-Computing: Eins, zwei, drei, ganz viele
Multi-GPU-Computing: Eins, zwei, drei, ganz vieleMulti-GPU-Computing: Eins, zwei, drei, ganz viele
Multi-GPU-Computing: Eins, zwei, drei, ganz vieleJörn Dinkla
 
How to get paid in the future? Pay-on-Production und Monitoring-Data Use Case...
How to get paid in the future? Pay-on-Production und Monitoring-Data Use Case...How to get paid in the future? Pay-on-Production und Monitoring-Data Use Case...
How to get paid in the future? Pay-on-Production und Monitoring-Data Use Case...SimonJegelka
 
Grundlagen der Kommunikation - von Binär zum OSI Modell
Grundlagen der Kommunikation - von Binär zum OSI ModellGrundlagen der Kommunikation - von Binär zum OSI Modell
Grundlagen der Kommunikation - von Binär zum OSI ModellChristian Höserle
 
Sockets – Theorie und Implementierung
Sockets – Theorie und ImplementierungSockets – Theorie und Implementierung
Sockets – Theorie und ImplementierungAndreas Roth
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesQAware GmbH
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDAJörn Dinkla
 
Vert.x kubernetes
Vert.x kubernetesVert.x kubernetes
Vert.x kubernetescodepitbull
 
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)data://disrupted®
 
FH Wedel - SS11 - Seminar - Marcus Riemer - LEDA
FH Wedel - SS11 - Seminar - Marcus Riemer - LEDAFH Wedel - SS11 - Seminar - Marcus Riemer - LEDA
FH Wedel - SS11 - Seminar - Marcus Riemer - LEDAMarcus Riemer
 
Avoid Network-Issues and Polling
Avoid Network-Issues and PollingAvoid Network-Issues and Polling
Avoid Network-Issues and PollingKai Donato
 

Semelhante a Tech Talk Cassandra (20)

GPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der PraxisGPU-Computing mit CUDA und OpenCL in der Praxis
GPU-Computing mit CUDA und OpenCL in der Praxis
 
Tipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
Tipps & Tricks für den erfolgreichen Einsatz von GPU-ComputingTipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
Tipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
 
20111006 roadshow-sandy-bridge
20111006 roadshow-sandy-bridge20111006 roadshow-sandy-bridge
20111006 roadshow-sandy-bridge
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 
Die Containerplattform Lego für DevOps
Die Containerplattform Lego für DevOpsDie Containerplattform Lego für DevOps
Die Containerplattform Lego für DevOps
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
 
Multi-GPU-Computing: Eins, zwei, drei, ganz viele
Multi-GPU-Computing: Eins, zwei, drei, ganz vieleMulti-GPU-Computing: Eins, zwei, drei, ganz viele
Multi-GPU-Computing: Eins, zwei, drei, ganz viele
 
How to get paid in the future? Pay-on-Production und Monitoring-Data Use Case...
How to get paid in the future? Pay-on-Production und Monitoring-Data Use Case...How to get paid in the future? Pay-on-Production und Monitoring-Data Use Case...
How to get paid in the future? Pay-on-Production und Monitoring-Data Use Case...
 
Grundlagen der Kommunikation - von Binär zum OSI Modell
Grundlagen der Kommunikation - von Binär zum OSI ModellGrundlagen der Kommunikation - von Binär zum OSI Modell
Grundlagen der Kommunikation - von Binär zum OSI Modell
 
Sockets – Theorie und Implementierung
Sockets – Theorie und ImplementierungSockets – Theorie und Implementierung
Sockets – Theorie und Implementierung
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
 
Vert.x kubernetes
Vert.x kubernetesVert.x kubernetes
Vert.x kubernetes
 
3 denzler blockchain
3 denzler blockchain3 denzler blockchain
3 denzler blockchain
 
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
 
FH Wedel - SS11 - Seminar - Marcus Riemer - LEDA
FH Wedel - SS11 - Seminar - Marcus Riemer - LEDAFH Wedel - SS11 - Seminar - Marcus Riemer - LEDA
FH Wedel - SS11 - Seminar - Marcus Riemer - LEDA
 
Webinar Serial-over-IP
Webinar Serial-over-IPWebinar Serial-over-IP
Webinar Serial-over-IP
 
Avoid Network-Issues and Polling
Avoid Network-Issues and PollingAvoid Network-Issues and Polling
Avoid Network-Issues and Polling
 
Basisinformationstechnologie I WiSem 2015 / 2016 | 06_Rechnertechnologie II: ...
Basisinformationstechnologie I WiSem 2015 / 2016 | 06_Rechnertechnologie II: ...Basisinformationstechnologie I WiSem 2015 / 2016 | 06_Rechnertechnologie II: ...
Basisinformationstechnologie I WiSem 2015 / 2016 | 06_Rechnertechnologie II: ...
 
NoSQL with MySQL
NoSQL with MySQLNoSQL with MySQL
NoSQL with MySQL
 

Mais de adesso AG

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)adesso AG
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPadesso AG
 
A Business-Critical SharePoint Solution From adesso AG
A Business-CriticalSharePoint SolutionFrom adesso AGA Business-CriticalSharePoint SolutionFrom adesso AG
A Business-Critical SharePoint Solution From adesso AGadesso AG
 
Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!adesso AG
 
Continuous Delivery praktisch
Continuous Delivery praktischContinuous Delivery praktisch
Continuous Delivery praktischadesso AG
 
Agilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous DeliveryAgilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous Deliveryadesso AG
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?adesso AG
 
Getriebene Anwendungslandschaften
Getriebene AnwendungslandschaftenGetriebene Anwendungslandschaften
Getriebene Anwendungslandschaftenadesso AG
 
Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013adesso AG
 
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)adesso AG
 
OOP 2013 NoSQL Suche
OOP 2013 NoSQL SucheOOP 2013 NoSQL Suche
OOP 2013 NoSQL Sucheadesso AG
 
NoSQL in der Cloud - Why?
NoSQL in der Cloud -  Why?NoSQL in der Cloud -  Why?
NoSQL in der Cloud - Why?adesso AG
 
Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.adesso AG
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDIadesso AG
 
Agile Praktiken
Agile PraktikenAgile Praktiken
Agile Praktikenadesso AG
 
Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS adesso AG
 
Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5adesso AG
 
CloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App EngineCloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App Engineadesso AG
 
Scala 4 Enterprise
Scala 4 EnterpriseScala 4 Enterprise
Scala 4 Enterpriseadesso AG
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architektenadesso AG
 

Mais de adesso AG (20)

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
 
A Business-Critical SharePoint Solution From adesso AG
A Business-CriticalSharePoint SolutionFrom adesso AGA Business-CriticalSharePoint SolutionFrom adesso AG
A Business-Critical SharePoint Solution From adesso AG
 
Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!
 
Continuous Delivery praktisch
Continuous Delivery praktischContinuous Delivery praktisch
Continuous Delivery praktisch
 
Agilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous DeliveryAgilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous Delivery
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
 
Getriebene Anwendungslandschaften
Getriebene AnwendungslandschaftenGetriebene Anwendungslandschaften
Getriebene Anwendungslandschaften
 
Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013
 
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
 
OOP 2013 NoSQL Suche
OOP 2013 NoSQL SucheOOP 2013 NoSQL Suche
OOP 2013 NoSQL Suche
 
NoSQL in der Cloud - Why?
NoSQL in der Cloud -  Why?NoSQL in der Cloud -  Why?
NoSQL in der Cloud - Why?
 
Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
 
Agile Praktiken
Agile PraktikenAgile Praktiken
Agile Praktiken
 
Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS
 
Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5
 
CloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App EngineCloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App Engine
 
Scala 4 Enterprise
Scala 4 EnterpriseScala 4 Enterprise
Scala 4 Enterprise
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
 

Tech Talk Cassandra

  • 1. NoSQL Deep Dive mit Cassandra Kai Spichale 1 20.09.2011
  • 2. NoSQL 20.09.2011 2 Tech Talk
  • 3. NoSQL Wide Column Stores / Document Stores Column Families Graph Databases Key Value / Tupe Stores 20.09.2011 3 Tech Talk
  • 4. Apache Cassandra - eine Definition “Apache Cassandra is an open source, distributed, decentralized, elastically scalable, highly available, fault-tolerant, tuneably consistent, column-oriented database that bases its distribution design on Amazon’s Dynamo and its data model on Google’s Bigtable. Created at Facebook, it is now used at some of the most popular sites on the Web.” Hewitt, Eben: Cassandra – The Definite Guide, S. 14 20.09.2011 4 Tech Talk
  • 5. Agenda ► Key Features ► Projektgeschichte ► Verteilung mit DHT ► Konsistenz ► Replikatverteilung ► Datenmodell ► Client API ► Fazit 20.09.2011 5 Tech Talk
  • 6. Key Features ► Verteilte, horizontal skalierbare Datenbank ► Symmetrisches Design ► Hochverfügbar ► Riesige Datenmenge (Petabytes) ► Flexible Partitionierung, Replikatverteilung ► Eventually consistent: ACID ist nicht immer notwendig ► Flexible Trade-offs zwischen Konsistenz und Performance ► Automated Provisioning (Seek Nodes) ► Erweiterbare Multi-Datacenter Unterstützung ► Schemaloses, strukturiertes Datenmodell 20.09.2011 6 Tech Talk
  • 7. Key Features ► Verteilte, horizontal skalierbare Datenbank ► Symmetrisches Design ► Hochverfügbar ► Riesige Datenmenge (Petabytes) ► Flexible Partitionierung, Replikatverteilung ► Eventually consistent: ACID ist nicht immer notwendig ► Flexible Trade-offs zwischen Konsistenz und Performance ► Automated Provisioning (Seek Nodes) ► Erweiterbare Multi-Datacenter Unterstützung ► Schemaloses, strukturiertes Datenmodell 20.09.2011 7 Tech Talk
  • 8. Projektgeschichte ► Ursprunglich von facebook entwickelt ► Projektbeginn 2007, seit 2008 Open Source ► Verwendung für Inbox Search: > Benutzer können ihre Nachrichten nach Absendernamen oder anderen Schlüsselwörtern durchsuchen > In-house System zum Indexieren (invertierte Indizes) und Speichern der Nachrichten ► Anforderung: > kostengünstig (Commodity Server) > inkrementell skalierbar 20.09.2011 8 Tech Talk
  • 9. Verteilung mit DHT ► Ein Distributed Hash Table (DHT) ist ein Klasse von dezentralen verteilten Systemen ► O(1) Knoten-Lookup ► P2P- Netzwerk ► Shared-nothing Architecture ► Daten werden möglichst ► Symmetrisches Design: gleichmäßig auf die Knoten > Kein Single Point of verteilt Failure > Kein zentraler Controller > Keine Master/Slaves ► Clients können sich mit beliebigen Knoten verbinden 20.09.2011 9 Tech Talk
  • 10. Verteilung mit DHT Partitioner( RowKey ) = Token Hosts Initial Token A 0 B 4 C 8 D 12 E 16 F 20 G 24 H 28 20.09.2011 10 Tech Talk
  • 11. Verteilung mit DHT Partitioner( RowKey ) = Token Hosts Initial Token [28,31] [0,3] A 0 B 4 C 8 [24,27] [4,7] D 12 E 16 F 20 G 24 H 28 [20,23] [8,11] [16,19] [12,15] 20.09.2011 11 Tech Talk
  • 12. Verteilung mit DHT Partitioner( RowKey ) = Token Hosts Initial Token [28,31] [0,3] A 0 B 4 C 8 [24,27] [4,7] D 12 E 16 F 20 G 24 H 28 [20,23] [8,11] [16,19] [12,15] Beispiel: Partitioner( „Cassandra“ ) = 7 20.09.2011 12 Tech Talk
  • 13. Verteilung mit DHT Hosts Initial Token Hosts Initial Token A 0 A 0 B 4 B 21267647932558653966460912964485513215 C 8 C 42535295865117307932921825928971026430 D 12 D 63802943797675961899382738893456539645 E 16 E 85070591730234615865843651857942052860 F 20 F 106338239662793269832304564822427566075 G 24 G 127605887595351923798765477786913079290 H 28 H 148873535527910577765226390751398592505 Tokens sind Integer von 0 bis 2^127 i * (2^127 / N ) für i = 0 .. N-1 z.B. Random Partitioner mit MD5 20.09.2011 13 Tech Talk
  • 14. Verteilung mit DHT ► Verteilung der Daten im Cluster durch Partitioner ► Random Partitioner ( Consistent Hashing ) > Basiert auf MD5 > Implizites Load Balancing ► Order Preserving Partitioner > Geeignet für Range Slices > Evtl. ungleiche Verteilung der Daten im Cluster ► Weitere Implementierungen von org.apache.cassandra.dht.IPartitioner 20.09.2011 14 Tech Talk
  • 15. CAP-Theorem ► CAP: > Strong Consistency > High Availability > Partition Tolerance ► CAP-Theorem nach Eric Brewer besagt, dass ein verteiltes System nicht gleichzeitig alle drei Anforderungen erfüllen kann, sondern höchstens zwei. ► Cassandra ist ein AP-System 20.09.2011 15 Tech Talk
  • 16. CAP-Theorem ► CA-System: > Jeder lebende Knoten, der Requests empfängt, sendet Responses > Netzwerkpartitionen werden nicht berücksichtigt (Implementierungsdetail) ► CP-System: > Kann bei Netzwerkpartitionen betrieben werden > Knoten können absichtlich deaktiviert werden, um Konsistenz sicherzustellen > Verfügbarkeit wird gegen Konsistenz eingetauscht ► AP-System: > Verfügbar und tolerant gegenüber Partitionen > Konsistenz kann nicht garantiert werden 20.09.2011 16 Tech Talk
  • 17. CAP-Theorem ► B und C erhalten Request: ► CA: > B kann antworten > C wird blockiert ► CP: > C kann antworten > Lock von A wird aufgehoben ► AP: > B und C können antworten > Eventuell inkonsistente Daten 20.09.2011 17 Tech Talk
  • 18. Konsistenz ► Vertikale vs. horizontale Skalierung ► ACID vs. BASE (basically available, soft state, eventually consistent) ► Eventually consistency > Synch nach Berlin, asynch nach New York > Kompromiss zugunsten Verfügbarkeit und Performance ► Cassandra unterstützt verschiedene Konsistenzstufen 20.09.2011 18 Tech Talk
  • 19. Konsistenz ► Verschiedene Konsistenzstufen für Lese- und Schreiboperationen ► Wenn W + R > N, dann (fast) stark konsistent Level Write Consistency ZERO Asynchron, ohne Rückmeldung ANY 1 Knoten (inkl. HintedHandoff Empfänger) ONE 1 Knoten QUORUM (N/2)+1 Knoten R+W>N LOCAL_QUORUM Quorum im lokalen DC EACH_QUORUM Quorum in allen DCs ALL N Knoten Level Read Consistency ONE 1 Knoten QUORUM (N/2)+1 Knoten R+W>N LOCAL_QUORUM Quorum im lokalen DC EACH_QUORUM Quorum in allen DCs ALL N Knoten 20.09.2011 19 Tech Talk
  • 20. Konsistenz ► Hinted Handoff: Bei Knotenausfall wird auf einem anderen Knoten ein Hint hinterlassen, sodass die Schreiboperation nachgeholt werden kann ► Read Repair: Synchronisation aller Replikate (evtl. im Background) ► Anti Entropy: Vergleich der Replikate und Aktualisierung 20.09.2011 20 Tech Talk
  • 21. Konsistenzprobleme beim Löschen ► Eventually consistent: Client liest möglicherweise ein Replikat, das noch nicht alle Updates erhalten hat (bei niedriger Konsistenzstufe) ► Gleiches Problem beim Löschen ► Lösung: > Nicht sofort Löschen, sondern mit Tombstones markieren > Wenn GCGraceSeconds < Tombstone Alter, dann Löschen ► Konsequenz: Knoten dürfen nicht länger als GCGraceSeconds down sein! 20.09.2011 21 Tech Talk
  • 22. Replikationsverteilung ► Variabler Replikationsfaktor bestimmt die Anzahl der Kopien im Cluster ► Strategien zur Verteilung der Replikate im Cluster: > Simple Strategy > Old Network Topology Strategy > Network Topology Strategy 20.09.2011 22 Tech Talk
  • 23. Replikationsverteilung ► Simple Strategy (Rack-unaware Strategy): Replikate werden auf nachfolgende Knoten im Ring verteilt ► Datacenters und Racks werden nicht beachtet ► Standardstrategie Data Center 1 Rack 1 Rack 2 Node 1 Node 5 Node 2 Node 6 Node 3 Node 7 Node 4 Node 8 20.09.2011 23 Tech Talk
  • 24. Replikationsverteilung ► Old Network Topology Strategy (Rack-aware Strategy): Heuristik zur Verteilung der Replikate auf verschiedenen Racks und Datacenters ► Rack-aware Snitch ist notwendig ► Höhere Verfügbarkeit ► Höhere Latenz Data Center 1 Data Center 2 Rack 1 Rack 2 Rack 3 Rack 4 Node 1 Node 5 Node 1 Node 5 Node 2 Node 6 Node 2 Node 6 Node 3 Node 7 Node 3 Node 7 Node 4 Node 8 Node 4 Node 8 20.09.2011 24 Tech Talk
  • 25. Replikationsverteilung ► Network Topology Strategy (Datacenter Shard Strategy): Für jedes DC kann pro Keyspace die Anzahl der Replikate angegeben werden ► Verteilung auf verschiedene Racks innerhalb eines DCs (wenn möglich) ► Rack-ware Snitch ist notwendig Data Center 1 Data Center 2 Rack 1 Rack 2 Rack 3 Rack 4 Node 1 Node 5 Node 1 Node 5 Node 2 Node 6 Node 2 Node 6 Node 3 Node 7 Node 3 Node 7 Node 4 Node 8 Node 4 Node 8 Konfiguration: DC 1 hat 2 Replikate 20.09.2011 25 Tech Talk DC 2 hat 2 Replikate
  • 26. Datenmodell ► Strukturiertes Datenmodell ohne Schema ► Mehr als nur Key-Value-Modell ► Besteht aus den Konzepten: Cluster Keyspace Column Family Row SuperColumn Column 20.09.2011 26 Tech Talk
  • 27. Datenmodell ► Cluster > Keyspace > Column Family > Row > Column Column byte[] name byte[] value long timestamp 20.09.2011 27 Tech Talk
  • 28. Datenmodell ► Cluster > Keyspace > Column Family > Row Row Key Key Key Column Column Column byte[] name byte[] name byte[] name byte[] value byte[] value byte[] value long timestamp long timestamp long timestamp 20.09.2011 28 Tech Talk
  • 29. Datenmodell ► Cluster > Keyspace > Column Family Column Family Key Row Key Key Key Column Column Column Key Row Key Key Column Column Key Row Key Key Key Key Column Column Column Column 20.09.2011 29 Tech Talk
  • 30. Datenmodell • Cluster > Keyspace Keyspace Column Family Key Row Column Column Key Row Column Key Row Column Column Column Column Family Row Column Column Column Row Column Column 20.09.2011 30 Tech Talk
  • 31. Datenmodell ► Cluster > Keyspace > Column Family > Row > SuperColumn SuperColumn Key Column byte[] name byte[] value long timestamp Key Column byte[] name byte[] value long timestamp 20.09.2011 31 Tech Talk
  • 32. Datenmodell ► Cluster > Keyspace > Column Family > Row Row Key Key SuperColumn SuperColumn Key Column Key Column byte[] name byte[] name byte[] value byte[] value long timestamp long timestamp Key Column byte[] name byte[] value long timestamp 20.09.2011 32 Tech Talk
  • 33. Datenmodell Keyspace ► Cluster > Keyspace Column Family Key Row Column Column Key Row Column Key Row Column Column Column Column Family Row SuperColumn SuperColumn Column Column Column Column Row SuperColumn Column Column Column 20.09.2011 33 Tech Talk
  • 34. Datenmodellbeispiel Column name = "firstname" value = "Kai" Column name = "lastname" value = "Spichale" 20.09.2011 34 Tech Talk
  • 35. Datenmodellbeispiel SuperColumn "firstname" Column name = "firstname" value = "Kai" "lastname" Column name = "lastname" value = "Spichale" 20.09.2011 35 Tech Talk
  • 36. Datenmodellbeispiel Row "user_name" SuperColumn "firstname" Column name = "firstname" value = "Kai" "lastname" Column name = "lastname" value = "Spichale" 20.09.2011 36 Tech Talk
  • 37. Datenmodellbeispiel "user" Column Family "42" Row "user_name" SuperColumn "firstname" Column name = "firstname" value = "Kai" "lastname" Column name = "lastname" value = "Spichale" 20.09.2011 37 Tech Talk
  • 38. Datenmodellbeispiel – flexible Struktur "user_name" SuperColumn "firstname" Column "firstname6" Column name = "firstname" name = "firstname" value = "Karl" value = "Jacob" "firstname2" Column "firstname7" Column name = "firstname" name = "firstname" value = "Theodor" value = "Philipp" "firstname3" Column "firstname8" Column name = "firstname" name = "firstname" value = "Maria" value = "Franz" "firstname4" Column "firstname9" Column name = "firstname" name = "firstname" value = "Nikolaus" value = "Joseph" "firstname5" Column "firstname10" Column name = "firstname" name = "firstname" value = "Johann" value = "Sylvester " 20.09.2011 38 Tech Talk
  • 39. Cassandra vs. MySQL (50GB Daten) ► MySQL > 300ms write > 350ms read ► Cassandra > 0.12ms write > 15ms read Quelle: http://www.odbms.org/download/cassandra.pdf, Zugriff 7.4.2011 20.09.2011 39 Tech Talk
  • 41. Schreibvorgang ► Client schickt Write Request zu beliebigen Knoten im Cluster ► Write Request wird sequentiell ins lokale Disk Commit Log geschrieben ► Partitioner bestimmt verantwortliche Knoten ► Verantwortliche Knoten erhalten Write Request und schreiben in lokales Logdatei ► Memtables (Write-back Cache) werden aktualisiert ► Flush auf Festplatte in SSTable und SSTableIndex ► Eigenschaften: > Kein Lesen, keine Suche, keine Locks > Sequentieller Festplattenzugriff > Atomare Vorgang für eine ColumnFamily > „Always Writable“ (d.h. akzeptiert auch Write Requests bei partiellen Failure) 20.09.2011 41 Tech Talk
  • 42. Lesevorgang 20.09.2011 42 Tech Talk
  • 43. Lesevorgang ► Client schickt Read Request zu beliebigen Knoten im Cluster ► Partitioner bestimmt verantwortliche Knoten ► Warten auf R Antworten ► Warten auf N – R Antworten für Read Repair im Hintergrund ► Eigenschaften: > Liest mehrere SSTables > Langsamer als Schreiben > Skaliert sehr gut 20.09.2011 43 Tech Talk
  • 44. Client API ► „The API is horrible and it produces pointless verbose code in addition to being utterly confusing.“ ► „The RCP interface is baroque, and too tightly coupled to Cassandra‘s internals.“ 20.09.2011 44 Tech Talk
  • 45. Client API ► Cassandra: > Thrift-Interface bietet für viele Sprachen (Python, Ruby, Java, PHP) die API > RPC framework > CQL ab Version 0.8 (SQL-like) ► Aber besser sind high-level Client Libraries: > Java: Pelops, Hector > Python: Pycassa > Ruby: Cassandra ► Object Mapper: > Kundera: JPA 1.0 Implementierung für Cassandra > Hector: nicht JPA-compliant, kein Entity Relationship Support 20.09.2011 45 Tech Talk
  • 46. Hector ► High-level Cassandra Client ► Open Source: https://github.com/rantav/hector ► Queries: > Ein Request bezieht sich auf einen Keyspace und eine ColumnFamily > Einfache Requests mit ColumnQuery / SuperColumnQuery > *SliceQuery zur Abfrage von Columns, SuperColumns und Sub-Columns – Column Range – Row Range ► Sekundärer Index: > Abfragen mit IndexedSlicesQuery 20.09.2011 46 Tech Talk
  • 47. Hector – ein Beispiel Cluster myCluster = HFactory.getOrCreateCluster("MyCluster", "192.168.178.37:9160"); Keyspace keyspace = HFactory.createKeyspace("MyKeyspace", myCluster); StringSerializer se = StringSerializer.get(); 20.09.2011 47 Tech Talk
  • 48. Hector – ein Beispiel List<HColumn<String, String>> subColumns = new ArrayList<HColumn<String, String>>(); subColumns.add(HFactory.createColumn("firstname", "Kai", se, se)); subColumns.add(HFactory.createColumn("lastname", "Spichale", se, se)); HSuperColumn<String, String, String> superColumn = HFactory .createSuperColumn("UserName", subColumns, se, se, se); Mutator<String> mutator = HFactory.createMutator(keyspace, se); mutator.insert("rowKey1", "User", superColumn); 20.09.2011 48 Tech Talk
  • 49. Hector – ein Beispiel SuperColumnQuery<String, String, String, String> query = HFactory .createSuperColumnQuery(keyspace, se, se, se, se); QueryResult<HSuperColumn<String, String, String>> queryResult = query .setColumnFamily("User").setKey("rowKey1") .setSuperName("UserName"); queryResult.execute(); HSuperColumn<String, String, String> hSuperColumn = queryResult.get(); 20.09.2011 49 Tech Talk
  • 50. Einschränkungen ► Keine Joins ► Kein ORDERED BY, GROUP BY, LIKE ► Kein kaskadierendes Löschen ► Keine referenzielle Integrität ► Konsequenzen für Datenmodellentwurf > Bereits beim Entwurf des Datenmodells müssen alle Abfragen identifiziert sein > Zusätzliche Abfragepfade können schwer hinzugefügt werden > Denormalisierung, sodass jeder Request mit einer oder mehreren Zeilen einer ColumnFamily beantwortet werden kann > Client macht Joins 20.09.2011 50 Tech Talk
  • 51. Column Comparators ► Bytes ► UTF 8 ► TimeUUID ► Long ► LexicalUUID ► Composite (third-party) 20.09.2011 51 Tech Talk
  • 52. Fazit ► Hochskalierbare Datenbank, kann riesige Datenmengen speichern ► Einfache Administration ► Gewöhnungsbedürftiges Modell ► Eventually Consistent ► Keine Standard-Client-Library ► API-Veränderungen ► Upgrade 20.09.2011 52 Tech Talk
  • 53. Vielen Dank für Ihre Aufmerksamkeit! Fragen? 20.09.2011 53 Tech Talk