Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Cassandra: Ein verteiltes Speichersystem für strukturierte Daten mit schließlicher Konsistenz (Open-Source-Projekt) Andreas Prante 27.11.2018.

Ähnliche Präsentationen


Präsentation zum Thema: "Cassandra: Ein verteiltes Speichersystem für strukturierte Daten mit schließlicher Konsistenz (Open-Source-Projekt) Andreas Prante 27.11.2018."—  Präsentation transkript:

1 Cassandra: Ein verteiltes Speichersystem für strukturierte Daten mit schließlicher Konsistenz (Open-Source-Projekt) Andreas Prante

2 Übersicht Motivation Einleitung Architektur Datenmodell API Ausblick

3 Motivation Apache Cassandra ist eine Open Source, verteilte,
dezentralisierte, skalierbare, hoch verfügbare, Fehler tolerante, einstellbar konsistente, zeilenorientierte Datenbank, deren Design auf Amazon‘s Dynamo und deren Datenmodell auf Google‘s BigTable aufbaut.

4 Allgemeine Informationen
2007 entwickelt Maßgeblich von P. Malik und A. Lakshman Nachrichtendienst von Facebook 2008 als Open-Source freigegeben 2010 von Apache als Top-Level-Projekt aufgenommen Implementierung in Java Genutzt von: Facebook, Adobe, Twitter, ebay, HP, IBM, US-Regierung Bisher größte, bekannte Ausführung beinhaltet mehr als 300 TB Daten verteilt auf 400 Knoten(Nodes)

5 Architektur

6 Node Cluster Ausgeführte Instanz von Cassandra
Jeder Node läuft mit dem selben Code Jeder Node ist für einen bestimmten Schlüsselbereich zuständig Cluster Zusammenschluss von mehreren Nodes Schlüsselbereich eines Nodes wird zufällig bestimmt Struktur entspricht einem Ring

7 Ringstruktur - konsistentes Hashing
Node 8 Node 1 Node 2 Node 7 Node 6 Node 3 Node 5 Node 4

8 Ringstruktur - konsistentes Hashing
md5(key) Key/Value-Paar Node 8 Node 1 Replikationsfaktor N = 3 Node 2 Node 7 Node 6 Node 3 Node 5 Node 4

9 Wie wird ein Node hinzugefügt?

10 Wie wird ein Node hinzugefügt?

11 Datenmodell

12 Datenmodell Keyspace ColumnFamily SuperColumn Column

13 Keyspace Größte Einheit „Container“ für ColumnFamilies Namespace
Muss vor Start einer Anwendung festgelegt sein Es kann beliebig viele geben In der Regel einer pro Anwendung

14 Beispiel Innerhalb eines sozialen Netzwerk „Wild-West“-Spiel
Anwender haben Rollen wie z.B. Outlaw, Sherif, Cowboy Keyspace: wildwest

15 ColumnFamily Enthält Reihen von Columns
Entspricht in etwa den wichtigsten Tabellen in RDBMS Attributnamen innerhalb einer ColumnFamily sind eindeutig Es können Attribute zur Laufzeit hinzugefügt werden.

16 Beispiel - ColumnFamilies
Users Horses Weapons Duels Messages

17 Column Kleinste Einheit
Enthält jeweils Key-Value-Paare mit Zeitstempel

18 SuperColumn Column mit Subcolumns
Kennzeichnung durch „super“ bei der Column-Definition Schlüssel verweist auf {Column, Column,…}

19 Konfigurationsdatei Die Konfigurationsdatei wird beim Start von Cassandra geladen. keyspaces: - name: WildWest replication_factor: 5 column_families: - name: Users - name: Weapons - name: Horses - name: Messages - name: Duels column_type: Super

20 API

21 API set ColumnFamily[Key][Column] = Wert;
set Users['Jim']['reactivity'] = 1; set Users['Joe']['reactivity'] = 9: set Users['Joe']['nick_name'] = 'Little Joe'; get(table, key, columnName) delete(table, key, columnName)

22 API - get Lesen von Daten get ColumnFamily[Key][Column] = Wert;
get Users['Joe'] as utf8; => (column=nick_name, value=Little Joe, timestamp= ) => (column=reactivity, value=30, timestamp= )

23 API - set Insert Cassandra unterscheidet nicht zwischen Insert und Update set ColumnFamily[Key][Column] = Wert; set Users['Jim']['reactivity'] = 1; set Users['Joe']['reactivity'] = 9: set Users['Joe']['nick_name'] = 'Little Joe';

24 API - del Löschen Es können ganze Zeilen oder auch nur einzelnen Spalten gelöscht werden. Es gibt keine Überwachung, ob die Daten noch an einer anderen Stelle verwendet werden. del ColumnFamily[Key][Column] = Wert; del Users['Joe']['nick_name']; del Users['Jim'];

25 CAP-Theorem P C A Strong Consitency High Availability
Partition-tolerance Verteiltes Datenbanksystem kann immer nur 2 der 3 erreichen P C A

26 Konsistenz Strenge Konsistenz Schwache Konsistenz
Ist ein Schreibvorgang abgeschlossen, liefern alle nachfolgenden Lesevorgänge den geänderten Wert Schwache Konsistenz Es gibt ein Zeitfenster, in dem Änderung die durch einen Schreibvorgang entstehen nicht zurückgeliefert werden. Schließliche Konsistenz Es wird eine endliche Zeit garantiert, nach der die Änderung, die durch einen Schreibvorgang entstehen, zurückgeliefert werden.

27 Konsistenzebenen

28 Wie erreicht man starke Konsistenz
Sei N die Anzahl der Replikationsknoten Sei R die Anzahl der Knoten, die eine Leseoperation bestätigen (analog W für Schreiboperationen) Gilt R + W > N herrscht starke Konsistenz Daraus folgt: Wählt man die Konsistenzebene „Quorum“ für Lese- und Schreiboperationen, ergibt sich starke Konsistenz.

29 Wie wird gelesen/geschrieben?
Ermittle alle Knoten, die betroffen sind Anfrage an die Knoten weiterleiten und Daten sammeln Kommt keine Antwort innerhalb einer bestimmten Wartezeit: Abbruch Als Ergebnis wird die Antwort verwendet, den aktuellsten Zeitstempel hat Führe evtl. notwendige Korrekturen durch  Lesen führt zu bedingtem Schreiben!

30 Synchrone Uhrzeit Wie aktuell ein Key-Value-Paar ist, wird über seinen Zeitstempel entschieden. Es muss daher für das gesamte System eine synchrone Zeit geben. Ist das nicht der Fall, werden evtl. nicht mehr aktuelle Daten beim Lesen zurückgegeben. Zusätzlich gehen dann auch noch Daten verloren.

31 Sortierung der Daten AsciiType: Sortierung nach dem Byte-Wert des Namens; dabei findet eine Prufung statt, ob dieser als US-ASCII interpretiert werden kann. ƒBytesType: Sortierung nach Byte-Wert des Namens ƒUTF8Type: Sortierung nach dem als UTF-8-Zeichenkette interpretierten Namen ƒLexicalUUIDType: 128bit UUID, der Byte-Wert wird lexikalisch verglichen. ƒTimeUUIDType: 128bit UUID, der Zeitstempel des Namens wird verglichen. ƒLongType: Werte des Namens werden als 64bit Long-Werte interpretiert.

32 Konfigurationsdatei keyspaces: - name: WildWest replication_factor: 5
column_families: - name: Users compare_with: UTF8Type - name: Weapons - name: Horses - name: Messages compare_with: TimeUUIDType - name: Duels column_type: Super compare_subcolumns_with: UTF8Type

33 Beispiel - Warenkorb Analog Amazon
Cassandra-Datenbank mit N = 5 und #Nodes >> 5 Der Anwender möchte einkaufen Durch eine Unachtsamkeit öffnet er drei Sitzungen (z.B. 3 Fenster) In jeder Sitzung wählt er ein Produkt zum Kauf aus Anschließend geht zur „Kasse“ Es gibt eine ColumnFamily Warenkörbe Warenkörbe werden über den Usernamen als Schlüssel zugeordnet Was passiert?

34 Beispiel - Warenkorb Warenkorb 1 Warenkorb 2 Warenkorb 3 NoSQL DVD
Cassandra DVD 1, 2, 3 3, 4, 5 2, 4, 5 Lesen: Node 1: NoSQL Node 4: Cassandra, DVD Node 2: NoSQL, DVD Node 5: Cassandra, DVD Node 3: NoSQL, Cassandra

35 Cassandra Querry Language(CQL)
select * from Users; select * from Duels where player1 = Joe; select count(*) from Horses; update Users set reactivity=9 where key=Jim; update Users set nick_name='Little Joe', reactivity=9 where key=Joe; delete nick_name from Users where key=Joe; delete from Users where key=Jim;

36 Cassandra Querry Language(CQL)
create keyspace WildWest; use WildWest; create column family Users; create column family Horses; create column family Weapons; create column family Duels with column_type = 'Super'; create column family Messages;

37 Cassandra Querry Language(CQL)
create keyspace WildWest; use WildWest; create column family Users with comparator = 'UTF8Type'; create column family Horses with comparator = 'UTF8Type'; create column family Weapons with comparator = 'UTF8Type'; create column family Duels with column_type = 'Super' and comparator = 'UTF8Type' and subcomparator = 'BytesType'; create column family Messages with comparator = 'UTF8Type';

38 Ausblick – Vorteile von Cassandra
Einfach Skalierbar  kein Single Point of Failure Jeder Zeit erweiterbar Anfragesprache CQL Wird mittlerweile auch z.B. durch JDBC-Treiber unterstützt Effiziente Bereichsabfragen Variable Replikationsstrategien Konsistenz, Latenz, usw. können vom Anwender bestimmt werden.

39 Ausblick – Nachteile von Cassandra
Es wird eine synchrone Uhr benötigt Keine eindeutige Dokumentation Cassandra befindet sich in einem frühren Stadium der Entwicklung Einschränkungen der Abfragemöglichkeiten

40 Ausblick - Anwendungsgebiete
Nicht: Alles läuft auf einer Maschine Viele, verteilte Knoten Mehr Schreiben als Lesen Erweiterbarkeit Ausfallsicherheit Flexibilität

41 Vielen Dank für Ihre Aufmerksamkeit.

42 Quellen Avinash Lakshman, Prashant Malik: Cassandra: a decentralized structured storage system. Operating Systems Review 44(2): (2010) Eben Hewitt: Cassandra: The Definitive Guide. O'Reilly Media, 2010 Stefan Edlich u.a.: NoSQL - Einstieg in die Welt nichtrelationaler Web 2.0 Datenbanken, 2. Aufl., Hanser-Verlag, 2011 (FG-Bibliothek) Dimitrios Dentsas; Cassandra; Christoph Föhrdes; NoSQL - Einblick in die Welt nicht-relationaler Datenbanken;


Herunterladen ppt "Cassandra: Ein verteiltes Speichersystem für strukturierte Daten mit schließlicher Konsistenz (Open-Source-Projekt) Andreas Prante 27.11.2018."

Ähnliche Präsentationen


Google-Anzeigen