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

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

ER-Datenmodell und Abfragen in SQL
Datenbankdesign mit ACCESS.
Transaction Synchronization for XML Data in Client Server Web Applications Stefan Böttcher & Adelhard Türling Universität Paderborn.
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
Objekt – Relationales – Modell Tomasz Makowski IN
PC-Cluster.
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Ruby on Rails im Überblick
XINDICE The Apache XML Project Name: Jacqueline Langhorst
SQL als Abfragesprache
SQL als Abfragesprache
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Text-Retrieval mit Oracle Vortrag von Andreas Mück & David Diestel.
Otto-von-Guericke-Universität Magdeburg Gamal Kassem 1 Tabellenzeile mit READ lesen READ TABLE itab INDEX idx READ TABLE itab WITH KEY comp1 = f1.... Compn.
Otto-von-Guericke-Universität MagdeburgGamal Kassem Übung 7 Reports mit Datenbankzugriff.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Transaction Script Software Component Technology for Distributed Applications.
Datenintegrität Referentielle Integrität create table
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
Abfragen – Tipps und Tricks Buch S102ff (Informatik I, Oldenbourg-Verlag) Nach einer Vorlage von Dieter Bergmann.
JDBC: JAVA Database Connectivity
YouTube5 .0 Projektpräsentation
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
Effiziente Algorithmen
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #9 Physische Datenorganisation.
Einführung in Datenbankmodellierung und SQL
Relationales Datenmodell und DDL
Normalisierungsprozess
Algorithmen und Datenstrukturen Übungsmodul 11
Datenbankanbindung mit
Integritätserhaltung und -Überprüfung in deduktiven Datenbanken
Structured Query Language
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
1 Referenzielle Konsistenz (1) Vorgehensweise: Klausel references mit nachfolgender Spezikation eines Attributs einer anderen Tabelle identifiziert ein.
Datenbanken im Web 1.
Datenbank für Skriptenverkauf
PHPmyadmin Maya Kindler 6c.
Datenbanken erstellen mit PostgreSQL
Datenbanken abfragen mit SQL
Pool Informatik, Sj 11/12 GZG FN W.Seyboldt 1 Pool Informatik 5 GZG FN Sj. 11/12 Kopieren, Daten, Programme.
Binärbäume.
© 2012 TravelTainment Einführung in NoSql-Datenbanken und der Vergleich zu relationalen Datenbanken Alexey Sibirtsev.
© 2015 TravelTainment NoSQL – Eine Alternative zu relationalen Datenbanken Dominik Schmitz.
Effektives Delta Laden DOAG SID Data Warehouse. Ziele Welche CDC Methoden gibt es? Typische Fallen Verschiedene Lösungsansätze praktische Beispiele.
© 2012 TravelTainment Einführung in NoSQL-Datenbanken und deren Klassifizierung Von Patrick Becker.
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
IS: Datenbanken, © Till Hänisch 2000 Einführung Worüber reden wir hier eigentlich ?
SE: Systementwurf, © Till Hänisch 2003 Systemarchitektur nach Sommerville, Software Engineering, Addison Wesley.
Anforderungen an die neue Datenstruktur
SQL Basics Schulung –
DOAG SID Data Warehouse
Aufgabe 1: Begriffswelt
Das IT - Informationssystem
Google App Engine - Technische Stärken und Schwächen
Sprachumfang von SQL Vier Kategorien DDL (Data Definition Language)
Studiengang Informatik FHDW
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Systeme II 6. Die Anwendungsschicht
Beispiele zur Datenänderung
Create Table, Rechte und Rollen
Installation und Beispiele
Die erste Form der INSERT-Anweisung dient der Neueingabe von Daten:
Von Wietlisbach, Lenzin und Winter
Datenbank WI WAHB12 Carolin & Sarah.
Manual Content-Update ratenkauf by easyCredit
Datenbanken Von Amed und Alicia.
(Structured Query Language)
 Präsentation transkript:

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

Übersicht Motivation Einleitung Architektur Datenmodell API Ausblick 27.11.2018

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. 27.11.2018

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) 27.11.2018

Architektur 27.11.2018

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 27.11.2018

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

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 27.11.2018

Wie wird ein Node hinzugefügt? 27.11.2018

Wie wird ein Node hinzugefügt? 27.11.2018

Datenmodell 27.11.2018

Datenmodell Keyspace ColumnFamily SuperColumn Column 27.11.2018

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 27.11.2018

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

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. 27.11.2018

Beispiel - ColumnFamilies Users Horses Weapons Duels Messages 27.11.2018

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

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

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 27.11.2018

API 27.11.2018

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) 27.11.2018

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

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'; 27.11.2018

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']; 27.11.2018

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

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.11.2018

Konsistenzebenen 27.11.2018

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. 27.11.2018

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! 27.11.2018

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. 27.11.2018

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. 27.11.2018

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 27.11.2018

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? 27.11.2018

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 27.11.2018

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; 27.11.2018

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; 27.11.2018

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'; 27.11.2018

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. 27.11.2018

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 27.11.2018

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

Vielen Dank für Ihre Aufmerksamkeit. 27.11.2018

Quellen Avinash Lakshman, Prashant Malik: Cassandra: a decentralized structured storage system. Operating Systems Review 44(2): 35-40 (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) http://cassandra.apache.org/ http://cassandra.apache.org/doc/cql/CQL.html Dimitrios Dentsas; Cassandra; http://www.ipvs.uni-stuttgart.de/abteilungen/as/lehre/lehrveranstaltungen/hauptseminare/WS1011/HSEM_termine/dateien/nosql_ws1011_Dimitrios_Cassandra_Folien.pdf; 2011 Christoph Föhrdes; NoSQL - Einblick in die Welt nicht-relationaler Datenbanken; http://www.unfug.org/data/foils/ss10/nosql.pdf; 2010 27.11.2018