SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
Cassandra – Eine Einführung

                                  Mikio L. Braun
                                    Leo Jugel

                               TU Berlin, twimpact

                                 LinuxTag Berlin
                                  13. Mai 2011




LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Was ist NoSQL?
 ●   Für viele Webanwendungen sind “klassische
     Datenbanken” nicht die richtige Wahl:
      ●   Datenbank im Wesentlichen nur Speicher für
          Objekte
      ●   Konsistenz nicht unbedingt erforderlich
      ●   Viele gleichzeitige Zugriffe




LinuxTag Berlin, 13. 5. 2011     (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
NoSQL im Vergleich
Klassische Datenbanken                           NoSQL
Mächtige Querysprache                            Sehr einfache Querysprache
Skaliert durch größere Server                    Skaliert auf einem Cluster
(“Scaling Up”)                                   (“Scaling Out”)
Änderungen des Datenbankschemas                  Kein festes Datenbankschema
aufwendig
ACID: Atomicity, Consistency, Isolation,         In der Regel nur “eventually consistent”.
Durability
Transaktionen, Locking, etc.                     In der Regel keine Unterstützung für
                                                 Transaktionen o.ä.




LinuxTag Berlin, 13. 5. 2011    (c) 2011 by Mikio L. Braun      @mikiobraun, blog.mikiobraun.de
Brewer's CAP Theorem
 ●   CAP: Consistency, Availability, Partition
     Tolerance
      ●   Consistency: Man erhält keine veralteten Daten.
      ●   Availability: Lese/Schreiboperationen sind immer
          möglich.
      ●   Partition Tolerance: Bei Netzwerk oder
          Rechnerausfällen bleiben die restlichen Garantien
          erhalten.
 ●   Man kann nur jeweils zwei davon garantieren!

Gilbert, Lynch, Brewer's conjecture and the feasibility of consistent, available, partition-
tolerant web services, ACM SIGACT News, Volume 33, Issue 2, June 2002
LinuxTag Berlin, 13. 5. 2011     (c) 2011 by Mikio L. Braun     @mikiobraun, blog.mikiobraun.de
Homepage                       http://cassandra.apache.org
Programmiersprache Java
Geschichte                     ● Bei Facebook zur Indexsuche entwickelt,
                               im Juli 2008 als Open Source freigegeben
                               ● Seit März 2009 Apache Incubator

                               ● Seit Februar 2010 Apache Top-Level


Haupteigenschaften             ● strukturierter Key-Value-Store

                               ● “eventually consistent”

                               ● völlig gleichberechtigte Knoten

                               ● Cluster ohne Neustart modifizierbar


Support                        DataStax (http://datastax.com)
Lizenz                         Apache 2.0

LinuxTag Berlin, 13. 5. 2011       (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Version 0.6.x und 0.7.x
 ●   Wichtigsten Änderungen in 0.7.x
      ●   Konfigurationsdateien in YAML statt XML
      ●   Schemamodifikationen (ColumnFamilies) im
          laufenden Betrieb
      ●   Erste Ansätze für Sekundärindexe.
 ●   Allerdings auch anfängliche Stabilitätsprobleme




LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Inspirationen für Cassandra
 ●   Amazon Dynamo
      ●   Cluster ohne dezidierte Masterknoten
      ●   Peer-to-Peer Erkennung, HintedHintoff, etc.
 ●   Google BigTable
      ●   Datenmodell
      ●   Benötigt zentrale Masterknoten
      ●   Bietet wesentlich mehr Möglichkeiten der Kontrolle:
            –   welche Daten gemeinsam gespeichert werden sollten
            –   On-the-fly Kompression, etc.


LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Installation
 ●   tar.gz von
     http://cassandra.apache.org/download/
     herunterladen
 ●   In Verzeichnis auspacken
 ●   ./conf enthält Konfigurationsdateien
 ●   ./bin/cassandra -f startet Cassandra, Ctrl-C zum
     stoppen




LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Konfiguration
 ●   Datenbank
      ●   Version 0.6.x: conf/storage-conf.xml
      ●   Version 0.7.x: conf/cassandra.yaml
 ●   JVM Parameter
      ●   Version 0.6.x: bin/cassandra.in.sh
      ●   Version 0.7.x: conf/cassandra-env.sh




LinuxTag Berlin, 13. 5. 2011    (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Cassandras Datenmodell
Keyspace (= Datenbank)                                     Bytearrays
  Column Family (= Tabelle) Row
              key                         {name1: value1, name2: value2, name3: value3, ...}


                                                                  Column
                               Strings
                                                                             Sortiert nach Namen!
                               Sortierung hängt vom Partitioner ab!

    Super Column Family
                key
                                            key                      {name1: value1, ...}




LinuxTag Berlin, 13. 5. 2011         (c) 2011 by Mikio L. Braun      @mikiobraun, blog.mikiobraun.de
Beispiel: Einfacher Objektspeicher
   class Person {
       long id;
       String name;
       String affiliation;
   }

                                       Felder in Bytearrays umwandeln




                    Keyspace “MyDatabase”:
                        ColumnFamily “Person”:
                            “1”: {“id”: “1”, “name”: “Mikio Braun, “affiliation”: “TU Berlin”}




LinuxTag Berlin, 13. 5. 2011         (c) 2011 by Mikio L. Braun     @mikiobraun, blog.mikiobraun.de
Beispiel: Index
   class Page {
       long id;
       …                                                                  Datenfelder der Objekte
       List<Links> links;
   }                            Keyspace “MyDatabase”
                                    ColumnFamily “Pages”
   class Link {                         “3”: {“id”: 3, …}
       long id;                         “4”: {“id”: 4, …}
       ...                                                               Sowohl für die Verlinkung,
       int numberOfHits;            ColumnFamily “Links”                 als auch zum Indizieren!
   }                                    “1”: {“id”: 1, “url”: …}
                                        “17”. {“id”: 17, “url”: …}

                                    ColumnFamily “LinksPerPageByNumberOfHits”
                                        “3”: { “00000132:00000001”, “000025: 00000017”: …}
                                        “4”: { “00000044:00000024”, … }

      Hier wird ausgenutzt,
      dass Columns nach
      Namen sortiert werden!           Natürlich alles auf Bytearrayebene!


LinuxTag Berlin, 13. 5. 2011      (c) 2011 by Mikio L. Braun     @mikiobraun, blog.mikiobraun.de
Benötigt man
                    SuperColumnFamilies?

 ●   Meistens kann man SuperColumnFamilies
     durch mehrere ColumnFamilies ersetzen.
 ●   Da die SuperColumnFamilies die
     Implementation und das Protokol
     verkomplizieren gibt es auch Stimmen, die sie
     ganz abschaffen wollen... .



LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Cassandras Architektur

                             MemTable                                Leseoperation




                                             Flush
  Speicher


  Festplatte




Schreiboperation            Commit Log                     SSTable         SSTable            SSTable




                                                                          Compaction!
  LinuxTag Berlin, 13. 5. 2011          (c) 2011 by Mikio L. Braun       @mikiobraun, blog.mikiobraun.de
Cassandras API
  ●   THRIFT-basierte API
Leseoperationen                                          Schreiboperationen
get                       Einzelne Column                insert                Einzelne Column
get_slice                 Reihe von Columns              batch_mutate          Mehrere Columns in
multiget_slice            Reihe von Columns in                                 verschiedenen
                          verschiedenen Rows                                   Rows
get_count                 Anzahl von Columns             remove                Einzelne Column
get_range_slice           Reihe von Columns in           truncate              Ganze Column
                          einer Reihe von Rows                                 Family
get_indexed_slices Reihe von Columns mit
                   Index

Sonstige
login, describe_*, add/drop column family/keyspace                                     erst in 0.7.x


 LinuxTag Berlin, 13. 5. 2011        (c) 2011 by Mikio L. Braun     @mikiobraun, blog.mikiobraun.de
Cassandra im Cluster
 ●   Völlig gleichberechtigte Knoten
 ●   Zum Bootstrappen ein Seed nötig
            “Storage Proxy”



                 Knoten                Knoten                  Knoten




                               Liest/schreibt gemäß Konsistenzstufe

                 Anfrage

LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Konsistenzstufen und
                        Replikationsfaktor
●Replikationsfaktor: Auf wie vielen Knoten werden
die Daten gespeichert?

●   Konsistenzstufen:
Konsistenzlevel
ANY                            Ein Knoten hat die Operation bekommen, selbst im Fall
                               von HintedHandoff
ONE                            Auf einem Knoten wurde die Operation ausgeführt.
QUORUM                         Operation für die Mehrzahl der Knoten ausgeführt /
                               Neuestes Resultat wird zurückgegeben
LOCAL_QUORUM                   QUORUM im lokalen Datenzentrum
GLOBAL_QUORUM                  QUORUM im globalen Datenzentrum
ALL                            Warte, bis alle Knoten die Operation ausgeführt haben.


LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Verhalten bei Ausfall
●   Solange Anforderungen der Konsistenzstufe erfüllt
    werden können, ist alles in Ordnung.
●   Hinted Handoff:
      ●   Eine Schreiboperations für einen ausgefallenen
          Knoten wird auf einem anderen Knoten gemerkt.
      ●   Diese Daten sind anschließend nicht lesbar!
●   Read Repair:
      ●   Selbst nachdem die Leseoperation abgeschlossen ist,
          werden die Daten überprüft und ggf. aktualisiert.



LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Bibliotheken
Python        Pycassa: http://github.com/pycassa/pycass
              Telephus: http://github.com/driftx/Telephus
Java          Datanucleus JDO:http://github.com/tnine/Datanucleus-Cassandra-Plugin
              Hector: http://github.com/rantav/hector
              Kundera http://code.google.com/p/kundera/
              Pelops: http://github.com/s7/scale7-pelops
Grails        grails-cassandra: https://github.com/wolpert/grails-cassandra
.NET          Aquiles: http://aquiles.codeplex.com/
              FluentCassandra: http://github.com/managedfusion/fluentcassandra
Ruby          Cassandra: http://github.com/fauna/cassandra
PHP           phpcassa: http://github.com/thobbs/phpcassa
              SimpleCassie: http://code.google.com/p/simpletools-php/wiki/SimpleCassie


Oder was selbstgebautes direkt auf THRIFT http://thrift.apache.org/ :)




LinuxTag Berlin, 13. 5. 2011      (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
TWIMPACT: Eine Anwendung
 ●   Echtzeitanalyse von Twitter
 ●   Trendanalyse basierend auf Retweets
 ●   Sehr hohes Datenaufkommen (mehrere
     Millionen Tweets am Tag, ca. 50/s)




LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
TWIMPACT: twimpact.jp




LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
TWIMPACT: twimpact.com




LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Anwendungsprofil
 ●   Informationen über Tweets, User, Retweets
 ●   Textmatching für nicht-API-Retweets
 ●   Retweetshäufigkeiten und Userimpact
 ●   Operationsprofil:
              get_slice        get     get_slice     batch_mutate    insert   batch_mutate       remove
              (alle)                   (Bereich)     (eine Row)
  Anteil      50.1%            6.0%    0.1%          14.9%           21.5%    6.8%               0.8%
  Dauer       1.1ms            1.7ms   0.8ms         0.9ms           1.1ms    0.8ms              1.2ms




LinuxTag Berlin, 13. 5. 2011            (c) 2011 by Mikio L. Braun     @mikiobraun, blog.mikiobraun.de
Praktische Erfahrungen mit
                      Cassandra
 ●   Sehr stabiler Betrieb
 ●   Leseoperationen verhältnismäßig teuer
 ●   Multithreading bringt große
     Performanceverbesserung
 ●   Relativ aufwendiges Tuning erforderlich
 ●   Clusterbetrieb bringt nicht unbedingt
     Verbesserung
 ●   Compaction führt zu bis zu 50%
     Performanceeinbruch

LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Performance durch Multithreading
 ●   Multithreading bringt erheblich mehr
     Performance.
 ●   Multithreading ohne Transaktionen/Locking?
                                                                             64
                                                                             32
                                                                             16
                                                                             8
                                                                         4
                                                                         2



                                                                         1
                                                                                  Core i7,
                                                                                  4 cores
                                                                                  (2 + 2 HT)
LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Performance durch Multithreading
 ●   Multithreading bringt erheblich mehr
     Performance.
 ●   Multithreading ohne Transaktionen/Locking?




LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Cassandra Tuning
 ●   Tuningmöglichkeiten:
      ●   Größe der Memtables, Thresholds für Flushes
      ●   Größe des JVM Heaps
      ●   Häufigkeit, Tiefe der Compaction
 ●   Wo?
      ●   MemTableThresholds etc. in conf/cassandra.yaml
      ●   JVM Parameter in conf/cassandra-env.sh




LinuxTag Berlin, 13. 5. 2011      (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Übersicht über die GC der JVM
                                                                     Old Generation
                  Young Generation
                                                                                 CMSInitiatingOccupancyFraction




              “Eden”           “Survivors”
                                                                                         Zusätzlicher
                                                                                         Speicherverbrauch
            bis zu ein paar hundert MB                                Dutzende GB        während der GC

LinuxTag Berlin, 13. 5. 2011            (c) 2011 by Mikio L. Braun       @mikiobraun, blog.mikiobraun.de
Cassandras Speicherverhalten




            Flush
                                              Memtables,
                                              Indices, etc.




Memtablegröße: 128M, JVM Heap: 3G, #CF: 12               Compaction
 LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun      @mikiobraun, blog.mikiobraun.de
Cassandras Speicherverhalten
●   Memtables überleben extrem lange (mehrere
    Stunden)
      ●   Landen in der Old Generation
      ●   Bei GC müssen mehrere Dutzend GB aufgeräumt
          werden.
      ●   Heap zu klein, oder GC zu spät ausgelöst
           “GC storm”
●   Tradeoff:
      ●   I/O Last vs. Speicherbrauch
●   Compaction nicht vernachlässigen!

LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Die Auswirkungen von GC und
                Compaction




                                                       Große
                                                        GC
                               Compaction




LinuxTag Berlin, 13. 5. 2011        (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Cluster und Einzelknoten
●   Im Vergleich:
    ●   1 Cluster mit six-core CPU und RAID 5 aus 6 Festplatten
    ●   4 Cluster mit six-core CPU mit RAID 0 aus 2 Festplatten
●   Einzelcluster lieferte konsistent 1,5-3 Mal mehr Performance.
●   Gründe:
    ●   Overhead durch Netzwerkkommunikation/Konsistenzstufen, etc.
    ●   Festplattenperformance ausschlaggebend.
    ●   Cluster noch zu klein
●   Effektiv verfügbarer Plattenplatz:
    ●   1 Cluster: 6 * 500 GB = 3TB bei RAID 5 = 2.5 TB (83%)
    ●   4 Cluster: 4 * 1TB = 4TB bei Replikationsfaktor 2 = 2TB (50%)



LinuxTag Berlin, 13. 5. 2011    (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Alternativen
 ●   MongoDB, CouchDB, redis, sogar
     memcached... .
 ●   Persistenz: Festplatte oder RAM?
 ●   Replikation: Master/Slave oder Peer-to-Peer?
 ●   Sharding?
 ●   Trend zu komplexeren Querysprachen
     (Javascript), Map-Reduce Operationen, etc.



LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Fazit: Cassandra
 ●   Gut skalierende Plattform
 ●   Aktive Benutzer- und Entwicklercommunity
 ●   Leseoperationen relativ teuer
 ●   Für optimale Leistung detailliertes Tuning nötig
 ●   Je nach Anwendung “eventually consistent” und
     fehlende Transaktionen/Locking problematisch.




LinuxTag Berlin, 13. 5. 2011      (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de
Links
●   Apache Cassandra http://cassandra.apache.org
●   Apache Cassandra Wiki
    http://wiki.apache.org/cassandra/FrontPage
●   DataStax Dokumentation für Cassandra
    http://www.datastax.com/docs/0.7/index
●   Mein Blog: http://blog.mikiobraun.de
●   Twimpact: http://beta.twimpact.com




LinuxTag Berlin, 13. 5. 2011   (c) 2011 by Mikio L. Braun   @mikiobraun, blog.mikiobraun.de

Weitere ähnliche Inhalte

Andere mochten auch

Big Data Bullshit Bingo
Big Data Bullshit BingoBig Data Bullshit Bingo
Big Data Bullshit BingoDanny Linden
 
Big Data User Prediction: Siegfried Stepke, e-dialog
Big Data User Prediction: Siegfried Stepke, e-dialog Big Data User Prediction: Siegfried Stepke, e-dialog
Big Data User Prediction: Siegfried Stepke, e-dialog e-dialog GmbH
 
User Inspired Management of Scientific Jobs in Grids and Clouds
User Inspired Management of Scientific Jobs in Grids and CloudsUser Inspired Management of Scientific Jobs in Grids and Clouds
User Inspired Management of Scientific Jobs in Grids and CloudsEran Chinthaka Withana
 
6 Data Modeling for NoSQL 2/2
6 Data Modeling for NoSQL 2/26 Data Modeling for NoSQL 2/2
6 Data Modeling for NoSQL 2/2Fabio Fumarola
 
Query Languages for Document Stores
Query Languages for Document StoresQuery Languages for Document Stores
Query Languages for Document StoresInteractiveCologne
 
Technologie und SEO: Cloud, Big Data und Mobile First angeschaut
Technologie und SEO: Cloud, Big Data und Mobile First angeschautTechnologie und SEO: Cloud, Big Data und Mobile First angeschaut
Technologie und SEO: Cloud, Big Data und Mobile First angeschautRalf Schwoebel
 
A NoSQL Summer - The Year After
A NoSQL Summer - The Year AfterA NoSQL Summer - The Year After
A NoSQL Summer - The Year AfterMeMo News AG
 
Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...
Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...
Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...Helena Edelson
 
Tech Talk Cassandra
Tech Talk CassandraTech Talk Cassandra
Tech Talk Cassandraadesso AG
 

Andere mochten auch (12)

Big Data Bullshit Bingo
Big Data Bullshit BingoBig Data Bullshit Bingo
Big Data Bullshit Bingo
 
Big Data User Prediction: Siegfried Stepke, e-dialog
Big Data User Prediction: Siegfried Stepke, e-dialog Big Data User Prediction: Siegfried Stepke, e-dialog
Big Data User Prediction: Siegfried Stepke, e-dialog
 
User Inspired Management of Scientific Jobs in Grids and Clouds
User Inspired Management of Scientific Jobs in Grids and CloudsUser Inspired Management of Scientific Jobs in Grids and Clouds
User Inspired Management of Scientific Jobs in Grids and Clouds
 
6 Data Modeling for NoSQL 2/2
6 Data Modeling for NoSQL 2/26 Data Modeling for NoSQL 2/2
6 Data Modeling for NoSQL 2/2
 
Query Languages for Document Stores
Query Languages for Document StoresQuery Languages for Document Stores
Query Languages for Document Stores
 
Technologie und SEO: Cloud, Big Data und Mobile First angeschaut
Technologie und SEO: Cloud, Big Data und Mobile First angeschautTechnologie und SEO: Cloud, Big Data und Mobile First angeschaut
Technologie und SEO: Cloud, Big Data und Mobile First angeschaut
 
A NoSQL Summer - The Year After
A NoSQL Summer - The Year AfterA NoSQL Summer - The Year After
A NoSQL Summer - The Year After
 
Einführung Big Data
Einführung Big DataEinführung Big Data
Einführung Big Data
 
Big Data: Kunden auf der Spur
Big Data: Kunden auf der SpurBig Data: Kunden auf der Spur
Big Data: Kunden auf der Spur
 
Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...
Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...
Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...
 
Big Data & High-Performance-Analytics
Big Data & High-Performance-AnalyticsBig Data & High-Performance-Analytics
Big Data & High-Performance-Analytics
 
Tech Talk Cassandra
Tech Talk CassandraTech Talk Cassandra
Tech Talk Cassandra
 

Ähnlich wie Cassandra - Eine Einführung

Python Mike Müller
Python Mike MüllerPython Mike Müller
Python Mike MüllerAberla
 
Perl5 Maintenance Fund
Perl5 Maintenance FundPerl5 Maintenance Fund
Perl5 Maintenance FundRenee Baecker
 
TYPO3 5.0 - Der aktuelle Stand der Zukunft
TYPO3 5.0 - Der aktuelle Stand der ZukunftTYPO3 5.0 - Der aktuelle Stand der Zukunft
TYPO3 5.0 - Der aktuelle Stand der ZukunftJochen Rau
 
Java Magazin 5 / 2010 - Twitter nachgebaut mit Lift
Java Magazin 5 / 2010 - Twitter nachgebaut mit LiftJava Magazin 5 / 2010 - Twitter nachgebaut mit Lift
Java Magazin 5 / 2010 - Twitter nachgebaut mit LiftJohannes Hohenbichler
 
Alle Änderungen zu TYPO3 6.0
Alle Änderungen zu TYPO3 6.0Alle Änderungen zu TYPO3 6.0
Alle Änderungen zu TYPO3 6.0Alex Kellner
 
Sich selbst verstehen – der ELK-Stack in der Praxis
Sich selbst verstehen – der ELK-Stack in der PraxisSich selbst verstehen – der ELK-Stack in der Praxis
Sich selbst verstehen – der ELK-Stack in der PraxisAlexander Papaspyrou
 
Fundamentale Muster in Java
Fundamentale Muster in JavaFundamentale Muster in Java
Fundamentale Muster in Javatutego
 
Digitales Publizieren
Digitales PublizierenDigitales Publizieren
Digitales PublizierenTIB Hannover
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Nane Kratzke
 
Lambert Heller @ Zukunftswerkstatt, BID-Kongreß 2010: Thesenpapier zum Thema ...
Lambert Heller @ Zukunftswerkstatt, BID-Kongreß 2010: Thesenpapier zum Thema ...Lambert Heller @ Zukunftswerkstatt, BID-Kongreß 2010: Thesenpapier zum Thema ...
Lambert Heller @ Zukunftswerkstatt, BID-Kongreß 2010: Thesenpapier zum Thema ...TIB Hannover
 
mm_forum 2.0
mm_forum 2.0mm_forum 2.0
mm_forum 2.0mhelmich
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETGFU Cyrus AG
 
Die freie Programmiersprache Python
Die freie Programmiersprache Python Die freie Programmiersprache Python
Die freie Programmiersprache Python Andreas Schreiber
 

Ähnlich wie Cassandra - Eine Einführung (20)

Python Mike Müller
Python Mike MüllerPython Mike Müller
Python Mike Müller
 
Perl5 Maintenance Fund
Perl5 Maintenance FundPerl5 Maintenance Fund
Perl5 Maintenance Fund
 
TYPO3 5.0 - Der aktuelle Stand der Zukunft
TYPO3 5.0 - Der aktuelle Stand der ZukunftTYPO3 5.0 - Der aktuelle Stand der Zukunft
TYPO3 5.0 - Der aktuelle Stand der Zukunft
 
Java Magazin - Lift
Java Magazin - LiftJava Magazin - Lift
Java Magazin - Lift
 
Java Magazin 5 / 2010 - Twitter nachgebaut mit Lift
Java Magazin 5 / 2010 - Twitter nachgebaut mit LiftJava Magazin 5 / 2010 - Twitter nachgebaut mit Lift
Java Magazin 5 / 2010 - Twitter nachgebaut mit Lift
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 
Alle Änderungen zu TYPO3 6.0
Alle Änderungen zu TYPO3 6.0Alle Änderungen zu TYPO3 6.0
Alle Änderungen zu TYPO3 6.0
 
Sich selbst verstehen – der ELK-Stack in der Praxis
Sich selbst verstehen – der ELK-Stack in der PraxisSich selbst verstehen – der ELK-Stack in der Praxis
Sich selbst verstehen – der ELK-Stack in der Praxis
 
Fundamentale Muster in Java
Fundamentale Muster in JavaFundamentale Muster in Java
Fundamentale Muster in Java
 
NoSQL und CouchDB
NoSQL und CouchDBNoSQL und CouchDB
NoSQL und CouchDB
 
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAYPLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
 
Digitales Publizieren
Digitales PublizierenDigitales Publizieren
Digitales Publizieren
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)
 
Lambert Heller @ Zukunftswerkstatt, BID-Kongreß 2010: Thesenpapier zum Thema ...
Lambert Heller @ Zukunftswerkstatt, BID-Kongreß 2010: Thesenpapier zum Thema ...Lambert Heller @ Zukunftswerkstatt, BID-Kongreß 2010: Thesenpapier zum Thema ...
Lambert Heller @ Zukunftswerkstatt, BID-Kongreß 2010: Thesenpapier zum Thema ...
 
mm_forum 2.0
mm_forum 2.0mm_forum 2.0
mm_forum 2.0
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
 
Enterprise JS
Enterprise JS Enterprise JS
Enterprise JS
 
Codeblocks manual de_2012
Codeblocks manual de_2012Codeblocks manual de_2012
Codeblocks manual de_2012
 
Neuerungen in TYPO3 6.0
Neuerungen in TYPO3 6.0Neuerungen in TYPO3 6.0
Neuerungen in TYPO3 6.0
 
Die freie Programmiersprache Python
Die freie Programmiersprache Python Die freie Programmiersprache Python
Die freie Programmiersprache Python
 

Mehr von Mikio L. Braun

Bringing ML To Production, What Is Missing? AMLD 2020
Bringing ML To Production, What Is Missing? AMLD 2020Bringing ML To Production, What Is Missing? AMLD 2020
Bringing ML To Production, What Is Missing? AMLD 2020Mikio L. Braun
 
Academia to industry looking back on a decade of ml
Academia to industry looking back on a decade of mlAcademia to industry looking back on a decade of ml
Academia to industry looking back on a decade of mlMikio L. Braun
 
Architecting AI Applications
Architecting AI ApplicationsArchitecting AI Applications
Architecting AI ApplicationsMikio L. Braun
 
Machine Learning for Time Series, Strata London 2018
Machine Learning for Time Series, Strata London 2018Machine Learning for Time Series, Strata London 2018
Machine Learning for Time Series, Strata London 2018Mikio L. Braun
 
Hardcore Data Science - in Practice
Hardcore Data Science - in PracticeHardcore Data Science - in Practice
Hardcore Data Science - in PracticeMikio L. Braun
 
Data flow vs. procedural programming: How to put your algorithms into Flink
Data flow vs. procedural programming: How to put your algorithms into FlinkData flow vs. procedural programming: How to put your algorithms into Flink
Data flow vs. procedural programming: How to put your algorithms into FlinkMikio L. Braun
 
Scalable Machine Learning
Scalable Machine LearningScalable Machine Learning
Scalable Machine LearningMikio L. Braun
 
Realtime Data Analysis Patterns
Realtime Data Analysis PatternsRealtime Data Analysis Patterns
Realtime Data Analysis PatternsMikio L. Braun
 

Mehr von Mikio L. Braun (8)

Bringing ML To Production, What Is Missing? AMLD 2020
Bringing ML To Production, What Is Missing? AMLD 2020Bringing ML To Production, What Is Missing? AMLD 2020
Bringing ML To Production, What Is Missing? AMLD 2020
 
Academia to industry looking back on a decade of ml
Academia to industry looking back on a decade of mlAcademia to industry looking back on a decade of ml
Academia to industry looking back on a decade of ml
 
Architecting AI Applications
Architecting AI ApplicationsArchitecting AI Applications
Architecting AI Applications
 
Machine Learning for Time Series, Strata London 2018
Machine Learning for Time Series, Strata London 2018Machine Learning for Time Series, Strata London 2018
Machine Learning for Time Series, Strata London 2018
 
Hardcore Data Science - in Practice
Hardcore Data Science - in PracticeHardcore Data Science - in Practice
Hardcore Data Science - in Practice
 
Data flow vs. procedural programming: How to put your algorithms into Flink
Data flow vs. procedural programming: How to put your algorithms into FlinkData flow vs. procedural programming: How to put your algorithms into Flink
Data flow vs. procedural programming: How to put your algorithms into Flink
 
Scalable Machine Learning
Scalable Machine LearningScalable Machine Learning
Scalable Machine Learning
 
Realtime Data Analysis Patterns
Realtime Data Analysis PatternsRealtime Data Analysis Patterns
Realtime Data Analysis Patterns
 

Cassandra - Eine Einführung

  • 1. Cassandra – Eine Einführung Mikio L. Braun Leo Jugel TU Berlin, twimpact LinuxTag Berlin 13. Mai 2011 LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 2. Was ist NoSQL? ● Für viele Webanwendungen sind “klassische Datenbanken” nicht die richtige Wahl: ● Datenbank im Wesentlichen nur Speicher für Objekte ● Konsistenz nicht unbedingt erforderlich ● Viele gleichzeitige Zugriffe LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 3. NoSQL im Vergleich Klassische Datenbanken NoSQL Mächtige Querysprache Sehr einfache Querysprache Skaliert durch größere Server Skaliert auf einem Cluster (“Scaling Up”) (“Scaling Out”) Änderungen des Datenbankschemas Kein festes Datenbankschema aufwendig ACID: Atomicity, Consistency, Isolation, In der Regel nur “eventually consistent”. Durability Transaktionen, Locking, etc. In der Regel keine Unterstützung für Transaktionen o.ä. LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 4. Brewer's CAP Theorem ● CAP: Consistency, Availability, Partition Tolerance ● Consistency: Man erhält keine veralteten Daten. ● Availability: Lese/Schreiboperationen sind immer möglich. ● Partition Tolerance: Bei Netzwerk oder Rechnerausfällen bleiben die restlichen Garantien erhalten. ● Man kann nur jeweils zwei davon garantieren! Gilbert, Lynch, Brewer's conjecture and the feasibility of consistent, available, partition- tolerant web services, ACM SIGACT News, Volume 33, Issue 2, June 2002 LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 5. Homepage http://cassandra.apache.org Programmiersprache Java Geschichte ● Bei Facebook zur Indexsuche entwickelt, im Juli 2008 als Open Source freigegeben ● Seit März 2009 Apache Incubator ● Seit Februar 2010 Apache Top-Level Haupteigenschaften ● strukturierter Key-Value-Store ● “eventually consistent” ● völlig gleichberechtigte Knoten ● Cluster ohne Neustart modifizierbar Support DataStax (http://datastax.com) Lizenz Apache 2.0 LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 6. Version 0.6.x und 0.7.x ● Wichtigsten Änderungen in 0.7.x ● Konfigurationsdateien in YAML statt XML ● Schemamodifikationen (ColumnFamilies) im laufenden Betrieb ● Erste Ansätze für Sekundärindexe. ● Allerdings auch anfängliche Stabilitätsprobleme LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 7. Inspirationen für Cassandra ● Amazon Dynamo ● Cluster ohne dezidierte Masterknoten ● Peer-to-Peer Erkennung, HintedHintoff, etc. ● Google BigTable ● Datenmodell ● Benötigt zentrale Masterknoten ● Bietet wesentlich mehr Möglichkeiten der Kontrolle: – welche Daten gemeinsam gespeichert werden sollten – On-the-fly Kompression, etc. LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 8. Installation ● tar.gz von http://cassandra.apache.org/download/ herunterladen ● In Verzeichnis auspacken ● ./conf enthält Konfigurationsdateien ● ./bin/cassandra -f startet Cassandra, Ctrl-C zum stoppen LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 9. Konfiguration ● Datenbank ● Version 0.6.x: conf/storage-conf.xml ● Version 0.7.x: conf/cassandra.yaml ● JVM Parameter ● Version 0.6.x: bin/cassandra.in.sh ● Version 0.7.x: conf/cassandra-env.sh LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 10. Cassandras Datenmodell Keyspace (= Datenbank) Bytearrays Column Family (= Tabelle) Row key {name1: value1, name2: value2, name3: value3, ...} Column Strings Sortiert nach Namen! Sortierung hängt vom Partitioner ab! Super Column Family key key {name1: value1, ...} LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 11. Beispiel: Einfacher Objektspeicher class Person { long id; String name; String affiliation; } Felder in Bytearrays umwandeln Keyspace “MyDatabase”: ColumnFamily “Person”: “1”: {“id”: “1”, “name”: “Mikio Braun, “affiliation”: “TU Berlin”} LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 12. Beispiel: Index class Page { long id; … Datenfelder der Objekte List<Links> links; } Keyspace “MyDatabase” ColumnFamily “Pages” class Link { “3”: {“id”: 3, …} long id; “4”: {“id”: 4, …} ... Sowohl für die Verlinkung, int numberOfHits; ColumnFamily “Links” als auch zum Indizieren! } “1”: {“id”: 1, “url”: …} “17”. {“id”: 17, “url”: …} ColumnFamily “LinksPerPageByNumberOfHits” “3”: { “00000132:00000001”, “000025: 00000017”: …} “4”: { “00000044:00000024”, … } Hier wird ausgenutzt, dass Columns nach Namen sortiert werden! Natürlich alles auf Bytearrayebene! LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 13. Benötigt man SuperColumnFamilies? ● Meistens kann man SuperColumnFamilies durch mehrere ColumnFamilies ersetzen. ● Da die SuperColumnFamilies die Implementation und das Protokol verkomplizieren gibt es auch Stimmen, die sie ganz abschaffen wollen... . LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 14. Cassandras Architektur MemTable Leseoperation Flush Speicher Festplatte Schreiboperation Commit Log SSTable SSTable SSTable Compaction! LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 15. Cassandras API ● THRIFT-basierte API Leseoperationen Schreiboperationen get Einzelne Column insert Einzelne Column get_slice Reihe von Columns batch_mutate Mehrere Columns in multiget_slice Reihe von Columns in verschiedenen verschiedenen Rows Rows get_count Anzahl von Columns remove Einzelne Column get_range_slice Reihe von Columns in truncate Ganze Column einer Reihe von Rows Family get_indexed_slices Reihe von Columns mit Index Sonstige login, describe_*, add/drop column family/keyspace erst in 0.7.x LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 16. Cassandra im Cluster ● Völlig gleichberechtigte Knoten ● Zum Bootstrappen ein Seed nötig “Storage Proxy” Knoten Knoten Knoten Liest/schreibt gemäß Konsistenzstufe Anfrage LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 17. Konsistenzstufen und Replikationsfaktor ●Replikationsfaktor: Auf wie vielen Knoten werden die Daten gespeichert? ● Konsistenzstufen: Konsistenzlevel ANY Ein Knoten hat die Operation bekommen, selbst im Fall von HintedHandoff ONE Auf einem Knoten wurde die Operation ausgeführt. QUORUM Operation für die Mehrzahl der Knoten ausgeführt / Neuestes Resultat wird zurückgegeben LOCAL_QUORUM QUORUM im lokalen Datenzentrum GLOBAL_QUORUM QUORUM im globalen Datenzentrum ALL Warte, bis alle Knoten die Operation ausgeführt haben. LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 18. Verhalten bei Ausfall ● Solange Anforderungen der Konsistenzstufe erfüllt werden können, ist alles in Ordnung. ● Hinted Handoff: ● Eine Schreiboperations für einen ausgefallenen Knoten wird auf einem anderen Knoten gemerkt. ● Diese Daten sind anschließend nicht lesbar! ● Read Repair: ● Selbst nachdem die Leseoperation abgeschlossen ist, werden die Daten überprüft und ggf. aktualisiert. LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 19. Bibliotheken Python Pycassa: http://github.com/pycassa/pycass Telephus: http://github.com/driftx/Telephus Java Datanucleus JDO:http://github.com/tnine/Datanucleus-Cassandra-Plugin Hector: http://github.com/rantav/hector Kundera http://code.google.com/p/kundera/ Pelops: http://github.com/s7/scale7-pelops Grails grails-cassandra: https://github.com/wolpert/grails-cassandra .NET Aquiles: http://aquiles.codeplex.com/ FluentCassandra: http://github.com/managedfusion/fluentcassandra Ruby Cassandra: http://github.com/fauna/cassandra PHP phpcassa: http://github.com/thobbs/phpcassa SimpleCassie: http://code.google.com/p/simpletools-php/wiki/SimpleCassie Oder was selbstgebautes direkt auf THRIFT http://thrift.apache.org/ :) LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 20. TWIMPACT: Eine Anwendung ● Echtzeitanalyse von Twitter ● Trendanalyse basierend auf Retweets ● Sehr hohes Datenaufkommen (mehrere Millionen Tweets am Tag, ca. 50/s) LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 21. TWIMPACT: twimpact.jp LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 22. TWIMPACT: twimpact.com LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 23. Anwendungsprofil ● Informationen über Tweets, User, Retweets ● Textmatching für nicht-API-Retweets ● Retweetshäufigkeiten und Userimpact ● Operationsprofil: get_slice get get_slice batch_mutate insert batch_mutate remove (alle) (Bereich) (eine Row) Anteil 50.1% 6.0% 0.1% 14.9% 21.5% 6.8% 0.8% Dauer 1.1ms 1.7ms 0.8ms 0.9ms 1.1ms 0.8ms 1.2ms LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 24. Praktische Erfahrungen mit Cassandra ● Sehr stabiler Betrieb ● Leseoperationen verhältnismäßig teuer ● Multithreading bringt große Performanceverbesserung ● Relativ aufwendiges Tuning erforderlich ● Clusterbetrieb bringt nicht unbedingt Verbesserung ● Compaction führt zu bis zu 50% Performanceeinbruch LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 25. Performance durch Multithreading ● Multithreading bringt erheblich mehr Performance. ● Multithreading ohne Transaktionen/Locking? 64 32 16 8 4 2 1 Core i7, 4 cores (2 + 2 HT) LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 26. Performance durch Multithreading ● Multithreading bringt erheblich mehr Performance. ● Multithreading ohne Transaktionen/Locking? LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 27. Cassandra Tuning ● Tuningmöglichkeiten: ● Größe der Memtables, Thresholds für Flushes ● Größe des JVM Heaps ● Häufigkeit, Tiefe der Compaction ● Wo? ● MemTableThresholds etc. in conf/cassandra.yaml ● JVM Parameter in conf/cassandra-env.sh LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 28. Übersicht über die GC der JVM Old Generation Young Generation CMSInitiatingOccupancyFraction “Eden” “Survivors” Zusätzlicher Speicherverbrauch bis zu ein paar hundert MB Dutzende GB während der GC LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 29. Cassandras Speicherverhalten Flush Memtables, Indices, etc. Memtablegröße: 128M, JVM Heap: 3G, #CF: 12 Compaction LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 30. Cassandras Speicherverhalten ● Memtables überleben extrem lange (mehrere Stunden) ● Landen in der Old Generation ● Bei GC müssen mehrere Dutzend GB aufgeräumt werden. ● Heap zu klein, oder GC zu spät ausgelöst  “GC storm” ● Tradeoff: ● I/O Last vs. Speicherbrauch ● Compaction nicht vernachlässigen! LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 31. Die Auswirkungen von GC und Compaction Große GC Compaction LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 32. Cluster und Einzelknoten ● Im Vergleich: ● 1 Cluster mit six-core CPU und RAID 5 aus 6 Festplatten ● 4 Cluster mit six-core CPU mit RAID 0 aus 2 Festplatten ● Einzelcluster lieferte konsistent 1,5-3 Mal mehr Performance. ● Gründe: ● Overhead durch Netzwerkkommunikation/Konsistenzstufen, etc. ● Festplattenperformance ausschlaggebend. ● Cluster noch zu klein ● Effektiv verfügbarer Plattenplatz: ● 1 Cluster: 6 * 500 GB = 3TB bei RAID 5 = 2.5 TB (83%) ● 4 Cluster: 4 * 1TB = 4TB bei Replikationsfaktor 2 = 2TB (50%) LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 33. Alternativen ● MongoDB, CouchDB, redis, sogar memcached... . ● Persistenz: Festplatte oder RAM? ● Replikation: Master/Slave oder Peer-to-Peer? ● Sharding? ● Trend zu komplexeren Querysprachen (Javascript), Map-Reduce Operationen, etc. LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 34. Fazit: Cassandra ● Gut skalierende Plattform ● Aktive Benutzer- und Entwicklercommunity ● Leseoperationen relativ teuer ● Für optimale Leistung detailliertes Tuning nötig ● Je nach Anwendung “eventually consistent” und fehlende Transaktionen/Locking problematisch. LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de
  • 35. Links ● Apache Cassandra http://cassandra.apache.org ● Apache Cassandra Wiki http://wiki.apache.org/cassandra/FrontPage ● DataStax Dokumentation für Cassandra http://www.datastax.com/docs/0.7/index ● Mein Blog: http://blog.mikiobraun.de ● Twimpact: http://beta.twimpact.com LinuxTag Berlin, 13. 5. 2011 (c) 2011 by Mikio L. Braun @mikiobraun, blog.mikiobraun.de