7. nosql - swl.htwsaar.deswl.htwsaar.de/lehre/ws16/dbis/slides/2016-vl-dbis-kap7-nosql.pdf · 2...
TRANSCRIPT
7. NoSQL
2
Inhalt§ 12.1 NoSQL?
§ 12.2 MapReduce & Co
§ 12.3 Key-Value Stores
§ 12.4 Extensible Record Stores
§ 12.5 Dokumentorientierte Datenbanken
§ 12.6 Graphdatenbanken
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
3
12.1 NoSQL?§ Relationale Datenbanksysteme (RDBMSs) bieten u.a.
§ konzeptuellen Entwurf mit Schema in Normalform (3NF)zur redundanzfreien Speicherung der Daten
§ eine deklarative Anfragesprache SQL, d.h. Anfragen spezifizieren nur das Ergebnis, jedoch nichtwie es ermittelt werden soll
§ ACID-Transaktionen, deren Implementierung Mechanismenwie Sperren und Verlaufsprotokolle benötigt
§ Sicherung der Datenintegrität mittels Constraints(z.B. Fremdschlüssel, UNIQUE, CHECK)
§ Benutzerverwaltung und Berechtigungen
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
4
NoSQL?§ Konzeptueller Entwurf nimmt an, dass der abzubildende
Abschnitt der Realität feststeht; späteres Hinzufügenoder Entfernen von Attributen ist nicht vorgesehen
§ ACID-Transaktionen sind nützlich, aber mit Kosten zur Laufzeit verbunden; nicht alle Anwendungen benötigen sie
§ Deklarative Anfragesprache unterbindet Einflussnahmedurch Entwickler auf die Anfragebearbeitung
§ Heutige Datenmengen lassen sich häufig nicht auf einemleistungsstarken Rechner verwalten, sondern müssenüber viele Rechner verteilt werden
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
5
NoSQL?§ Das Schlagwort NoSQL fasst verschiedene Entwicklungen
seit Mitte der 2000er Jahre zusammen, z.B.
§ Alternativen zum relationalen Modell (z.B. Modellierung der Daten in Form von Dokumenten oder eines Graphs)
§ Unterstützung flexibler Schema (d.h. Attribute können ohne Einbußen hinzugefügt oder entfernt werden)
§ Verzicht auf deklarative Anfragesprache zu Gunsten von Implementierung der Anfragebearbeitung durch Entwickler
§ Speicherung und Verarbeitung der Daten erfolgt oft verteiltauf viele herkömmliche Rechner, anstatt auf einem oder wenigen sehr leistungsstarken Rechner
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
6
12.2 MapReduce & Co§ MapReduce [3] ist eine bei Google von Jeff Dean und
Sanjay Ghemawat entwickelte Plattform zur verteilen Speicherung und Bearbeitung großer Datenmengen
§ Bestandteile:
§ verteiltes Dateisystem GFS (HDFS bei Hadoop)
§ MapReduce Programmiermodell
§ Herausforderungen:
§ Lastbalancierung
§ Fehlertoleranz
§ Benutzerfreundlichkeit
Jeff Dean
Sanjay Ghemawat
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
7
Jeff Dean Facts§ When Jeff Dean designs software, he first codes the binary
and then writes the source as documentation.
§ Compilers don’t warn Jeff Dean. Jeff Deanwarns compilers.
§ Jeff Dean's keyboard has two keys: 1 and 0.
§ When Graham Bell invented the telephone, he saw a missed call from Jeff Dean.
§ Jeff Dean's PIN is the last 4 digits of pi
§ http://www.quora.com/Jeff-Dean/What-are-all-the-Jeff-Dean-facts
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
8
Verteiltes Dateisystem GFS (HDFS)§ Google File System (GFS)
§ verteiltes Dateisystem für Clustervieler herkömmlicher Rechner
§ konfigurierbare Replikationsfaktor
§ GFS Master (1x)
§ verwaltet den Namensraum
§ koordiniert Replikation von Chunks
§ kommuniziert mit Clients
§ GFS ChunkServers (viele)
§ halten Chunks (typische Größe: 64 MB
§ erhalten/senden Chunks von/zu Clients
GFS master
chunk 1df2
chunk 2ef0
chunk 3ef1
/foo/bar
GFS chunkserver
chunk 2ef0
chunk 5ef0
chunk 3ef1
chunk 1df2
chunk 3ef2
chunk 5af1
GFS client
control
data
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
9
MapReduce als Plattform§ MapReduce (MR)
§ Plattform zur verteiltenDatenverarbeitung
§ Berechnungen werden zuden Daten bewegt
§ kann Ausfälle von Rechnernin Maßen kompensieren
§ MR Master (1x)
§ koordiniert Ausführung eines Jobs
§ verteilt Aufgaben auf Clients
§ MR Workers (viele)
§ führen zugewiesene Aufgaben aus
GFS chunkserver
MR worker
GFS chunkserver
MR worker
GFS chunkserver
MR worker
GFS chunkserver
MR worker
MR master
control
MR client
assign tasks
report progress
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
10
MapReduce als Programmiermodell§ MapReduce setzt auf ein einfaches Programmiermodell,
welches von funktionalen Programmiersprachen(z.B. ML und Haskell) inspiriert ist
§ Daten als Schlüssel-Wert-Paare (key-value pairs)
§ Aufgabe in Form von zwei Funktionen ausgedrückt
§ map() : (k1, v1) => list(k2, v2) liest die Eingabedaten alsSchlüssel-Wert-Paare (k1, v1) und produziert für jedeseinen oder mehrere Schlüssel-Wert-Paare (k2, v2)
§ reduce() : (k2, list(v2)) => list(k3, v3) liest Ausgabe von map() gruppiert und sortiert nach Schlüssel k2 und gibt für jede Gruppe ein oder mehrere Schlüssel-Wert-Paare (k3, v3) aus
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
11
MapReduce als Programmiermodell§ Funktion map() wird verteilt auf den Eingabedaten im GFS
ausgeführt; jeder MR Worker soll die Funktion lokalauf den bei ihm gespeicherten Daten ausführen
§ Zwischen Ausführung der Funktionen map() und reduce()werden die Daten nach den Werten der Schlüssel k2gruppiert und sortiert; alle Schlüssel-Wert-Paare mit bestimmtem Wert k2 landen auf einem Rechner
§ Funktion reduce() wird verteilt auf gruppierten und sortierten Schlüssel-Wert-Paaren (k2, list(v2)) ausgeführt und schreibt Ausgabe ins GFS
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
12
Wörter Zählen mit MapReduce§ Problem: Zähle wie oft jedes Wort in einer sehr großen
Dokumentensammlung vorkommt
1 map(long did , String content ) {
2 for( String word : content .split ()) {
3 emit(word , 1);
4 }
5 }
1 reduce ( String word , List <long > counts ) {
2 int total = 0;
3 for(long count : counts ) {
4 sum += count;
5 }
6 emit(word , total );
7 }
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
13
Ausführung in MapReduce
d123a x bb a y
d242b y ax a b
(a,4)(b,4)
…
(x,2)(y,2)
…
Map
M1
Mn
(a,d123),(x,d242),
…
(b,d123),(y,d242),
…
map()
Reduce
R1
Rm
(a,d123),(a,d242),
…
(x,d123),(x,d242),
…
reduce()
Sort1
m
1
m
1
m
1
m
partition()compare()
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
14
Apache Hadoop§ Open-Source Implementierung von MapReduce§
§ Hadoop File System (HFS)
§ name node (master)
§ data node (chunkserver)
§ Hadoop MapReduce
§ job tracker (master)
§ task tracker (worker)
§ Produktiver Einsatz auf Clustern mit > 10.000 Rechnernbei Unternehmen wie Yahoo!, Ebay, etc.
§ https://hadoop.apache.org
Doug Cutting
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
15
Apache Hive§ Apache Hive bietet eine an SQL
angelehnte Anfragesprache(Selektion, Projektion, Join)zum Verarbeiten im HDFSgespeicherter Daten(z.B. als CSV-Datei)
§ Anfragen werden automatisch in einen oder mehrere MapReduce-Jobs übersetzt und dannverteilt auf den Daten ausgeführt
§ https://hive.apache.org
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
16
Apache PIG§ Apache Pig bietet eine Programmiersprache,
die Ideen von SQL und prozeduralerProgrammiersprachen vereint
§ Programme werden automatisch inein oder mehrere MapReduce-Jobsübersetzt und dann verteilt aufden Daten ausgeführt
§ https://pig.apache.org
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
17
Beispiel Apache Pig1 USERS = load ’data/users ’ using PigStorage (’\t’)2 as (id:int , email :chararray , language :chararray , location : chararray );3
4 TRANSACTIONS = load ’data/ transactions ’ using PigStorage (’\t’)5 as (id:int , product :int , user:int , purchase_amount :double , description : chararray );6
7 A = JOIN TRANSACTIONS by user LEFT OUTER , USERS by id;8
9 B = GROUP A by product ;10
11 C = FOREACH B {12 LOCS = DISTINCT A. location ;13 GENERATE group , COUNT(LOCS) as location_count ;14 };15 DUMP C;
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
18
Apache Drill und Cloudera Impala§ Apache Drill und Cloudera Impala
erlauben SQL Anfragen fürDaten, die z.B. in HDFSgespeichert sind
§ Im Gegensatz zu Apache Hiveund Apache Pig werden dieAnfragen selbst bearbeitetund nicht in MapReduce-Jobsübersetzt
§ https://drill.apache.org
§ http://impala.ioDatenbanken & Informationssysteme / Kapitel 7: NoSQL
19
Distributionen von Hadoop & Co§ Hadoop, Hive, Pig, etc. sind Open-Source Projekte
mit großer Unterstützung namhafter Unternehmen;sie entwickeln sich mit unterschiedlicher Geschwindigkeitund es ist nicht garantiert, dass die neuesten Versionender Projekte miteinander kompatibel sind
§ Distributoren stellen zueinander kompatible Versionender Projekte mit Dokumentation und zusätzlichenWerkzeugen (z.B. zur Installation) zur Verfügung
§ http://www.cloudera.com
§ http://hortonworks.com
§ http://mapr.com
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
20
12.3 Key-Value Stores§ Key-Value Stores speichern Schlüssel-Wert-Paare
wie (37821, „Max Müller“) und bieten zumindestfolgende Methoden zum Zugriff
§ set(key, value) legt Wert zu Schlüssel ab
§ get(key) holt Wert zu Schlüssel
sofern die zugrundeliegende Datenstruktur die Ordnung derWerte beibehält, gibt es zudem Bereichsanfragen
§ range(low, high) holt Werte mit Schlüsseln im Bereich
§ Schlüssel und Werte sind intern meist byte[], Entwickler muss sich um Serialisierung/Deserialisierung kümmern
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
21
BerkeleyDB§ BerkeleyDB ist ein Key-Value-Store zum Betrieb auf
einem Rechner, der zudem (ähnlich SQLite) in Anwendungen eingebettet werden kann
§ BerkeleyDB basiert auf einem B+-Baum als Datenstrukturund unterstützt somit auch Bereichsanfragen
§ BerkeleyDB Java Edition bietet sogenannte StoredCollections; diese implementieren die von Javabekannten Interfaces List und Map und lagernDaten transparent im Sekundärspeicher aus
§ http://www.oracle.com/us/products/database/berkeley-db/overview/index.html
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
22
Redis§ Redis ist ein verteilter Key-Value Store,
der Daten im Hauptspeicher derRechner hält, sofern keineDauerhaftigkeit sichergestelltwerden muss
§ Replikation (d.h. die gleichen Daten werden mehrfachgehalten) erlaubt zudem eine Skalierungbei Wachstum der Anfragelast
§ http://redis.io
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
23
12.4 Extensible Record Stores§ Extensible Record Stores erweitern die Idee von Key-
Value Stores, indem sie für den Wert eine Struktur(ähnlich dem Schema einer Tabelle) zulassen
§ Schlüssel ist weiterhin z.B. ein byte[]
§ Wert besteht aus Paaren von Spaltenname und -wert
§ Im Gegensatz zum relationalen Modell gibt es kein fixes Schema und das System ist für dünnbesetzte Datenoptimiert, d.h. Spalten für die meisten Daten unbekannt
§ BigTable als ein bei Google entwickeltes System war Vorreiter der Extensible Record Stores
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
24
Hbase & Co§ Open-Source Implementierung
von Google‘s BigTable [4]
§ Daten werden im verteilten DateisystemHDFS von Hadoop gespeichert undrepliziert zur Lastverteilung undAusfallsicherheit
§ Transaktionen nur für Zugriff auf einzelne Schlüssel
§ https://hbase.apache.org
§ Ähnliches Projekt: http://cassandra.apache.org
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
25
12.5 Dokumentorientierte Datenbanken§ Dokumentenorientierte Datenbanken (document
databases) modellieren die Daten als Dokumente in einem Format wie JSON (JavaScript Object Notation)
§ Beispiel: Student als JSON-Dokument1 {
2 " matrnr " : 37821 ,
3 "name" : "Max",
4 " vorname " : "M
¨
uller",
5 " semester " : 9,
6 " anschrift " : {
7 " strasse " : " hauptstra ße",
8 " hausnummer " : 34,
9 "plz" : 66117 ,
10 "stadt" : " saarbr
¨
ucken"
11 }
12 " vorlesungen " : [" Datenbanken "," Programmierung 2"]
13 }
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
26
Dokumentenorientierte Datenbanken§ Zugriff auf so gespeicherte Daten dann mittels
Anfrageprädikaten z.B.
§ Systeme bieten teilweise zusätzliche Funktionalität
§ Gruppierung und Aggregation (MongoDB)
§ MapReduce zur Anfrageformulierung (CouchDB)
§ Indizes auf ausgewählten Attributen (MongoDB, CouchDB)
§ Verteilung und Replikation zur Skalierung bei großen Datenmengen und/oder hoher Anfragelast
1 {name:"Max", semester :9}
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
27
MongoDB & CouchDB§ MongoDB erwartet Dokumente
im JSON-Format; erlaubtAnfrageterminologie anSQL angelehnt
§ https://www.mongodb.org
§ CouchDB erwartet Dokumenteim JSON-Format; erlaubtImplementierung vonAnfragen in MapReduce
§ http://couchdb.apache.org
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
28
12.6 Graphdatenbanken§ Graphdatenbanken (graph databases) modellieren die
Daten als einen gerichteten Graphen mitBeschriftungen an Knoten und Kanten
MatrNr: 37821Vorname : „Max“Name : „Müller“Semester : 9
VorlNr: 1303Titel : „Datenbanken“SWS : 4
ProfNr: 22Vorname : „Donald“Name : „Knuth“
hörtliest
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
29
Graphdatenbanken§ Festes Schema, wie beim relationalen Modell, ist meist
nicht erforderlich, d.h. neue Beschriftungen fürKanten und Knoten können hinzugefügt werden
§ Triple Stores für Daten im Semantic-Web Format RDFmit Anfragesprache SPARQL sind Spezialfall von Graphdatenbanken
§ Anfragen als Pfadausdrücken formuliert, z.B.
findet Studenten, die Vorlesung beim Professor hören,der (auch) Datenbanken liest
1 (?s) = h
¨
ort => v <= liest ( ) => liest (titel : " Datenbanken ")
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
30
Neo4J§ Neo4J zum Betrieb auf einem
Rechner; bietet mit Cypher eineeigene Anfragesprache, dieauch Graphoperationen wiekürzeste Pfade unterstützt
§ http://neo4j.com
§ OrientDB zum Betrieb auf mehrerenRechnern; unterstützt SQL alsAnfragesprache
§ http://orientdb.com
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
31
Zusammenfassung§ NoSQL bieten Alternativen zu RDBMSs für Anwendungen,
die z.B. keine ACID-Transaktionen benötigen, keinrigides Schema festlegen können oder ihre Daten aufviele herkömmliche Rechner verteilen müssen
§ Bei rudimentären Systemen (z.B. Key-Value Stores) müssen Entwickler vieles, was bei einem RDBMS gegeben ist, beispielsweise Joins, selbst implementieren
§ SQL als Anfragesprache spielt auch in NoSQL-Systemeneine Rolle und wird zunehmend „nachgerüstet“(z.B. Apache Drill und Cloudera Impala)
Datenbanken & Informationssysteme / Kapitel 7: NoSQL
32
Literatur[1] A. Kemper und A. Eickler: Datenbanksysteme – Eine
Einführung, De Gruyter Oldenbourg, 2015 (Kapitel 21)
[2] L. Wiese: Advanced Data Management for SQL, NoSQL, Cloud and Distributed Databases,DeGruyter, 2015
[3] J. Dean und S. Ghemawat: MapReduce: a flexible dataprocessing tool, OSDI 2004
[4] F. Chang, J. Dean, S. Ghemawat, W. C. Hsieh, D. A. Wallach, M. Burrows, T. Chandra, A. Fikes, R. E. Gruber: Bigtable: A Distributed Storage System forStructured Data, ACM TODS 26(2), 2008
Datenbanken & Informationssysteme / Kapitel 7: NoSQL