NoSQL. 1 Motivation für NoSQL. 2 Datenmodelle für NoSQL. 3 KV-Stores und Wide Column. 4 Document Stores. 5 Graph Stores. NoSQL

Ähnliche Dokumente
Die Anweisung create table

Datenbanken und Semantic Web

Abstrakt zum Vortrag im Oberseminar. Graphdatenbanken. Gero Kraus HTWK Leipzig 14. Juli 2015

Projektgruppe. Knowledge Representation Persistence and Reasoning

XML-Technologien Tutorium 6

RDF & OWL. Praktikum Softwaretechnologie für die Ressourcenlinguistik. Johannes Hellrich & Erik Fäßler SS FSU Jena

ANALYTICS, RISK MANAGEMENT & FINANCE ARCHITECTURE. NoSQL Datenbanksysteme Übersicht, Abgrenzung & Charakteristik

Teil III Entity-Relationship-Modell

RDF und SPARQL. Kursfolien. Karin Haenelt

NoSQL Datenbanken EIN ÜBERBLICK ÜBER NICHT-RELATIONALE DATENBANKEN UND DEREN POTENTIALE IM ALLGEMEINEN UND IN DER INDUSTRIE

OWL Web Ontology Language

RDF. Resource Description Framework. RDF - Konzepte - Tripel. RDF - Konzepte - Graph. Information Retrieval - Semantic Technologies

Überblick und Vergleich von NoSQL. Datenbanksystemen

Semantic Technologies

Daten verknüpfen mit RDF. Lars Bröcker, Fraunhofer IAIS

Evaluation verschiedener Triple-Stores zum Speichern von Metadaten im Kontext des Forschungsdatenmanagements

Transformation einer relationalen Datenbank nach RDF am Beispiel von Reef Check-Daten. Seminararbeit Konrad Johannes Reiche

Teil II Relationale Datenbanken Daten als Tabellen

Semantic Web: RDF und N-Tripel

Semantic Web Grundlagen

Vorlesung Semantic Web. Vorlesung im Wintersemester 2012/2013 Dr. Heiko Paulheim Fachgebiet Knowledge Engineering

Semantic Markup für die Dokumentenklassifizierung. Seminarvortrag von Mirko Pracht

Ein XML Dokument zeichnet sich im Wesentlichen durch seine baumartige Struktur aus:

Vorlesung Semantic Web. Vorlesung im Wintersemester 2011/2012 Dr. Heiko Paulheim Fachgebiet Knowledge Engineering

RDF und RDF Schema. Einführung in die Problematik Von HTML über XML zu RDF

Semantic Web Technologies I Lehrveranstaltung im WS09/10

SODA. Die Datenbank als Document Store. Rainer Willems. Master Principal Sales Consultant Oracle Deutschland B.V. & Co. KG

Linked Data Grundlagen Einführung ins Data Web

Ontologiesprachen. 1.Was ist eine Ontologie 2.Aufbau einer Ontologie 3.RDF 4.RDFSchema 5.DAML+OIL / OWL 6.Frame-Logic

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

Die Basis des Semantic Web

Teil VIII. Weitere Datenbanksprachen

Semantic Web Technologies 1

NoSQL Graphdatenbanken mit HyperGraphDB. Tage der Datenbanken Donnerstag, Ludger Schönfeld, B. Sc. ludger.schoenfeld[at]smail.fh-koeln.

RavenDB, schnell und skalierbar

Stefan Edlich, Achim Friedland, Jens Hampe, Benjamin Brauer. NoSQL. Einstieg in die Welt nichtrelationaler Web 2.0 Datenbanken ISBN:

Inhaltsverzeichnis. Stefan Edlich, Achim Friedland, Jens Hampe, Benjamin Brauer, Markus Brückner. NoSQL

Wiederholung VU Datenmodellierung

Bericht BTI7311: Informatik Seminar Was sind Ontologien?

Ontologien und Ontologiesprachen

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

Semantic Web Grundlagen

Web Die Realisierung des Semantic Web

Medizininformatik Software Engineering

Anfragesprachen für Big Data Zusmmenfassung zum Vortrag im Oberseminar: Datenbanksysteme - Aktuelle Trends

Semantic Web: Resource Description Framework (RDF)

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs Datenbanksysteme. Von den Konzepten bis zur Anwendungsentwicklung ISBN:

Kapitel WT:VIII (Fortsetzung)

Einführung in die Informatik II

RDF RESOURCE DESCRIPTION FRAMEWORK. Referentin: Claudia Langer

Semantic-Web-Sprachen XML, RDF (und RDFS), OWL

OO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle

Inhalt. 1 Einleitung Warum dieses Buch? Der rote Faden Danksagung URL zum Buch 4. TEIL I Einführung 5

Groovy und CouchDB. Ein traumhaftes Paar. Thomas Westphal

Teil IV Datenbankentwurf

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Es geht also um die sogenannte SQL- Data Definition Language.

Graphenalgorithmen I

DB1. DB SQL-DQL 1 Mario Neugebauer

NoSQL Andere Wege in der Speicherung von Geodaten?

Transformations on. Graph Databases. for. Polyglot Persistence Johannes Schildgen. Yannick Krück Stefan Deßloch

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Ressourcen-Beschreibung im Semantic Web

6SHLFKHUXQJYRQ5')LQ'DWHQEDQNHQ

Technologien des Semantic Web und ihre Anwendungen

7. XML-Datenbanksysteme und SQL/XML

Teamprojekt & Projekt

Datenbanken Grundlagen und Design

Teil V Relationaler Entwurf

Datenbanksysteme Kapitel 6: Neue Konzepte der Datenbanktechnologie

FORSCHUNGSDATEN MODUL 3-1: Der Nutzen von verlinkten Daten

Einführung in CouchDB

SODA Die Datenbank als Document Store Rainer Willems Oracle Deutschland B.V. & Co. KG Dreieich Schlüsselworte

NoSQL mit Postgres 15. Juni 2015

Sven Krosse

Datenbanken & Informationssysteme (WS 2016/2017)

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Semantic Web Services

Big Data & Analytics Nationaler Akademietag, Fulda Referent: Meinhard Lingo

Detecting Near Duplicates for Web Crawling

Current Web (vs. Semantic Web) Vertiefendes Uebungsprojekt - SQL II. Semantic Web (Web of Data) Semantic Web vs. Current Web

Resource Description Framework (RDF)

Das relationale Modell (Teil 1)

OR-Mapping. WS2008/2009 DBIS/Dr. Karsten Tolle

Agenda. (1) Einleitung (2) neo4j. (3) Beispiel + Demo

Daniel Warner SQL. Das Praxisbuch. Mit 119 Abbildungen. Franzis

Webbasierte Informationssysteme

Rückblick: Datenbankentwurf

Analysis and integration of Web 2.0 data sources into a system for analysis and storage of Artefact-Actor-Networks

Datenbankanwendungen werden oft über einen sehr langen Zeitraum (z.b. Jahrzehnte) eingesetzt

Semantic Web: Semantische Suche

Entwicklung eines Tutorials für XQuery

Semantic Web Technologies I

7. Big Data und NoSQL-Datenbanken

Web Technologien NoSQL Datenbanken

Verknüpfte Daten abfragen mit SPARQL. Thomas Tikwinski, W3C.DE/AT

Integritätsbedingungen für komplexe Objekte in objektrelationalen Datenbanksystemen

Transkript:

Teil XII NoSQL

NoSQL 1 Motivation für NoSQL 2 Datenmodelle für NoSQL 3 KV-Stores und Wide Column 4 Document Stores 5 Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 1

Lernziele für heute... NoSQL... Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 2

Motivation für NoSQL Motivation für NoSQL NoSQL = Not only SQL im Umfeld vieler aktueller Buzzwords NoSQL BigData BASE... oft einfach als Etikett einer Neuentwicklung eines DBMS pauschal vergeben Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 3

Motivation für NoSQL 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) Funktionaliät 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 etablierten Vorteile von SQL zu ignorieren) Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 4

Motivation für NoSQL Kritik an RDBMS / SQL nicht skalierbar Normalisierung von Relationen, viele Integritätsbedingungen zu prüfen kann man in RDBMS auch vermeiden! starre Tabellen nicht flexibel genug schwach typisierte Tabellen (Tupel weichen in den tatsächlich genutzten Attributen ab) viele Nullwerte wenn alle potentiellen Attribute definiert sind alternativ Aufspaltung auf viele Tabellen Schema-Evolution mit alter table skaliert bei Big Data nicht tatsächlich in vielen Anwendungen ein Problem Integration von spezifischen Operationen (Graph-Traversal, Data Mining Primitive) mit Stored Procedures zwar möglich führt aber oft zu schwer interpretierbarem Code Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 5

Datenmodelle für NoSQL Datenmodelle für NoSQL KV-Stores Wide Column Stores Dokumenten-orientierte Datenhaltung Graph-Speicher... Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 6

Datenmodelle für NoSQL Anfragesprachen für NoSQL unterschiedliche Ansätze: einfache funktionale API Programmiermodell für parallele Funktionen angelehnt an SQL-Syntax... Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 7

KV-Stores und Wide Column Datenmodell: Key-Value-Stores Key-Value-Store: binäre Relationen, bestehend aus einem Zugriffsschlüssel (dem Key) und den Nutzdaten (dem Value) Nutzdaten binäre Daten ohne Einschränkung, Dateien oder Dokumente, Document Databases oder schwachstrukturierte Tupel Wide Column Store Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 8

KV-Stores und Wide Column Anfragen an KV-Stores einfache API store.put(key, value) value = store.get(key) store.delete(key) aufgesetzte höherer Sprache angelehnt an SQL Map-Reduce Framework zur Programmierung paralleler Datenaggregation auf KV-Stores Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 9

KV-Stores und Wide Column Beispielsysteme für KV-Stores Apache Hadoop Riak Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 10

KV-Stores und Wide Column Datenmodell: Wide Column Key Basisidee: KV-Store mit schwachstrukturiertem Tupel als Value Value = Liste von Attributname-Attributwert-Paaren schwache Typisierung für Attributwerte (auch Wiederholgruppen) nicht alle Einträge haben die selben Attributnamen offene Tupel Hinzufügen eines neuen Attributs unproblematisch Nullwerte aus SQL ersetzt durch fehlende Einträge Beispiel in DynamoDB Value (Attributliste) WeinID = 1 Name = Zinfandel Farbe = Rot Jahrgang = 2004 WeinID = 2 Name = Pinot Noir Weingut = {Creek, Helena} WeinID = 3 Name = Chardonnay Jahrgang = 2002 Weingut = Bighorn Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 11

KV-Stores und Wide Column Anfragen bei Wide Column CRUD: Create, Read, Update und Delete in DynamoDB PutItem fügt einen neuen Datensatz mit der gegebenen Attribut-Wert-Liste ein bzw. ersetzt einen existierenden Datensatz mit gleichem Schlüssel. GetItem-Operation liest alle Felder eines über einen Primärschlüssel identifizierten Datensatzes. Scan erlaubt einen Lauf über alle Datensätze mit Angabe von Filterkriterien. Aufruf über HTTP oder aus Programmiersprachen heraus Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 12

KV-Stores und Wide Column 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 } Primärschlüssel (HashKeyElement) ist numerisch (N) Feld Name ist Bereichsschlüssel vom Typ String (S) Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 13

KV-Stores und Wide Column 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 } Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 14

Document Stores Datenmodell: dokumentenorientierte Speicherung Basisidee: KV-Store mit (hierarchisch) strukturiertem Dokument als Value strukturiertes Dokument: JSON-Format geschachtelte Wide Column-Daten XML (eher unüblich auf KV-Stores) Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 15

Document Stores Beispiel für Dokument in JSON { } "id" : "kritiker08154711", "Name" : "Bond", "Vorname" : "Jamie", "Alter" : 42, "Adresse" : { "Strasse" : "Breiter Weg 1", "PLZ" : 39007, "Stadt" : "Machdeburch" }, "Telefon" : [7007, 110] Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 16

Document Stores 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}}]) Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 17

Document Stores Beispielsysteme für dokumentenorientierte Speicherung MongoDB CouchDB Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 18

Graph-Datenmodelle: Grundlagen spezielle Form der Datenrepräsentation = 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 Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 19

Grundbegriffe Graph G = (V, E) V: Menge der Knoten (vertices) E V V: Menge der Kanten (edges) v 1 v 2 v 3 v 4 Kanten können mit Gewicht versehen werden Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 20

Grundbegriffe: Adjazenzmatrix Repräsentation von Graphen durch Matrix (Knoten als Zeilen und Spalten) ungerichteter Graph: symmetrische Matrix ungewichteter Graph: Zellen nur 0 oder 1 3 v 1 v 2 nach v 1 v 2 v 3 v 4 5 2 1 von v 1 0 3 0 0 v 2 0 0 0 1 2 v 3 v 4 v 3 0 0 2 0 v 4 5 2 0 1 1 Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 21

Grundbegriffe: Knotengrad Eigenschaft eines Knotens: Anzahl der verbundenen Knoten bei gerichteren Graphen: Unterscheidung in Eingangs- und Ausgangsgrad 3 nach v 1 v 2 v 1 v 2 v 3 v 4 Ausgangsgrad v 1 0 1 0 0 0 5 2 1 von v 2 0 0 0 1 1 v 3 0 0 1 0 1 2 v 3 v 4 v 4 1 1 0 1 3 1 Eingangsgrad 1 2 1 2 Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 22

Grundbegriffe: Traversierung Tiefensuche (DFS): zunächst rekursiv alle Kindknoten besuchen bevor alle Geschwisterknoten besucht werden Bestimmung der Zusammenhangskomponente Wegsuche um Labyrinth Breitensuche (BFS): zunächst alle Geschwisterknoten besuchen bevor die Kindknoten besucht werden Bestimmung des kürzesten Weges Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 23

Subjekt-Prädikat-Objekt-Modell: RDF Sprache zur Repräsentation von Informationen über (Web)-Ressourcen Ziel: automatisierte Verarbeitung zentraler Bestandteil von Semantic Web, Linked (Open) Data Repräsentation von Daten, aber auch Wissensrepräsentation (z.b. Ontologie) Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 24

Ontologien Ontologie = formale Spezifikation einer Konzeptualisierung, d.h. einer Repräsentation von Begriffen (Konzepten) und deren Beziehungen Anwendung: Annotation von Daten, semantische Suche produziert inverse zu Getränk Weingut hat Hersteller Wein wird beschrieben Weinbeschreibung Dessertwein Schaumwein Spätlese Farbe Geschmack ist Süße Körper Abgang Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 25

RDF: Graphen & Tripel Graph = Menge von Tripeln, die Aussagen über Web-Ressourcen repräsentieren Identifikation der Web-Ressourcen über Uniform Resource Identifier (URI) Tripel: subjekt prädikat object. Beispiel <http://weindb.org/weine/2171> \ <http://weindb.org/ontologie/name> "Pinot Noir". http://weindb.org/ weine/3478 http://weindb.org/ontologie/name Pinot Noir Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 26

RDF: Graphen & Tripel Subjekt: URI-Referenz, d.h. Ressource, auf die sich die Aussage bezieht Prädikat: Eigenschaft, ebenfalls in Form einer URI-Referenz Objekt: Wert der Eigenschaft als Literal (Konstante) oder URI- Referenz Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 27

RDF: Abkürzende Notation abkürzende Notation für Namensräume über Präfixe: prefix wo: <http://weindb.org/ontologie/> prefix weine: <http://weindb.org/weine/> weine:2171 wo:name "Pinot Noir". Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 28

RDF: Komplexe Graphen komplexe Graphen durch: 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. Pinot Noir weine:3478 wo:name wo:farbe wo:jahrgang wo:erzeuger Rot 1999 werzeuger:567 Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 29

RDF: Repräsentation, Schema und Vokabulare Repräsentation von RDF-Daten: N-Tripel (siehe oben), RDF/XML RDF Schema: objektorientierte Spezifikationssprache erweitert RDF um Typsystem: Definition von Klassen und Klassenhierarchien mit Eigenschaften, Ressourcen als Instanzen von Klassen RDF Schema ist selbst RDF-Spezifikation 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. für komplexere Ontologien: OWL (Web Ontology Language) Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 30

RDF: Repräsentation, Schema und Vokabulare Vokabular: vordefinierte Klassen und Eigenschaften Bsp: Dublin Core (Metadaten für Dokumente), FOAF (Soziale Netze),... wichtig z.b. für Linked Open Data Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 31

SPARQL als RDF-Anfragesprache SPARQL Protocol And RDF Query Language: Anfragesprache für RDF W3C-Recommendation unterschiedliche Implementierungen möglich: Aufsatz für SQL-Backends (z.b. DB2, Oracle) Triple Stores (RDF-Datenbank) SPARQL-Endpoints syntaktisch an SQL angelehnt, aber Unterstützung für Graph-Anfragen Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 32

SPARQL-Elemente Grundelemente: select-where-block und Tripelmuster?wein wo:name?name. Auswertung: finden aller Belegungen (Bindung) für Variable (?name) bei Übereinstimmung 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". Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 33

SPARQL: Basic Graph Pattern Graphmuster (BGP = Basic Graph Pattern): Kombination von Tripelmustern über 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. } Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 34

SPARQL: Weitere Elemente filter: Filterbedingungen für Bindungen optional: optionale Muster erfordern nicht zwingend ein Matching prefix wo: <http://weindb.org/ontologie/> select?name where {?wein wo:name?name. } optional {?wein wo:jahrgang?jahrgang }. filter ( bound(?jahrgang) &&?jahrgang < 2010 ) Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 35

Property-Graph-Modell Knoten und (gerichtete) Kanten mit Eigenschaften (Properties) nicht streng typisiert, d.h. Eigenschaften als Name-Wert-Paare (Key-Value) gebiet: Napa Valley region: Kalifornien Napa Valley name: Helena liegt in Spätburgunder Helena produziert Pinot Noir besteht aus beerenfarbe: Schwarz herkunft: Frankreich farbe: Rot jahrgang: 1999 Unterstützung in diversen Graph-Datenbanksystemen: neo4j, InfiniteGraph,... Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 36

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 name: Kathrin Student Student name: Andreas kennt kennt kennt name: Holgi Student Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 37

Anfragen auf Graphen keine Standardsprache aber wiederkehrende Grundelemente Graph Matching: Knoten, Kanten, Pfade (siehe BGP in SPARQL) Filter für Knoten- und Kanteneigenschaften Konstruktion neuer Graphen hier: Cypher (neo4j) Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 38

Anfragen in Cypher Basis: Muster der Form Knoten Kante Knoten... (von)-[:relationship]->(nach) Beschränkung über Label und Properties (s1:student { name: Andreas })-[:kennt]->(s2:student) i Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 39

Cypher: Klauseln MATCH: Beispielmuster für Matching RETURN: Festlegung der Rückgabedaten (Projektion) WHERE: Filterbedingung für gematchte Daten CREATE: Erzeugen von Knoten oder Beziehungen SET: Ändern von Property-Werten... Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 40

Cypher: Beispiele Anlegen von Daten CREATE (andreas:student { name: Andreas }), (holgi:student { name: Holgi }), (kathrin:student { name: Kathrin }), (andreas)-[:kennt]->(kathrin), (kathrin)-[:kennt]->(holgi), (andreas)-[:kennt]->(holgi) Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 41

Cypher: Beispiele Alle Studenten, die Andreas kennt MATCH (s1: Student { name: Andreas })-[:kennt] ->(s2: Student) RETURN s1, s2 Alle Studenten, die Holgi kennen MATCH (s1: Student)-[:kennt]->(s2: Student) WHERE s2.name = Holgi RETURN s1, s2 Alle Studenten, die Kathrin kennen oder jemanden kennen, der sie kennt MATCH (s1: Student)-[:kennt*0..2]->(s2: Student) WHERE s2.name = Kathrin RETURN s1, s2 Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 42

Zusammenfassung NoSQL als Oberbegriff für diverse Datenbanktechniken große Bandbreite: von einfachen KV-Stores bis zu Graphdatenbanken höhere Skalierbarkeit / Performance gegenüber SQL-DBMS meist durch Einschränkungen erkauft Abschwächung von ACID-Eigenschaften begrenzte Anfragefunktionalität Nicht-Standard bzw. proprietäre Schnittstellen Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 43

Weiterführende Literatur Lena Wiese: Advanced Data Management for SQL, NoSQL, Cloud and Distributed Databases. De Gruyter / Oldenburg, 2015 Ian Robinson, Jim Webber, Emil Eifrem: Graph Databases. O Reilly, 2015 Sattler / Saake Datenbanksysteme Letzte Änderung: Okt. 2016 12 44