NoSQL
Neue Ansätze zur Verwaltung unstrukturierter Daten
Tilmann Söffing
Das Relationale Datenbankmodell
Tabellenorientiert
PersonenID Name Alter
1 Meier 34
2 Peterson 52
3 Heinz 81
4 Kunz 63
Attribut
Datensatz
Das Relationale Datenbankmodell
Einfache Beziehungen mittels Referenzierung
PersonenID Name Firma
1 Meier 34
2 Peterson 35
3 Heinz 34
4 Kunz NULL
FirmenID Name
34 Druck & Co
35 CleanAll
Das Relationale Datenbankmodell
Mehrfachbeziehungen über zusätzliche Tabellen
PersonenID Name
1 Meier
2 Peterson
3 Heinz
4 Kunz
HausID
Adresse
13 Rosenweg 4
37 Jo.-Seb.-B.-Straße 7
Person Haus seit
1 13 2001
2 13 2001
1 37 2008
3 37 2004
RDBM - Probleme
● Flexibilität
● Komplexität
● Lokalität
● Konnektivität
RDBM - Probleme
● Flexibilität
● Komplexität
● Lokalität
● Konnektivität
ID Name Vorname Vorname 2 Vorname 3 …
1 Merkel Angela
Dorothea
NULL …
2 Fischer Joseph
Martin NULL …
3 Guttenberg
Karl Theodor Maria …
Anzahl der Vornamen
RDBM - Probleme
● Flexibilität
● Komplexität
● Lokalität
● Konnektivität
ID Verwaltung
1 MeinersID Objek
tVerwaltung
ID Straße Haus
4 ID Name Vorname
1 Meier Hans
2 Kunz DieterID Firma Mitarbeiter
1 Cooky
24
2 Heinz 2391
Firma Person
15 2
13 37
ID Stadt PLZ
1 Leipzig 04103
2 Jena 07743
RDBM - Probleme
● Flexibilität
● Komplexität
● Lokalität
● Konnektivität
ID Name
1 Franz
2 Sebastian
3 Klara
4 Stefan
5 Tim
6 Anna
7 Florian
8 Bella
9 Simon
10 Paul
PersonA
PersonB
1 4
7 2
10 3
1 7
2 8
1 2
RDBM - Probleme
● Flexibilität
● Komplexität
● Lokalität
● Konnektivität
ID Name
1 Simon
Person
Haus
1 13
ID Haus
13 Jenaer Strasse 3
Haus
Verwaltung
13 23
Verwaltung
Angebot
23 2
ID Angebot
1 Reinigung
2 Urlaubsservice
ID Verwaltung
23 Clean&Shiny
Der Begriff: NoSQL
NoSQL steht nicht für
„No to SQL“ oder „Never use SQL“
Der Begriff: NoSQL
NoSQL steht für
Not Only SQL
Ziele der NoSQL-Bewegung
Verwaltung von
- Unstrukturierten Daten- Stark vernetzten Daten- Schnellen Strukturänderungen- Großen Datenmengen
Ziele der NoSQL-Bewegung
Operationen auf Daten- Replikation- Versionierung- Partitionierung
NoSQL - Vertreter
Document
Graph DB
Key-Value
BigTable
Für jede Anwendung das richtige Werkzeug
"empfänger":"Eddi Müller"
"betrag":"1200 EUR"
"kontonr":"2221115132"
"blz":"830200100"
{
}
D O K U M E N T
1. Dokument: Schlüssel-
Wert-Paare
2. Schemafrei: Schlüssel sind
frei wählbar
3. Paare können jederzeit
hinzugefügt, geändert
und gelöscht werden
"empfänger":"Eddi Müller"
"betrag":"1200 EUR"
"kontonr":"2221115132"
"blz":"830200100"
{
}
D O K U M E N T
1. Dokument: Schlüssel-
Wert-Paare
2. Schemafrei: Schlüssel
sind frei wählbar
3. Paare können jederzeit
hinzugefügt, geändert
und gelöscht werden
"empfänger":"Eddi Müller"
"betrag":"1200 EUR"
"kontonr":"2221115132"
"blz":"830200100"
" betreff ":"Rechnung ABC"
{
}
D O K U M E N T
1. Dokument: Schlüssel-
Wert-Paare
2. Schemafrei: Schlüssel sind
frei wählbar
3. Paare können jederzeit
hinzugefügt, geändert
und gelöscht werden.
"empfänger":"Eddi Müller"
"betrag":"1200 EUR"
"kontonr":"2221115132"
"blz":"830200100"
" betreff ":"Rechnung CBA"
{
}
D O K U M E N T
1. Dokument: Schlüssel-
Wert-Paare
2. Schemafrei: Schlüssel sind
frei wählbar
3. Paare können jederzeit
hinzugefügt, geändert
und gelöscht werden.
"empfänger":"Eddi Müller"
"betrag":"1200 EUR"
"kontonr":"2221115132"
"blz":"830200100"
" betreff ":"Rechnung CBA"
{
}
D O K U M E N T
1. Dokument: Schlüssel-
Wert-Paare
2. Schemafrei: Schlüssel sind
frei wählbar
3. Paare können jederzeit
hinzugefügt, geändert
und gelöscht werden.
D AT E N B A N K
1. Datenbank anlegen
2. Name der Datenbank
vergeben
3. In der Datenbank
Dokumente erstellen
~~~~~~~ ~~~~~~~
~~~~~ ~~~~~~
~~~~~~~ ~~~~~~
~~~~~~~ ~~~~~~~
~~~~~ ~~~~~~
~~~~~~~ ~~~~~~
~~~~~~~ ~~~~~~~
~~~~~ ~~~~~~
~~~~~~~ ~~~~~~
Datenbank
"empfänger":"Eddi Müller"
"betrag":"1200 EUR"
"kontonr":"2221115132"
"blz":"830200100"
{
}
1. http://localhost:5984/_utils/
2. Datenbank „testdb“ erstellen
3. Dokument anlegen:
D AT E N M O D E L L
~~~~~~~ ~~~~~~~
~~~~~ ~~~~~~
~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~
~~~~~ ~~~~~~
~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~
~~~~~ ~~~~~~
~~~~~~~ ~~~~~~
DokumentenorientiertRelational
~~~~~~~ ~~~~~~~
~~~~~ ~~~~~~
~~~~~~~ ~~~~~~
~~~~~~~ ~~~~~~~
~~~~~ ~~~~~~
~~~~~~~ ~~~~~~
~~~~~~~ ~~~~~~~
~~~~~ ~~~~~~
~~~~~~~ ~~~~~~
~ ~
~ ~
~ ~
~ ~
~ ~
Graph-Modell
wenig bis gar nicht vernetzt
z. B. Visitenkarten
teilweise vernetzt
z. B. Bestellungen
hoch vernetzt
z. B. Verwandschaft
A B F R A G E N
A B F R A G E N
1. Kein SQL
2. Abfragetechnik
MapReduce
3. View: map- und reduce-
Funktion
4. Umdenken nötig, dafür
skalierbar
SQL
A B F R A G E N
1. Kein SQL
2. Abfragetechnik
MapReduce
3. View: map- und reduce-
Funktion
4. Umdenken nötig, dafür
skalierbar
1
2
3
map Ergebnisreduce
A B F R A G E N
1. Kein SQL
2. Abfragetechnik
MapReduce
3. View: map- und reduce-
Funktion
4. Umdenken nötig, dafür
skalierbar
map reduce
View
A B F R A G E N
1. Kein SQL
2. Abfragetechnik
MapReduce
3. View: map- und reduce-
Funktion
4. Umdenken nötig, dafür
skalierbar
t
n
R E P L I C AT I O N
1. Ziel: Zwei Datenbanken
haben die gleichen
Dokumente
2. Repliziere von A nach B
3. Ändere X in A zu X.2
4. Ändere X in B zu X.3
5. Repliziere von A nach B
6. Lösche Konflikt X.3
R E P L I C AT I O N
1. Ziel: Zwei Datenbanken
haben die gleichen
Dokumente
2. Repliziere von A nach B
3. Ändere X in A zu X.2
4. Ändere X in B zu X.3
5. Repliziere von A nach B
6. Lösche Konflikt X.3
A B
X.1
R E P L I C AT I O N
1. Ziel: Zwei Datenbanken
haben die gleichen
Dokumente
2. Repliziere von A nach B
3. Ändere X in A zu X.2
4. Ändere X in B zu X.3
5. Repliziere von A nach B
6. Lösche Konflikt X.3
A B
X.1 X.1
Replikation
R E P L I C AT I O N
1. Ziel: Zwei Datenbanken
haben die gleichen
Dokumente
2. Repliziere von A nach B
3. Ändere X in A zu X.2
4. Ändere X in B zu X.3
5. Repliziere von A nach B
6. Lösche Konflikt X.3
A B
X.2 X.1
R E P L I C AT I O N
1. Ziel: Zwei Datenbanken
haben die gleichen
Dokumente
2. Repliziere von A nach B
3. Ändere X in A zu X.2
4. Ändere X in B zu X.3
5. Repliziere von A nach B
6. Lösche Konflikt X.3
A B
X.2 X.3
R E P L I C AT I O N
1. Ziel: Zwei Datenbanken
haben die gleichen
Dokumente
2. Repliziere von A nach B
3. Ändere X in A zu X.2
4. Ändere X in B zu X.3
5. Repliziere von A nach B
6. Lösche Konflikt X.3
A B
X.2 X.2
Replikation
X.3
R E P L I C AT I O N
1. Ziel: Zwei Datenbanken
haben die gleichen
Dokumente
2. Repliziere von A nach B
3. Ändere X in A zu X.2
4. Ändere X in B zu X.3
5. Repliziere von A nach B
6. Lösche Konflikt X.3
A B
X.2 X.2
Quelle: Bruce Allmächtig
Anwendungsfall:Virtuelle Pinnwand
Schema
Text text text text text …
http://url
Skizze…
??
Laptop Server
Replikation
Martin Junghannssones GmbH R&DEugen-Richter-Straße 4499085 Erfurt [email protected]
sones GraphDB
Netzwerke
● Welt besteht aus Objekten, die miteinander in Verbindung stehen
● Politik, Wirtschaft, Wissenschaft● Körper, Interaktionen● Hardware, Software● Familie, Freunde, Kollegen
● Komplexe Zusammenhänge, ständiger Wandel● Umfangreiche Datenmengen
Photo: Jeffrey Beall, flickr
Graph = (Knoten, Kanten)
ID : 1 ID : 2
Knoten
Kante
Graphdatenbanken
Photo: Jeffrey Beall, flickr
Property Graph
Benutzerdefinierte Eigenschaften
Freund_vonID : 1Name : Alice
Alter : 21
ID : 2Name : Bob
Alter : 23seit : 2009/09/21
Knoten
Kante
Kanten-Properties
Knoten-
Properties
Photo: Jeffrey Beall, flickr
Property Graph
Benutzerdefinierte Eigenschaften
Freund_vonID : 1Name : Alice
Alter : 21
ID : 2Name : Bob
Alter : 23seit : 2009/09/21
Knoten
Kante
Kanten-Properties
Knoten-
Properties
ID Name Alter
1 Alice 21
2 Bob 23
Person_A
Person_B
seit
1 2 2009/09/21
Photo: Jeffrey Beall, flickr
Property Graph
Beziehungen durch Kantentypen
Freund_vonID : 1Name : Alice
Alter : 21
ID : 2Name : Bob
Alter : 23seit : 2009/09/21
ID : 3Name : EveAlter : 42
verwandt_mit
Grad: Mutter / Tochter
Photo: Jeffrey Beall, flickr
12.04.2023
Property Graph
Entitäten durch Knotentypen
Freund_vonID : 1Name : Alice
Alter : 21
ID : 2Name : Bob
Alter : 23seit : 2009/09/21
ID : 3Name : EveAlter : 42
Grad: Mutter / TochterID : 4
Name : JenaLand : D
EW : 100K
wohnt
_in
Person Person
Person
Ort
verwandt_mit
Photo: Jeffrey Beall, flickr
ID : 0Typ : PersonName: Alice
Age : 23
ID : 1Typ : PersonName : Bob
Age : 42
kommuniziert mitEncrypted : true
Method : RSA
ID : 3Typ : PersonName : Carol
Age : 18
kommuniziert mit
Encrypted : true
Method : AESverwandt m
it
Grad : Sist
er
ID : 23Typ : Uni
Name : TU Ilmenau
ID : 12Typ : Uni
Name : BA Gera
studiert anseit : 2001
studiert an seit
: 200
5seit : 2004
Stud
iert
an
Property Graph
Photo: Chuck “Caveman” Coker, flickr
Einfache Verwaltung strukturierter,
semi-strukturierter, unstrukturierter
Daten
Photo: litlnemo, flickr
Konstante Performanz auch bei steigender Datenmenge durch indexfreie Adjazenz
Photo: Google Search
Einfache Verwaltung (rekursiv)vernetzter
Daten
Photo: Robbert van der Steeg, flickr
Entdecken und Empfehlen potentiell interessanter
Zusammenhänge
Photo: Jeffrey Beall, flickr
Datensicherheit durchVerschlüsselung,Replikation undVersionierung
Photo: squacco, flickr
Anwendungen eGovernment
● Social Network – zentrale Kommunikationsplattform in der Verwaltung
● Universal Data Access – Daten zentral verwalten, Daten aus diversen Quellen verknüpfen
● Recommendation – Bewertung von Personen, Projekten, Bauflächen, Wohnräumen, …
Anwendungen eGovernment
● Automatische Kategorisierung – um die Übereinstimmung von z.B. Jobanzeigen und Bewerbern zu erhöhen und eine branchenübergreifende Empfehlung zu ermöglichen
● Verkehrsplanung (GIS) – Planung von Straßen anhand der Auslastung bestehender Verkehrsnetze
● ...
Photo: Google Maps Leipzig
Let‘s go to work @
http://localhost:8080/webshell
Photo: outnow.ch
CREATE VERTEX UserProfile
ATTRIBUTES
(
String Nachname,
Integer Alter,
Set<UserProfile> Freunde
)
INSERT INTO UserProfile
VALUES
(
Nachname = „Mueller“,
Alter = 23
)
INSERT INTO UserProfile
VALUES
(
Nachname = „Schmidt“,
Vorname = „Peter“,
Alter = 42,
Freunde = SETOF(Nachname=„Mueller“)
)
FROM UserProfile SELECT *
ALTER VERTEX UserProfile
ADD ATTRIBUTES ( String Wohnort )
ALTER VERTEX UserProfile
MANDATORY ( Wohnort )
FROM UserProfile SELECT *
INSERT INTO UserProfile
VALUES
(
Nachname = „Schulze“,
Alter = 37
)
Martin Junghannssones GmbH R&[email protected]
Vielen Dank
Olivo SkawronekIBYKUS [email protected]
Tilmann SoeffingSenova [email protected]