Upload
johannes-schildgen
View
135
Download
0
Embed Size (px)
Citation preview
Datenbanken
Big Data
Johannes Schildgen2015-03-13
[email protected]://bit.ly/schildgen
AnalyseNoSQL-&
Seit Anbeginn der Zivilisation bis zumJahre 2003 haben die Menschen
fünf Exabytes an Daten produziert.
Seit Anbeginn der Zivilisation bis zumJahre 2003 haben die Menschen
fünf Exabytes an Daten produziert.
Mittlerweile produzieren wir fünf Exabytes alle zwei Tage.Mittlerweile produzieren wir fünf Exabytes alle zwei Tage.
Eric Schmidt – Executive Chairman, GoogleEric Schmidt.jpg, Author: Gisela Giardino, Wikimedia Commons, 12 April 2007, 20:24:40
1,4 Mrd. Mitglieder1,4 Mrd. Mitglieder
140 Mrd. Freundschaften140 Mrd. Freundschaften
290 Mrd. Fotos290 Mrd. Fotos
500 Mio. Tweets / Tag500 Mio. Tweets / Tag 500 Mio. Kommentare / Minute500 Mio. Kommentare / Minute
48h Videos / Sekunde48h Videos / Sekunde
ID Vorname Nachname Beruf Gehalt
1 Anna Schmidt Manager 60000
2 Jakob Heinz Programmierer 50000
3 Susanne Bäcker Programmierer 50000
4 Gregor Meyer Berater 60000
5 Carlo Franzen Programmierer 45000
Strukturierte DatenStrukturierte Daten
{
_id: 883,
"Titel": "Notebook zu verkaufen",
"Preis": 400,
"Waehrung": "EURO",
"Verkaeufer": {
"Name": "Franzen",
"Vorname": "Carlo",
"maennlich": true,
"Hobbys": [ "Reiten", "Golfen", "Lesen" ],
"Alter": 42,
"Kinder": [],
"Partner": null
}
}
Semi-Strukturierte DatenSemi-Strukturierte Daten
„Hab heute nen schönen Tag zs. mit meiner Mutter in der Frankfurter Innenstadt verbracht, Pics folgen später.“
Unstrukturierte DatenUnstrukturierte Daten
"datastreams": [
{
"name": "temperature",
"description": "Temperature"
"longitude": "2.363471",
"latitude": "48.917536",
"timezone": "+1",
„value": „19.2",
"unit": "Celsius"
}
SensordatenSensordaten
Ich habe Elvis gesehenIch habe Elvis gesehen
Die Elbphilamonie wird 2016 eröffnetDie Elbphilamonie wird 2016 eröffnet
Merkel ist zurückgetretenMerkel ist zurückgetreten
Die Elbphilamobieöffnet 2015
Die Elbphilamobieöffnet 2015
Big-Data-Anwendungen
Empfehlungssysteme
• Clustering, Collaborative Filtering
Marketing
• Online-Werbung, Offline-Werbung
Prozessoptimierung
• Fertigung, Lagerhaltung, Personalplanung
Diagnosetools
• KFZ, Luft- und Raumfahrt
Forschung
• Klima, Rohstoffe, Krankheiten
Relationale Datenbanksysteme
ID Vorname Nachname Beruf Gehalt
1 Anna Schmidt Manager 60000
2 Jakob Heinz Programmierer 50000
3 Susanne Bäcker Programmierer 50000
4 Gregor Meyer Berater 60000
5 Carlo Franzen Programmierer 45000
SQL
ID Vorname Nachname Beruf Gehalt
1 Anna Schmidt Manager 60000
2 Jakob Heinz Programmierer 50000
3 Susanne Bäcker Programmierer 50000
4 Gregor Meyer Berater 60000
5 Carlo Franzen Programmierer 45000
SELECT vorname, nachname FROM
pers WHERE gehalt > 50000
SELECT vorname, nachname FROM
pers WHERE gehalt > 50000
SQL: DDL*PrID Titel PrLeiter
100 Projekt X 5
101 DB-Projekt 1
CREATE TABLE proj (
PrID INT PRIMARY KEY,
Titel VARCHAR(100) NOT NULL,
PrLeiter INT REFERENCES pers(ID))
CREATE TABLE proj (
PrID INT PRIMARY KEY,
Titel VARCHAR(100) NOT NULL,
PrLeiter INT REFERENCES pers(ID))
* Data-Definition Language
SQL: Joins
ID Vorname Nachname Beruf Gehalt
1 Anna Schmidt Manager 60000
2 Jakob Heinz Programmierer 50000
3 Susanne Bäcker Programmierer 50000
4 Gregor Meyer Berater 60000
5 Carlo Franzen Programmierer 45000
SELECT proj.titel FROM pers, proj
WHERE proj.PrLeiter = pers.ID AND
pers.beruf = ‘Manager’
SELECT proj.titel FROM pers, proj
WHERE proj.PrLeiter = pers.ID AND
pers.beruf = ‘Manager’
PrID Titel PrLeiter
100 Projekt X 5
101 DB-Projekt 1
NoSQL-Datenbanken
Verteilte DatenbankVerteilte Datenbank => Lastverteilung,Hochverfügbarkeit,Verteilte Berechnungen
Key-Value Stores
Key Value
a 5
b 17
SET c 9SET c 9
c 9 GET aGET a
Key Value
pers:1:vorname Anna
pers:1:nachname Schmidt
pers:1:projekte [“DB-Projekt“]
INCR aINCR a
a 6
RPUSH pers:1:projekte
“Projekt Y”
RPUSH pers:1:projekte
“Projekt Y”
pers:1:projekte [“DB-Projekt“, “Projekt Y“]
Range Partitioning
Keys: a-e f-j k-n o-s t-z
Key Value
a 6
b 17
c 9
Key Value
pers:1:vorname Anna
pers:1:nachname Schmidt
pers:1:projekte [“DB-Projekt“, “Projekt Y“]
Range Partitioning
Keys: a-pers:0 pers:1-pers:500 … ... …
Key Value
a 6
b 17
c 9
Key Value
pers:1:vorname Anna
pers:1:nachname Schmidt
pers:1:projekte [“DB-Projekt“, “Projekt Y“]
Key Value
c 9
Hash Partitioning
0 1 2 3 4
Key Value
a 6
Key Value
b 17
h(key) = … mod 4h(key) = … mod 4
X
Consistent Hashing
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Key Value
a 6
c 9
Key Value
b 17
h(key) = … mod 20h(key) = … mod 20
Consistent Hashing
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Key Value
a 6
c 9
Key Value
b 17
X
h(key) = … mod 20h(key) = … mod 20
16 17 18 19
Wide-Column Stores SCAN ‘t’SCAN ‘t’
GET ‘t’, ‘5’GET ‘t’, ‘5’
SET ‘t’, ‘4’,
‘geboren’, ‘1982’
SET ‘t’, ‘4’,
‘geboren’, ‘1982’
Row-ID Vorname Nachname Beruf Gehalt
1 Anna Schmidt Manager 60000
2 Jakob Heinz Programmierer 50000
3 Susanne Bäcker Programmierer 50000
4 Gregor Meyer Berater 60000
5 Carlo Franzen Programmierer 45000
SET ‘t’, ‘3’,
Beruf, ‘Berater’
SET ‘t’, ‘3’,
Beruf, ‘Berater’
Wide-Column Stores
Row-ID Info Chef-von
1 VornameAnna
NachnameSchmidt
22015-01-01
2 NachnameHeinz
Geboren1982
32014-06-01
42014-02-15
3 VornameSusanne
BerufBäcker
4 VornameCarlo
NachnameFranzen
Column FamilyColumn Family
GET ‘t’, ‘2’, {COLUMNS=>['Chef-von:']}GET ‘t’, ‘2’, {COLUMNS=>['Chef-von:']}
{
_id: 883,
"Titel": "Notebook zu verkaufen",
"Preis": 400,
"Waehrung": "EURO",
"Verkaeufer": {
"Name": "Franzen",
"Vorname": "Carlo",
"maennlich": true,
"Hobbys": [ "Reiten", "Golfen", "Lesen" ],
"Alter": 42,
"Kinder": [],
"Partner": null
}
}
Dokumenten-DatenbankenJSON-DokumentJSON-Dokument
db.prod.find()db.prod.find()
db.prod.find({Preis: {
$gt: 100} }, {Titel:1})
db.prod.find({Preis: {
$gt: 100} }, {Titel:1})
db.prod.insert({_id:
884, Titel:”xyz”})
db.prod.insert({_id:
884, Titel:”xyz”})
Graph-Datenbanken
Hvorname: Achim
nachname: Schneidergehalt:50000
ls –f gehalt>40000ls –f gehalt>40000
ACID
Atomarität
Konsistenz
Isolation
Dauerhaftigkeit
Alles-oder-Nichts-PrinzipAlles-oder-Nichts-Prinzip
Transaktion hinterlässtkonsistenten DB-Zustand
Transaktion hinterlässtkonsistenten DB-Zustand
Parallel laufenden TAs beeinflussen sich nichtParallel laufenden TAs beeinflussen sich nicht
Freigegebene Änderungengehen nicht verloren
Freigegebene Änderungengehen nicht verloren
ACID
Atomarität
Konsistenz
Isolation
Dauerhaftigkeit
a = 10
b = 10
Begin of Transaction
a -= 2
b += 2
End of Transaction
a = 8
b = 12
CAP-Theorem
Nimm 2
Consistency
AvailabilityPartition Tolerance
Leseoperationliefert stets
aktuellen Wert
Leseoperationliefert stets
aktuellen Wert
System nimmtAnfragenentgegen
System nimmtAnfragenentgegen
Netzwerkknotenkönnen
unterschiedlichenZustand haben
Netzwerkknotenkönnen
unterschiedlichenZustand haben
CAP-Theorem
In einem verteilten System gehen Nachrichten verloren oder kommen verzögert an.
Nimm 2
Consistency
AvailabilityPartition
Tolerance
Muss!Muss!
entweder… oder
entweder… oder
entweder… oder
entweder… oder
CAP-Theorem (Beweis-Skizze)
a: 8 8 8 10 8
GET aGET a
InkonsistentNimm 2
Consistency
AvailabilityPartition
Tolerance
CAP-Theorem (Beweis-Skizze)
a: 8 8 8 10 8
GET aGET a
Nimm 2
Consistency
AvailabilityPartition
Tolerance
CAP-Theorem (Beweis-Skizze)
a: 8 8 8 8 8
GET aGET a
Nimm 2
Consistency
AvailabilityPartition
Tolerance
Strong Consistency
a: 10 10 10 10 10
SET a 8SET a 8 SET a 8SET a 8 SET a 8SET a 8 SET a 8SET a 8 SET a 8SET a 8
N = 5
W = 5
R = 1
Strong Consistency
SET a 8SET a 8
GET aGET a GET aGET a GET aGET a GET aGET a GET aGET a
a: 8 10 10 10 10
N = 5
W = 1
R = 5
Strong Consistency: W+R>N
SET a 8SET a 8
GET aGET a GET aGET a GET aGET a
a: 8 8 8 10 10
N = 5
W = 3
R = 3
SET a 8SET a 8 SET a 8SET a 8
Eventual Consistency: W+R≤N
SET a 8SET a 8
GET aGET a GET aGET a GET aGET a
a: 8 8 10 10 10
N = 5
W = 2
R = 3
SET a 8SET a 8
Map Reduce
MapReduce
Wandle Datensatz fürDatensatz in Key-Value-Paare
Wandle Datensatz fürDatensatz in Key-Value-Paare
Sortiere allesnach Key
Sortiere allesnach Key
Verarbeite für jeden Key die Liste der Values
Verarbeite für jeden Key die Liste der Values
MapReduce
map(zeilennr, text):
for each word in text:
emit(word, 1)
reduce(word, values):
sum = 0
for each v in values:
sum = sum + v
emit(word, sum)
1: ich bin ich1: ich bin ich
(ich, 1)(ich, 1) (bin, 1)(bin, 1) (ich, 1)(ich, 1)
(ich, [1,1])(ich, [1,1])
(ich, 2)(ich, 2)
MapReduce
• Von Google
• Freie Implementierung: Apache Hadoop
• Eingabe-/Ausgabe-Formate:• HBase• MongoDB• HDFS (Hadoop Distributed File System)
• Höhere Sprachen• Hive (Generiert MapReduce aus SQL)• Pig• NotaQL
Big-Data-Analysen
DBUpload
Map Reduce Σ
StatistikenStatistikenEmpfehlungenEmpfehlungen
Oft Personenbezogene Daten Anonymisierte / Aggregierte Daten
Big-Data-Analysen
DBKlick
Map Reduce Σ
Uwe Peters klickt auf Laptop-WerbungMike Lorenz klickt auf Kinofilm-WerbungFranka Zwickau klick auf Kinofilm-Werbung
(Laptop, 1)(Kinofilm, 2)
k-Anonymität
Ein sichtbares Ergebnis hat seinenUrsprung in mind. k DatensätzenEin sichtbares Ergebnis hat seinenUrsprung in mind. k Datensätzen
=> Verhindert, dass man auf die Datensätze rückschließen kann
k-Anonymität
ID Name PLZ Geschl Geboren Krankheit
1 Franka Meyer 67663 W 1988 Diabetes
2 Heinrich Schmidt 54550 M 1984 Magersucht
3 Peter Huber 67663 M 1984 Schizophrenie
4 Uta Thiel 54550 W 1988 Magersucht
5 Gregor Bauer 67653 M 1984 Diabetes
Identifier Quasi-Identifier Sensibles Attribut
Krankheit von Uta ThielKrankheit von Uta ThielX
Identifier
k-Anonymität
ID Name PLZ Geschl Geboren Krankheit
1 Franka Meyer 67663 W 1988 Diabetes
2 Heinrich Schmidt 54550 M 1984 Magersucht
3 Peter Huber 67663 M 1984 Schizophrenie
4 Uta Thiel 54550 W 1988 Magersucht
5 Gregor Bauer 67653 M 1984 Diabetes
Krankheiten von Frauen aus54550, die 1988 geboren sindKrankheiten von Frauen aus
54550, die 1988 geboren sindX
Identifier Quasi-Identifier Sensibles AttributIdentifier
k-Anonymität
ID Name PLZ Geschl Geboren Krankheit
1 Franka Meyer 67663 W 1988 Diabetes
2 Heinrich Schmidt 54550 M 1984 Magersucht
3 Peter Huber 67663 M 1984 Schizophrenie
4 Uta Thiel 54550 W 1988 Magersucht
5 Gregor Bauer 67653 M 1984 Diabetes
Krankheiten von Frauen, die 1988 geboren sind
Krankheiten von Frauen, die 1988 geboren sind
Identifier Quasi-Identifier Sensibles AttributIdentifier
k-Anonymität
ID Name PLZ Geschl Geboren Krankheit
1 Franka Meyer 67663 W 1988 Diabetes
2 Heinrich Schmidt 54550 M 1984 Magersucht
3 Peter Huber 67663 M 1984 Schizophrenie
4 Uta Thiel 54550 W 1988 Magersucht
5 Gregor Bauer 67653 M 1984 Diabetes
Keine Anonymität bzgl. dieses Quasi-IdentifiersKeine Anonymität bzgl. dieses Quasi-Identifiers
Quasi-Identifier
k-Anonymität
ID Name PLZ Geschl Geboren Krankheit
1 Franka Meyer 67663 W 1988 Diabetes
2 Heinrich Schmidt 54550 M 1984 Magersucht
3 Peter Huber 67663 M 1984 Schizophrenie
4 Uta Thiel 54550 W 1988 Magersucht
5 Gregor Bauer 67653 M 1984 Diabetes
2-Anonymiät2-Anonymiät
k-Anonymität
ID Name PLZ Geschl Geboren Krankheit
1 Franka Meyer 67663 W 1988 Diabetes
2 Heinrich Schmidt 54550 M 1984 Magersucht
3 Peter Huber 67663 M 1984 Schizophrenie
4 Uta Thiel 54550 W 1988 Magersucht
5 Gregor Bauer 67653 M 1984 Diabetes
2-Anonymiät2-Anonymiät
Äquivalenzklassen:((W, 1988), {Diabetes, Magersucht}, 2)((M, 1984), {Diabetes, Magersucht, Schizophrenie}, 3)
k-Anonymität
ID Name PLZ Geschl Geboren Gehalt
1 Franka Meyer 67663 W 1988 50000
2 Heinrich Schmidt 54550 M 1984 40000
3 Peter Huber 67663 M 1984 50000
4 Uta Thiel 54550 W 1988 60000
5 Gregor Bauer 67653 M 1984 70000
2-Anonymiät2-Anonymiät
Äquivalenzklassen:((W, 1988), AVG: 55000, 2)((M, 1984), AVG: 50000, 3)
Zusammenfassung
• Big Data• Volume• Velocity• Variety• Veracity
• NoSQL• Key-Value-, Wide-Column-, Dokumenten-, Graph-DBs• BASE, CAP Theorem, Eventual Consistency
• MapReduce
• k-Anonymität
Quellen / Weitere Literatur
• NoSQL: Einstieg in die Welt nichtrelationaler Web 2.0 Datenbanken, Stefan Edlich, 2011
• http://nosql-database.org
• http://wwwlgis.informatik.uni-kl.de/cms/courses/distributeddatamanagement
• http://www.ipd.uni-karlsruhe.de/~buchmann/14SS-Datenschutz