Datenbankanwendung - Wintersemester 2014/15

Werbung
Datenbankanwendung
Wintersemester 2014/15
Prof. Dr.-Ing. Sebastian Michel
TU Kaiserslautern
[email protected]
MapReduce, NoSQL
MapReduce
MapReduce - Veranschaulichung der Phasen
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
2 / 44
MapReduce, NoSQL
MapReduce
Formal: Map und Reduce Funktionen
ˆ map(k1, v1) → list(k2, v2)
ˆ reduce(k2, list(v2)) → list(k3, v3)
Schlüssel (Keys) erlauben Daten Maschinen zu zuordnen.
Beispiel für Schlüssel
ˆ k1 = Id eines Dokuments (oder Offset in Datei)
ˆ v1 = Inhalt des Dokuments (oder Zeile in Datei)
ˆ k2 = Wort
ˆ v2 = Zähler
ˆ k3 = Wort
ˆ v3 = Zähler
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
3 / 44
MapReduce, NoSQL
MapReduce
SQL in MapReduce: Selektion und Projektion
Gegeben eine Relation R mit sch(R) = (A, B, . . .). Tupel sind in einer
Datei gespeichert (z.B. als CSV-Datei). Wie können typische SQL
Anfragen ausgeführt werden?
Selektion
ˆ WHERE Klausel kann leicht in Map-Phase überprüft werden.
ˆ Wie bei dem Grep-Beispiel.
ˆ Kein Reducer erforderlich.
Projektion
ˆ Ebenfalls offensichtlich: Nur gewünschte Attribute der Tupel werden
ausgegeben (emit).
ˆ Auch hier ist kein Reducer notwendig.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
4 / 44
MapReduce, NoSQL
MapReduce
SQL in MapReduce: Group-By, Aggregate, Having
select abteilung, avg(gehalt)
from gehaelter
group by abteilung
having avg(gehalt) > 50000
Group-By, Aggregate
ˆ Map: Sendet Tupel zu Reducer anhand des Attributs, nach dem
gruppiert wird, hier der Abteilung, als Schlüssel.
ˆ Reducer erhält somit alle Tupel die gleichen Wert für Abteilung
haben und kann dann gruppieren.
Having
ˆ Having ist ein Überprüfung einer Eigenschaft auf den Daten einer
Gruppe, wird also auch im Reducer ausgeführt.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
5 / 44
MapReduce, NoSQL
MapReduce
SQL in MapReduce: Joins in MapReduce
Ein einfacher Equi-Join (hier sogar Natürlicher-Join) zwischen zwei
Relationen R und S mit sch(R) = (A, B) und sch(S) = (B, C), also
select *
from R, S
where R.B=S.B
Beispielausprägung der Relationen:
R
A
x
y
w
...
S
B
18
9
64
...
B
6
5
9
...
C
w
e
r
...
Wie kann dieser Join mit Hilfe von MapReduce realisiert werden?
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
6 / 44
MapReduce, NoSQL
MapReduce
Joins in MapReduce
ˆ Offensichtlich muss geschaut werden welche Tupel aus R und S
verbunden (gejoint) werden können.
ˆ Im Fall des Natürlichen-Joins bzw. Equi-Joins ist dies besonders
einfach: Ergebnisse müssen, hier im Beispiel, im Attribut B
übereinstimmen, also R.B = S.B.
ˆ Wie kann man erreichen, dass Tupel mit gleichem Attributwert für B
auf der gleichen Maschine landen?
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
7 / 44
MapReduce, NoSQL
MapReduce
Reduce-Side Join (Equi-Join)
Map
ˆ Sende Tupel t zu Reducer anhand Schlüssel t.B
ˆ Zusätzlich zum Tupel wird auch noch mitgeschickt ob t aus R oder
aus S ist. Wieso?
Reduce
ˆ Joine Tupel t1 , t2 falls t1 .b = t2 .b und t1 aus R ist und t2 aus S.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
8 / 44
MapReduce, NoSQL
MapReduce
Map-Side Join - Spezialfall
ˆ Für den Fall, dass eine der beiden Relationen klein ist, sagen wir R:
Map
ˆ Gesamte Relation R ist bekannt
ˆ Join kann also im Map-Prozess durchgeführt werden.
ˆ Ausgabe ist das verbundene Tupel
Reduce
ˆ Es ist kein Reducer erforderlich!
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
9 / 44
MapReduce, NoSQL
MapReduce
Reduce-Side Join mit Optimierung durch Semi-Join-Trick
ˆ Wie zuvor, Relationen R und S mit sch(R) = (A, B) und
sch(S) = (B, C)
und auch wieder Equi-Join, d.h. Join über gleiche Werte von B
ˆ Nun, Annahme: Anzahl der distinct B Werte in R ist klein.
Map
ˆ Alle distinct Werte des Attributs B der Relation R sind bekannt;
nennen wir die Menge D
ˆ Sende Tupel aus R anhand des Schlüssels R.B
ˆ Aber: Sende Tupel t aus S anhand Schlüssel t.B falls t.B ∈ D
Reduce
ˆ hier wird der tatsächliche Join (das Verbinden von Tupeln) ausgeführt
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
10 / 44
MapReduce, NoSQL
MapReduce
Die Geschichte von MapReduce
Ursprung bei Google
ˆ Beschrieben in einem Artikel aus 2004: Prinzip, Anwendungsfälle,
Google-File-System, etc.
ˆ Jeffrey Dean, Sanjay Ghemawat: MapReduce: Simplified Data
Processing on Large Clusters. OSDI 2004:
Nachfolgearbeiten/Implementierungen
ˆ Es gibt einige z.T. frei verfügbare MapReduce Implementierungen.
ˆ Am wohl bekanntesten ist Hadoop (Apache), ursprünglich bei Yahoo
entwickelt; frei verfügbar.
ˆ Tipp: Hortonworks bietet Virtual Machine (VM) zum Herumspielen
mit Hadoop und anderen neuen Technologien an
http://hadoop.apache.org/
http://hortonworks.com/products/hortonworks-sandbox/
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
11 / 44
MapReduce, NoSQL
MapReduce
Code: WordCount in Hadoop (Ausschnitt!)
1
p u b l i c s t a t i c c l a s s Map e x t e n d s Mapper<
L o n g W r i t a b l e , Text , Text , I n t W r i t a b l e > {
2
3
4
5
6
7
8
9
10
11
p u b l i c v o i d map ( L o n g W r i t a b l e key , Text v a l u e ,
Context context ) throws IOException ,
InterruptedException {
String l i n e = value . toString () ;
S t r i n g T o k e n i z e r t o k e n i z e r = new
StringTokenizer ( line ) ;
w h i l e ( t o k e n i z e r . hasMoreTokens ( ) ) {
word . s e t ( t o k e n i z e r . nextToken ( ) ) ;
c o n t e x t . w r i t e ( word , one ) ;
}
}
}
Wie genau Key und Value ausschauen hängt von Implementierung des
InputFormat
ab.
Prof.
Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
12 / 44
MapReduce, NoSQL
MapReduce
Code: WordCount in Hadoop (Ausschnitt!) (2)
1
p u b l i c s t a t i c c l a s s Reduce e x t e n d s Reducer<Text ,
I n t W r i t a b l e , Text , I n t W r i t a b l e > {
2
3
4
5
6
7
8
9
p u b l i c v o i d r e d u c e ( Text key , I t e r a b l e <
IntWritable > values , Context context ) throws
IOException , I n t e r r u p t e d E x c e p t i o n {
i n t sum = 0 ;
for ( IntWritable val : values ) {
sum += v a l . g e t ( ) ;
}
c o n t e x t . w r i t e ( key , new I n t W r i t a b l e ( sum ) ) ;
}
10
11
}
Quelle: http://wiki.apache.org/hadoop/WordCount
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
13 / 44
MapReduce, NoSQL
MapReduce
Code: WordCount in Hadoop (Ausschnitt!) (3)
1
2
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) t h r o w s E x c e p t i o n {
C o n f i g u r a t i o n c o n f = new C o n f i g u r a t i o n ( ) ;
3
4
Job j o b = new Job ( c o n f , ” w o r d c o u n t ” ) ;
5
6
7
j o b . s e t O u t p u t K e y C l a s s ( Text . c l a s s ) ;
job . setOutputValueClass ( IntWritable . c l a s s ) ;
8
9
10
j o b . s e t M a p p e r C l a s s (Map . c l a s s ) ;
j o b . s e t R e d u c e r C l a s s ( Reduce . c l a s s ) ;
11
12
13
job . setInputFormatClass ( TextInputFormat . c l a s s ) ;
j o b . s e t O u t p u t F o r m a t C l a s s ( TextOutputFormat . c l a s s ) ;
14
15
16
F i l e I n p u t F o r m a t . a d d I n p u t P a t h ( j o b , new Path ( a r g s [ 0 ] ) ) ;
F i l e O u t p u t F o r m a t . s e t O u t p u t P a t h ( j o b , new Path ( a r g s [ 1 ] ) ) ;
17
18
19
job . waitForCompletion ( true ) ;
}
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
14 / 44
MapReduce, NoSQL
MapReduce
Screenshot Hadoop Distributed File System Web UI
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
15 / 44
MapReduce, NoSQL
MapReduce
Screenshot Hadoop Web UI (Monitoring)
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
16 / 44
MapReduce, NoSQL
MapReduce
Typische Topologie
Switch Rack 1 Rack 2 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Disks Disks Disks Disks Disks Disks Topology kann/muss in einer Konfigurationsdatei mitgeteilt werden.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
17 / 44
MapReduce, NoSQL
MapReduce
Rack Awareness
Data-local, rack-local und off-rack Map-Prozesse.
node rack Map task HDFS block data center Kostenmodell gibt Kosten für diese einzelnen Fälle an.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
18 / 44
MapReduce, NoSQL
MapReduce
Ein Zusätzlicher “Combiner” - Probleme
Beobachtung
ˆ In der Map-Phase können große Mengen an Zwischenergebnissen
anfallen
ˆ Da Netzwerk-Bandbreite oft kritisch für Performance ist sollte
versucht werden diese Zwischenergebnisse zu reduzieren(!)
ˆ Dies funktioniert für Funktionen wie max:
max(1, 2, 6, 2, 1, 9) = max(max(1, 2, 6), max(2, 1, 9))
Der Combiner
ˆ Wird auf die Ausgabe eines (jeden) Map-Prozessen angewendet
ˆ Normalerweise identisch zu dem Reducer (im Sinne von
“Code”)
ˆ Aber: Kein Ersatz für den Reducer!
ˆ Wieso? Der Combiner sieht nur Zwischenergebnisse!
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
19 / 44
MapReduce, NoSQL
MapReduce
Ein Zusätzlicher “Combiner”
Achtung: Manche Aggregationen (Funktionen) können nicht lokal
ausgeführt werden.
ˆ Beispiel: Gib Ausgabe aus falls sum(value) > τ
ˆ Wieso geht das i. Allg. schief? Combiner kann diese Entscheidung
nicht treffen, da er nur lokale Informationen sieht. Und nicht ob
global die Summe über oder unter Grenzwert liegt.
ˆ Trotzdem macht hier evtl. ein Combiner Sinn, dann aber nur
aufsummieren und nicht entscheiden ob über oder unter Grenzwert
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
20 / 44
MapReduce, NoSQL
MapReduce
Bewertung von MapReduce
Positiv
ˆ Einfaches Modell
ˆ Skalierbar
ˆ Zielt auf hohen Durchsatz
ˆ Implementierung tolerant gegenüber Ausfällen von Knoten
Negativ
ˆ Sehr einfache Routinen; Implementierung komplexerer Algorithmen
wird leicht umständlich
ˆ Für komplexe Dingen sind oft mehrere Iterationen von MapReduce
nötig
ˆ Schreiben von komplexen Anfragen ebenso. SQL (oder so etwas in
der Art) nicht unterstützt
ˆ Langsame Antwortzeit (schlecht für individuelle, kleine Arbeiten)
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
21 / 44
MapReduce, NoSQL
MapReduce
Ausblick auf weitere MapReduce Themen (in DDM
Vorlesung)
Hadoop
ˆ Realisierung Hadoop Distributed File System
ˆ Realisierung Hadoop MapReduce, Ausfallsicherheit, etc.
ˆ Partitionierer, Composite Keys, Sortierung (secondary sort)
Auf MapReduce aufbauend
ˆ Pig (mit Anfragesprache PigLatin): übersetzen von komplexeren
Datenverarbeitungsbefehlen in MapReduce Workflow
ˆ Hive: Mächtigere Sprache (∼SQL), wird auf MapReduce abgebildet.
Daten-Analyse-Algorithmen
ˆ Graphalgorithmen, insbesondere PageRank
ˆ Statistiken zu Worthäufigkeiten
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
22 / 44
MapReduce, NoSQL
NoSQL
NoSQL
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
23 / 44
MapReduce, NoSQL
NoSQL
Was steckt hinter NoSQL?
ˆ Beobachtung/Hypothese: Es gibt kein one-size-fits-all
Datenbanksystem!
ˆ NoSQL = Not Only SQL (nicht unbedingt “no” SQL)
ˆ Steht als Bezeichner für eine Vielzahl von nicht traditionellen
Datenmanagement-Systemen, die stark auf die Anwendung
zugeschnitten sind:
- Key-Value-Datenbanken
- Graph-Datenbanken
- Dokument-Datenbanken
Überblick gibt es unter: http://nosql-database.org/
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
24 / 44
MapReduce, NoSQL
NoSQL
Charakteristika von NoSQL Systemen
ˆ Kein relationales Datenmodell
ˆ System sind ausgelegt horizontal zu skalieren (scale out), also Daten
und Datenverarbeitung über mehrere Maschinen zu verteilen.
ˆ Kein Schema oder nur sehr lose beschrieben.
ˆ Einfache API (normalerweise keine Unterstützung von SQL): CRUD
(create, read, update, delete).
ˆ Üblicherweise keine ACID Semantik. Stattdessen: BASE ;)
ˆ Oftmals sind diese System open-source.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
25 / 44
MapReduce, NoSQL
NoSQL
NoSQL: Key/Value Datenbanken
ˆ Speichern von Key-Value Paaren
ˆ Values können komplexe(re) Datentypen sein
ˆ Beispiele von Systemen: Amazon Dynamo, Redis, Voldemort
ˆ Zugriff via CRUD-Operationen: Create, Read, Update, Delete
ˆ Einige Systeme unterstützen auch mächtigere/komplexere
Anfragetypen.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
26 / 44
MapReduce, NoSQL
NoSQL
Beispiel: Key-Value-Store: Redis
ˆ Online Tutorial: http://try.redis.io
Get und Set
SET name ”Datenbankanwendung”
GET name
→ Datenbankanwendung
Operationen auf Listen
LPUSH meineListe ”a”
LPUSH meineListe ”b”
LLENGTH
→2
LRANGE meineListe 0 1
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
→ ”b”,”a”
Datenbankanwendung, WS 14/15
27 / 44
MapReduce, NoSQL
NoSQL
Dokumenten Datenbanken
ˆ Speichern JSON (Javascript
Object Notation), siehe Beispiel
links, oder XML Dokumente
ˆ Systeme: MongoDB oder
CouchDB
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
{
"firstName":"John",
"lastName":"Smith",
"age":25,
"address":{
"street":"21 2nd Street",
"city":"New York",
"state":"NY",
"postalCode":10021
},
"phoneNumbers":[
{
"type":"home",
"number":"212 555-1234"
},
{
"type":"fax",
"number":"646 555-4567"
}
]
} Datenbankanwendung, WS 14/15 28 / 44
MapReduce, NoSQL
NoSQL
Beispiel: MongoDB
ˆ Online Tutorial: http://try.mongodb.org
var student = {name:'Jim', scores:[75,99,87.2]};
db.lecture.store(student);
db.lecture.find();
--liefert alle Eintraege
db.lecture.find({name:'Jim'});
--spezielle Suche
db.users.update({name:'Johnny'},{name:'Cash',
languages:['english']});
ˆ MongoDB unterstützt MapReduce http:
//docs.mongodb.org/manual/tutorial/map-reduce-examples/
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
29 / 44
MapReduce, NoSQL
NoSQL
CAP Theorem
ˆ Ein System kann nicht
gleichzeitig die folgenden drei
Eigenschaften unterstützen:
- Consistency (Konsistenz)
- Availability (Verfügbarkeit)
- Partition Tolerance
(Daten/verarbeitung verteilt auf
mehrere Maschinen)
C
C+A
C+P
A
A+P
P
http://webpages.cs.luc.edu/~pld/353/gilbert_lynch_brewer_
proof.pdf
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
30 / 44
MapReduce, NoSQL
NoSQL
Consistent + Available
ˆ Beispiel: Traditionelle
C
(zentralisierte)
Datenbanksysteme
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
C+A
A
Datenbankanwendung, WS 14/15
31 / 44
MapReduce, NoSQL
NoSQL
Partition Tolerant + Available
A
ˆ Beispiel: Domain Name Service
A+P
(DNS)
P
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
32 / 44
MapReduce, NoSQL
NoSQL
Consistent + Partition Tolerant
C
ˆ Beispiel: Verteilte Datenbanken
C+P
mit verteiltem Locking/Commit
P
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
33 / 44
MapReduce, NoSQL
NoSQL
Und nun?
Ohne ”P” geht es nicht
ˆ Es sind große Datenmengen zu verarbeiten
⇒ Horizontela Skalierung
D.h. das System muss Partitionierung der Daten/Verarbeitung auf
verschiedene Maschinen unterstützen.
ˆ Also ist ”P” gegeben. Was ist nun zu tun?
Abwägung (Tradeoff) zwischen
Konsistenz und Verfügbarkeit.
C
C+A
C+P
A
A+P
P
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
34 / 44
MapReduce, NoSQL
NoSQL
Idee
Tradeoff zwischen Consistency und Availability.
ˆ Repliziere Daten, d.h. mehrere Versionen pro Datensatz
ˆ Replikate werden auf Maschinen verteilt
ˆ Sende Updates an alle Replikate aber warte nicht auf
Acknowledgement.
ˆ Lesen Daten von Teilmenge der Replikate.
ˆ D.h. sehr effizient aber nicht unbedingt garantiert konsistent (man
kann alte Antworten erhalten)
ˆ Erst nach einiger Zeit konsistent (wenn alle Replikate aktualisiert
wurden): Eventual Consistency
Bemerkung zu Consistency
ˆ Consistency hier anders definiert als im DB-Kontext (in ACID).
ˆ Hier, generell um Konsistenz von Replikaten (Kopien) einzelner
Datenobjekte; dem Erzwingen bzw. nicht Erzwingen von garantierter
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
35 / 44
MapReduce, NoSQL
NoSQL
BASE
Basically Available
Soft State
Eventual Consistency
http:
//www.allthingsdistributed.com/2008/12/eventually_consistent.html
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
36 / 44
MapReduce, NoSQL
NoSQL
Veranschaulichung Inkonsistenz
Client schickt Schreibanweisung an Manager
Dieser schickt Schreibanweisung an alle Replikate.
Zeitstempel (im einfachsten Fall) beschreibt Zeitpunkt des Schreibens.
Und schickt Acknowledgement zurück an Client sobald garantiert
W Replikas aktualisiert wurden.
Maschinen mit Replikas des Datenobjekts
Manager
write
ˆ
ˆ
ˆ
ˆ
Client
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
37 / 44
MapReduce, NoSQL
NoSQL
Veranschaulichung Inkonsistenz (2)
ˆ Client schickt Leseanweisung an Manager.
ˆ Dieser leitet Anweisung an R Replikas. D.h. von N existierenden
Replikaten werden R gelesen.
ˆ Antworten werden an Client weiter geleitet.
Maschinen mit Replikas des Datenobjekts
read
Manager
Client
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
38 / 44
MapReduce, NoSQL
NoSQL
Veranschaulichung Inkonsistenz: Read
ˆ N = 7 Replikate
ˆ W = 3 und R = 2
ˆ Grün markiert sind Replikate, die die neue Version des Objekts
besitzen
Maschinen mit Replikas des Datenobjekts
read
Manager
Client
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
39 / 44
MapReduce, NoSQL
NoSQL
Veranschaulichung Inkonsistenz: Read - OK
ˆ N = 7 Replikate
ˆ W = 3 und R = 2
ˆ Grün markiert sind Replikate, die die neue Version des Objekts
besitzen
Maschinen mit Replikas des Datenobjekts
read
d
rea
read
Manager
Alles super!
Client
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
40 / 44
MapReduce, NoSQL
NoSQL
Veranschaulichung Inkonsistenz: Read - OK
ˆ N = 7 Replikate
ˆ W = 3 und R = 2
ˆ Grün markiert sind Replikate, die die neue Version des Objekts
besitzen
read
read
Maschinen mit Replikas des Datenobjekts
read
Manager
Immer noch alles super!
Zeitstempel (o.ä.) bestimmt neueste Version.
Client
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
41 / 44
MapReduce, NoSQL
NoSQL
Veranschaulichung Inkonsistenz: Read - Nicht Korrekt
ˆ N = 7 Replikate
ˆ W = 3 und R = 2
ˆ Grün markiert sind Replikate, die die neue Version des Objekts
besitzen
Maschinen mit Replikas des Datenobjekts
re
ad ead
r
read
Manager
Alte Version gelesen!
Client
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
42 / 44
MapReduce, NoSQL
NoSQL
Eventual Consistency und Konfigurationen
Konfiguration: R + W > N
ˆ In diesem Fall kann garantiert werden, dass immer die aktuelle
Version gelesen wird.
ˆ Da sich die Mengen der aktualisierten Replikate und die der
angefragten Replikate überlappen müssen!
Konfiguration: R + W ≤ N
ˆ In diesem Fall liegt Eventual Consistency vor.
Eventual Consistency
ˆ Eventual (auf Deutsch: letztendlich) Consistency beschreibt, dass
nach einer gewissen Zeit alle Replikate aktualisiert sind. Aber ab
dem Schreibvorgang bis zu diesem Zeitpunkt ist nicht garantiert, dass
Lesevorgänge die zuvor geschriebene Version sehen.
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
43 / 44
MapReduce, NoSQL
NoSQL
Ausblick VL Distributed Data Management (DDM)
wwwlgis.informatik.uni-kl.de/cms/courses/
distributeddatamanagement/
Prof. Dr.-Ing. S. Michel
TU Kaiserslautern
Datenbankanwendung, WS 14/15
44 / 44
Herunterladen