Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen...

53
Teil XI NoSQL

Transcript of Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen...

Page 1: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Teil XI

NoSQL

Page 2: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

NoSQL

1. Motivation fur NoSQL

2. Datenmodelle fur NoSQL

3. KV-Stores und Wide Column

4. Document Stores

5. Graph Stores

11 - 1

Page 3: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

NoSQL

1. Motivation fur NoSQL

2. Datenmodelle fur NoSQL

3. KV-Stores und Wide Column

4. Document Stores

5. Graph Stores

11 - 2 VL Datenbanksysteme Sattler / Saake

Page 4: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

NoSQL

1. Motivation fur NoSQL

2. Datenmodelle fur NoSQL

3. KV-Stores und Wide Column

4. Document Stores

5. Graph Stores

11 - 3 VL Datenbanksysteme Sattler / Saake

Page 5: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

NoSQL

1. Motivation fur NoSQL

2. Datenmodelle fur NoSQL

3. KV-Stores und Wide Column

4. Document Stores

5. Graph Stores

11 - 4 VL Datenbanksysteme Sattler / Saake

Page 6: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

NoSQL

1. Motivation fur NoSQL

2. Datenmodelle fur NoSQL

3. KV-Stores und Wide Column

4. Document Stores

5. Graph Stores

11 - 5 VL Datenbanksysteme Sattler / Saake

Page 7: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Motivation fur NoSQL

NoSQL = Not only SQL

• im Umfeld vieler aktueller Buzzwords

NoSQL

Big Data

BASE

....

• oft einfach als Etikett einer Neuentwicklung eines DBMS pauschalvergeben

11 - 6 VL Datenbanksysteme Sattler / Saake

Page 8: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Was ist NoSQL?

• SQL - No!

SQL-Datenbanken sind zu komplex, nicht skalierbar, ...

man braucht was einfacheres!

• Not only SQL

SQL-Datenbanken haben zu wenig (oder die falsche) Funktionalitat

Operationen auf Graphen, Data Mining Operatoren, ...

• New SQL

SQL-Datenbanken sind (software-technisch) in die Jahre gekommen

eine neue Generation von DBMS muss her (ohne die etabliertenVorteile von SQL zu ignorieren)

11 - 7 VL Datenbanksysteme Sattler / Saake

Page 9: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Kritik an RDBMS / SQL

• nicht skalierbar

Normalisierung von Relationen, viele Integritatsbedingungen zuprufen

kann man in RDBMS auch vermeiden!

• starre Tabellen nicht flexibel genug

schwach typisierte Tabellen (Tupel weichen in den tatsachlichgenutzten Attributen ab)

• viele Nullwerte wenn alle potentiellen Attribute definiert• alternativ Aufspaltung auf viele Tabellen• Schema-Evolution mit alter table skaliert bei Big Data nicht

tatsachlich in vielen Anwendungen ein Problem

• Integration von spezifischen Operationen (Graphtraversierung,Data-Mining-Primitive) mit Stored Procedures zwar moglich fuhrtaber oft zu schwer interpretierbarem Code

11 - 8 VL Datenbanksysteme Sattler / Saake

Page 10: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Datenmodelle fur NoSQL

• KV-Stores

• Wide Column Stores

• Dokumenten-orientierte Datenhaltung

• Graph-Speicher

• ....

11 - 9 VL Datenbanksysteme Sattler / Saake

Page 11: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Anfragesprachen fur NoSQL

• unterschiedliche Ansatze:

einfache funktionale API

Programmiermodell fur parallele Funktionen

angelehnt an SQL-Syntax

....

11 - 10 VL Datenbanksysteme Sattler / Saake

Page 12: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Datenmodell: Key-Value-Stores

• Key-Value-Store: binare Relationen, bestehend aus

einem Zugri↵sschlussel (dem Key) und

den Nutzdaten (dem Value)

• Nutzdaten

binare Daten ohne Einschrankung,

Dateien oder Dokumente,

! Document Databases

oder schwachstrukturierte Tupel

! Wide Column Store

11 - 11 VL Datenbanksysteme Sattler / Saake

Page 13: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Anfragen an KV-Stores

• einfache API

store.put(key, value)value = store.get(key)store.delete(key)

• aufgesetzte hoherer Sprache angelehnt an SQL

• Map-Reduce

Framework zur Programmierung paralleler Datenaggregation aufKV-Stores

11 - 12 VL Datenbanksysteme Sattler / Saake

Page 14: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Beispielsysteme fur KV-Stores

• Amazon DynamoDB

• Riak

11 - 13 VL Datenbanksysteme Sattler / Saake

Page 15: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Datenmodell: Wide Column

• Basisidee: KV-Store mit schwachstrukturiertem Tupel als Value

• Value = Liste von Attributname-Attributwert-Paaren

schwache Typisierung fur Attributwerte (auch Wiederholgruppen)

• nicht alle Eintrage haben die selben Attributnamen

o↵ene Tupel

Hinzufugen eines neuen Attributs unproblematisch

Nullwerte aus SQL ersetzt durch fehlende Eintrage

• Beispiel in DynamoDB

11 - 14 VL Datenbanksysteme Sattler / Saake

Page 16: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Datenmodell: Wide Column /2

Key Value (Attributliste)

WeinID = 1 Name = Zinfandel Farbe = Rot Jahrgang = 2004WeinID = 2 Name = Pinot Noir Weingut = {Creek,

Helena}WeinID = 3 Name = Chardonnay Jahrgang = 2002 Weingut = Bighorn

11 - 15 VL Datenbanksysteme Sattler / Saake

Page 17: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Anfragen bei Wide Column

• CRUD: Create, Read, Update und Delete

• in DynamoDB

PutItem fugt einen neuen Datensatz mit der gegebenenAttribut-Wert-Liste ein bzw. ersetzt einen existierenden Datensatzmit gleichem Schlussel.

GetItem-Operation liest alle Felder eines uber einen Primarschlusselidentifizierten Datensatzes.

Scan erlaubt einen Lauf uber alle Datensatze mit Angabe vonFilterkriterien.

• Aufruf uber HTTP oder aus Programmiersprachen heraus

11 - 16 VL Datenbanksysteme Sattler / Saake

Page 18: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Beispielanfrage in DynamoDB

POST / HTTP/1.1

x-amz-target: DynamoDB 20111205.GetItem

content-type: application/x-amz-json-1.0

{ "TableName": "Weine",

" Key ":

{ "HashKeyElement": {"N": "1" }"RangeKeyElement": {"S": "Zinfandel" }

},"AttributesToGet": ["Farbe", "Jahrgang"],

"ConsistentRead": false

}

• Primarschlussel (HashKeyElement) ist numerisch (N)

• Feld Name ist Bereichsschlussel vom Typ String (S)

11 - 17 VL Datenbanksysteme Sattler / Saake

Page 19: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Beispielanfrage in DynamoDB: Ergebnis

HTTP/1.1 200

x-amzn-RequestId: ...

content-type: application/x-amz-json-1.0

content-length: ...

{"Item":{"Farbe": {"S": "Rot" },"Jahrgang": {"N": "2004" }},

"ConsumedCapacityUnits": 0.5

}

11 - 18 VL Datenbanksysteme Sattler / Saake

Page 20: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Datenmodell: dokumentenorientierte Speicherung

• Basisidee: KV-Store mit (hierarchisch) strukturiertem Dokument alsValue

• strukturiertes Dokument:

JSON-Format

• geschachtelte Wide Column-Daten

XML (eher unublich auf KV-Stores)

11 - 19 VL Datenbanksysteme Sattler / Saake

Page 21: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Beispiel fur Dokument in JSON

{"id" : "kritiker08154711",

"Name" : "Bond",

"Vorname" : "Jamie",

"Alter" : 42,

"Adresse" :

{"Strasse" : "Breiter Weg 1",

"PLZ" : 39007,

"Stadt" : "Machdeburch"

},"Telefon" : [7007, 110]

}

11 - 20 VL Datenbanksysteme Sattler / Saake

Page 22: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Anfragen bei dokumentenorientierter Speicherung

• CRUD erweitert um dokumentspezifische Suche

• Beispiele (MongoDB mit BSON statt JSON)

db.kritiker.find({Name: "Bond"})db.kritiker.find({Alter: 40})db.kritiker.find({Alter{$lt: 50}})db.kritiker.find({Name: "Bond", Alter: 42})db.kritiker.find($or[{Name: "Bond"},

{ Alter: 42}}])

11 - 21 VL Datenbanksysteme Sattler / Saake

Page 23: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Beispielsysteme fur dokumentenorientierte Speicherung

• MongoDB

• CouchDB

11 - 22 VL Datenbanksysteme Sattler / Saake

Page 24: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Graph-Datenmodelle: Grundlagen

• spezielle Form der Datenreprasentation = Graphen, insb.Beziehungen zwischen Objekten

• Anwendungsgebiete:

Transportnetze

Networking: Email-Verkehr, Mobilfunk-Nutzer

Soziale Netzwerke: Eigenschaften, Communities

Web: Verlinkte Dokumente

Chemie: Struktur chemischer Komponenten

Bioinformatik: Proteinstrukturen, metabolische Pathways,Genexpressionen

11 - 23 VL Datenbanksysteme Sattler / Saake

Page 25: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Grundbegri↵e

• Graph G = (V,E)

V : Menge der Knoten (vertices)

E ✓ V ⇥ V : Menge der Kanten (edges)

v1 v2

v4v3

Kanten konnen mit Gewicht versehen werden

11 - 24 VL Datenbanksysteme Sattler / Saake

Page 26: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Grundbegri↵e: Adjazenzmatrix

• Reprasentation von Graphen durch Matrix (Knoten als Zeilen undSpalten)

• ungerichteter Graph: symmetrische Matrix

• ungewichteter Graph: Zellen nur 0 oder 1

v1 v2

v4v3

3

1

1

2

2

5

05 1v4 2

0v3 20 0

v2 0 10 0

v1 0 003

v4v3v2v1

nach

von

11 - 25 VL Datenbanksysteme Sattler / Saake

Page 27: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Grundbegri↵e: Knotengrad

• Eigenschaft eines Knotens: Anzahl der verbundenen Knoten

• bei gerichteren Graphen: Unterscheidung in Eingangs- undAusgangsgrad

v1 v2

v4v3

3

1

1

2

2

5

01 1v4 1

0v3 10 0

v2 0 10 0

v1 0 001

v4v3v2v1

nach

von

3

1

1

1

2121

Ausgangsgrad

Eingangsgrad

11 - 26 VL Datenbanksysteme Sattler / Saake

Page 28: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Grundbegri↵e: Traversierung

• Tiefensuche (DFS): zunachst rekursiv alle Kindknoten besuchenbevor alle Geschwisterknoten besucht werden

Bestimmung der Zusammenhangskomponente

Wegsuche um Labyrinth

• Breitensuche (BFS): zunachst alle Geschwisterknoten besuchenbevor die Kindknoten besucht werden

Bestimmung des kurzesten Weges

11 - 27 VL Datenbanksysteme Sattler / Saake

Page 29: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Subjekt-Pradikat-Objekt-Modell: RDF

• Sprache zur Reprasentation von Informationen uber(Web)-Ressourcen

• Ziel: automatisierte Verarbeitung

• zentraler Bestandteil von Semantic Web, Linked (Open) Data

• Reprasentation von Daten, aber auch Wissensreprasentation (z.B.Ontologie)

11 - 28 VL Datenbanksysteme Sattler / Saake

Page 30: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Ontologien

• Ontologie = formale Spezifikation einer Konzeptualisierung, d.h.einer Reprasentation von Begri↵en (Konzepten) und derenBeziehungen

• Anwendung: Annotation von Daten, semantische Suche

Wein

Dessertwein Schaumwein Spätlese

Getränk

Weinbeschreibung

Farbe

Süße

Geschmack

Körper Abgang

Weingut wird beschriebenhat Hersteller

produziert

inverse zu

ist

11 - 29 VL Datenbanksysteme Sattler / Saake

Page 31: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

RDF: Graphen & Tripel

• Graph = Menge von Tripeln, die Aussagen uber Web-Ressourcenreprasentieren

• Identifikation der Web-Ressourcen uber Uniform Resource Identifier(URI)

• Tripel:

subjekt pradikat objekt .

• Beispiel

<http://weindb.org/weine/2171> \<http://weindb.org/ontologie/name> "Pinot Noir".

Pinot Noirhttp://weindb.org/weine/3478 http://weindb.org/ontologie/name

11 - 30 VL Datenbanksysteme Sattler / Saake

Page 32: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

RDF: Graphen & Tripel

• Subjekt: URI-Referenz, d.h. Ressource, auf die sich die Aussagebezieht

• Pradikat: Eigenschaft, ebenfalls in Form einer URI-Referenz

• Objekt: Wert der Eigenschaft als Literal (Konstante) oder URI-Referenz

11 - 31 VL Datenbanksysteme Sattler / Saake

Page 33: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

RDF: Abkurzende Notation

• abkurzende Notation fur Namensraume uber Prafixe:

prefix wo: <http://weindb.org/ontologie/>prefix weine: <http://weindb.org/weine/>

weine:2171 wo:name "Pinot Noir".

11 - 32 VL Datenbanksysteme Sattler / Saake

Page 34: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

RDF: Komplexe Graphen

• mehrere Aussagen zum gleichen Subjekt

• Objekte nicht nur Literale sondern selbst Objekte (URI)

weine:2171 wo:name "Pinot Noir".

weine:2171 wo:farbe "Rot".

weine:2171 wo:jahrgang "1999".

weine:2171 wo:erzeuger werzeuger:567 .

Rot

Pinot Noir

1999

werzeuger:567

weine:3478wo:farbe

wo:name

wo:jahrgang

wo:erzeuger

11 - 33 VL Datenbanksysteme Sattler / Saake

Page 35: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

RDF: Reprasentation, Schema und Vokabulare

• Reprasentation von RDF-Daten: N-Tripel (siehe oben), RDF/XML

• RDF Schema:

objektorientierte Spezifikationssprache

erweitert RDF um Typsystem: Definition von Klassen undKlassenhierarchien mit Eigenschaften, Ressourcen als Instanzen vonKlassen

RDF Schema ist selbst RDF-Spezifikation

11 - 34 VL Datenbanksysteme Sattler / Saake

Page 36: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

RDF: Reprasentation, Schema und Vokabulare /2

• Beispiel RDF Schema

Wein rdf:type rdfs:Class .

Schaumwein rdf:type rdfs:Class .

Schaumwein rdfs:subClassOf Wein .

Name rdf:type rdf:Property .

Jahrgang rdf:type rdf:Property .

Jahrgang rdfs:domain Wein .

Jahrgang rdfs:range xsd:integer .

• fur komplexere Ontologien: OWL (Web Ontology Language)

11 - 35 VL Datenbanksysteme Sattler / Saake

Page 37: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

RDF: Reprasentation, Schema und Vokabulare /3

• Vokabular: vordefinierte Klassen und Eigenschaften

Bsp: Dublin Core (Metadaten fur Dokumente), FOAF (SozialeNetze), ...

wichtig z.B. fur Linked Open Data

11 - 36 VL Datenbanksysteme Sattler / Saake

Page 38: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

SPARQL als RDF-Anfragesprache

• SPARQL Protocol And RDF Query Language: Anfragesprache furRDF

• W3C-Recommendation

• unterschiedliche Implementierungen moglich:

Aufsatz fur SQL-Backends (z.B. DB2, Oracle)

Triple Stores (RDF-Datenbank)

SPARQL-Endpoints

• syntaktisch an SQL angelehnt, aber Unterstutzung furGraph-Anfragen

11 - 37 VL Datenbanksysteme Sattler / Saake

Page 39: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

SPARQL-Elemente

• Grundelemente: select-where-Block und Tripelmuster

?wein wo:name ?name .

• Auswertung: finden aller Belegungen (Bindung) fur Variable(?name) bei Ubereinstimmung mit nicht-variablen Teilen

<http://weindb.org/weine/2171> wo:name "Pinot Noir".

<http://weindb.org/weine/2168> wo:name "Creek Shiraz".

<http://weindb.org/weine/2169> wo:name "Chardonnay".

11 - 38 VL Datenbanksysteme Sattler / Saake

Page 40: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

SPARQL: Basic Graph Pattern

• Graphmuster (BGP = Basic Graph Pattern): Kombination vonTripelmustern uber gemeinsame Variablen

?wein wo:name ?name .

?wein wo:farbe ?farbe .

?wein wo:erzeuger ?erzeuger .

?erzeuger wo:weingut ?ename .

• Einsatz in SPARQL-Anfragen im where-Teil

select ?wein ?name ?farbe ?ename

where { ?wein wo:name ?name .

?wein wo:farbe ?farbe .

?wein wo:erzeuger ?erzeuger .

?erzeuger wo:weingut ?ename . }

11 - 39 VL Datenbanksysteme Sattler / Saake

Page 41: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

SPARQL: Weitere Elemente

• filter: Filterbedingungen fur Bindungen

• optional: optionale Muster – erfordern nicht zwingend einMatching

prefix wo: <http://weindb.org/ontologie/>

select ?name

where { ?wein wo:name ?name . }optional { ?wein wo:jahrgang ?jahrgang } .

filter ( bound(?jahrgang) && ?jahrgang < 2010 )

11 - 40 VL Datenbanksysteme Sattler / Saake

Page 42: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Property-Graph-Modell

• Knoten und (gerichtete) Kanten mit Eigenschaften (Properties)

• nicht streng typisiert, d.h. Eigenschaften als Name-Wert-Paare

• Unterstutzung in diversen Graph-Datenbanksystemen: neo4j,Microsoft Azure Cosmos DB, OrientDB, Amazon Neptune, . . .

Helena

Pinot Noir

produziert

Spätbur-gundername: Helena

farbe: Rotjahrgang: 1999

beerenfarbe: Schwarzherkunft: Frankreich

anteil: 100%besteht aus

11 - 41 VL Datenbanksysteme Sattler / Saake

Page 43: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Property-Graph-Modell in Neo4j

• Elemente: Nodes, Relationships, Properties, Labels

• Properties = Key-Value-Paare: Key (=String), Value(=Java-Datentypen + Felder)

• Nodes mit Labels (⇡ Klassenname)

• Relationships: sind gerichtet, mit Namen und ggf. Properties

11 - 42 VL Datenbanksysteme Sattler / Saake

Page 44: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Property-Graph-Modell: Beispiel

anteil: 100%

Napa Valley

Pinot Noir

liegt in

produziert

Spätbur-gunder

besteht aus

gebiet: Napa Valleyregion: Kalifornien

farbe: Rotjahrgang: 2014

beerenfarbe: Schwarzherkunft: Frankreich

baut an

Merlot

baut an

Zinfandel

produziert

Helena

farbe: Rotjahrgang: 2019

beerenfarbe: Schwarzblauherkunft: Frankreich

Bighorn

name: Bighorn

liegt in

grenzt an

name: Helena

11 - 43 VL Datenbanksysteme Sattler / Saake

Page 45: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Anfragen auf Graphen

• keine Standardsprache

• aber wiederkehrende Grundelemente

Graph Matching: Knoten, Kanten, Pfade (siehe BGP in SPARQL)

Filter fur Knoten- und Kanteneigenschaften

Konstruktion neuer Graphen

• hier: Cypher (neo4j)

11 - 44 VL Datenbanksysteme Sattler / Saake

Page 46: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Anfragen in Cypher

• Basis: Muster der Form”Knoten ! Kante ! Knoten . . .“

(von)-[:relationship]->(nach)

• Beschrankung uber Label und Properties

(e:ERZEUGER)-[:LIEGT IN]->(a:ANBAUGEBIET {gebiet: ’Napa Valley’ } )

11 - 45 VL Datenbanksysteme Sattler / Saake

Page 47: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Cypher: Klauseln

• match: Beispielmuster fur Matching

• return: Festlegung der Ruckgabedaten (Projektion)

• where: Filterbedingung fur”gematchte“ Daten

• create: Erzeugen von Knoten oder Beziehungen

• set: Andern von Property-Werten

• . . .

11 - 46 VL Datenbanksysteme Sattler / Saake

Page 48: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Cypher: Beispiele

• Anlegen von Daten

create

(napavalley:ANBAUGEBIET {gebiet: ’Napa Valley’, region: ’Kalifornien’ }),

(helena:ERZEUGER { name: ’Helena’ }),...

(helena)-[:LIEGT IN]->(napavalley),

...

11 - 47 VL Datenbanksysteme Sattler / Saake

Page 49: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Cypher: Beispiele

• Alle Weinguter aus dem Napa Valley

match (e:ERZEUGER)-[:LIEGT IN]->(a:ANBAUGEBIET {gebiet: ’Napa Valley’ })

return e

• Alle Weinguter, die die Merlot-Traube anbauen

match (r:REBE { name: ’Merlot’ })<-[:BAUT AN]-(w) \-[:LIEGT IN]->(g)

return g

11 - 48 VL Datenbanksysteme Sattler / Saake

Page 50: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Cypher: Beispiele /2

• Alle Weinguter, die Weine mit eiem Spatburgunder-Anteil von mehrals 50% produzieren sowie die Anzahl dieser Weine pro Weingut

match (e:ERZEUGER)-[:PRODUZIERT]->(w:WEIN)-

[b:BESTEHT AUS]->(r:REBE { name: ’Spatburgunder’ })where b.anteil > 50

return e.name, count(w.name)

• Alle Weinguter, direkt an das Weingut Helena grenzen oder an einWeingut, das direkt an Helena grenzt

match (e1:ERZEUGER { name: ’Helena’ })-[:GRENZT AN*..2] \-(e2:ERZEUGER)

return e2

11 - 49 VL Datenbanksysteme Sattler / Saake

Page 51: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Cypher: Beispiele /3

• alle Knoten des Typs WEINE

match (w)

where w:WEINE

return w

• Knotengrade pro Knoten im Graph

match (n)-[r]-()

return n, count(r)

11 - 50 VL Datenbanksysteme Sattler / Saake

Page 52: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Zusammenfassung

• NoSQL als Oberbegri↵ fur diverse Datenbanktechniken

• große Bandbreite: von einfachen KV-Stores bis zuGraphdatenbanken

• hohere Skalierbarkeit / Performance gegenuber SQL-DBMS meistdurch Einschrankungen erkauft

Abschwachung von ACID-Eigenschaften

begrenzte Anfragefunktionalitat

Nicht-Standard bzw. proprietare Schnittstellen

11 - 51 VL Datenbanksysteme Sattler / Saake

Page 53: Teil XI NoSQL - Marcus Pinneckepinnecke.info/db1/ws-2019-2020-dbs-11.pdf · tats¨achlich in vielen Anwendungen ein Problem ... • Map-Reduce Framework zur Programmierung paralleler

Weiterfuhrende Literatur

• Lena Wiese: Advanced Data Management for SQL, NoSQL, Cloudand Distributed Databases. De Gruyter / Oldenburg, 2015

• Ian Robinson, Jim Webber, Emil Eifrem: Graph Databases. O’Reilly,2015

11 - 52 VL Datenbanksysteme Sattler / Saake