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

Ähnliche Dokumente
Projektgruppe. Knowledge Representation Persistence and Reasoning

Graphdatenbanksysteme

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

Multimedia im Netz. Übung zur Vorlesung. Ludwig-Maximilians-Universität Wintersemester 2010/2011

NoSQL mit Postgres 15. Juni 2015

Transaktionen in der Praxis. Dr. Karsten Tolle

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

PostgreSQL in großen Installationen

Cassandra Query Language (CQL)

Index- und Zugriffsstrukturen für. Holger Brämer, 05IND-P

NoSQL HANSER. Einstieg in die Web 2.0 Datenbanken. Stefan Edlich Achim Friedland Jens Hampe Benjamin Brauer Markus Brückner

Schemaless NoSQL Data Stores Object-NoSQL Mappers to the Rescue?

Entwurf und Prototypische Implementierung einer Data Mashup Plattform. Abschlussvortrag Projekt-INF

Gregor Raschke 2008 HIBERNATE. Eine Einführung

PostgreSQL High-Security

Algorithms for graph visualization

Szenario: B2B Lösung W4F / Lixto /

Allgemeines. veröffentlicht unter lizensiert unter. Creative Commons BY-SA 3.0. XQuery in MS SQL Server 2005

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

Java Forum Stuttgart 2013 twitter.com/kspichale spichale.blogspot.de

Neo4J & Sones GraphDB. Graph-Datenbanken. Von Toni Fröschke. Problemseminar NoSQL-Datenbanken (WS 2011/12)

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

+++ Bitte nutzen Sie die integrierte Audio-Funktion von WebEx (Menü Audio -> Integrated Voice Conference -> Start auswählen), um uns zu hören!!!.

NoSQL Datenbanken am Beispiel von CouchDB

Software Engineering Projekt WS2003/2004 ELF. Persistenz. Serge Didier Bedime

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Web Technologien NoSQL Datenbanken

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012

NoSQL. Was Architekten beachten sollten. Dr. Halil-Cem Gürsoy adesso AG. SEACON 2012 Hamburg

Exercise (Part XI) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

Suchen und Finden mit Lucene und Solr. Florian Hopf

PostgreSQL im praktischen Einsatz. Stefan Schumacher

Crawling & APIs. Valentin Deyringer Centrum für Informations- und Sprachverarbeitung

!"#$"%&'()*$+()',!-+.'/',

Wirtschaftsinformatik 2. Tutorium im WS 11/12

Privacy-preserving Ubiquitous Social Mining via Modular and Compositional Virtual Sensors

Teamprojekt & Projekt

design kommunikation development

Einführung in die Informatik II

SINT Rest App Documentation

Michaela Weiss 01. April Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL

Search Evolution von Lucene zu Solr und ElasticSearch

Objekt-relationales Mapping und Performance-Tuning

Jens Kupferschmidt Universitätsrechenzentrum

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

How to access licensed products from providers who are already operating productively in. General Information Shibboleth login...

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Modell/Metamodell. Generated Source Code. Generator. Model. Fakultät für Informatik und Wirtschaftsinformatik MDSD - SS 2014

SQL. Fortgeschrittene Konzepte Auszug

PHP Schulung Beginner. Newthinking Store GmbH Manuel Blechschmidt

MySQL Performance Tuning für Entwickler

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Performance Tuning

Dokumentenorientierte Datenbanken - MongoDB

MASTER THESIS. Ontology-Based Route Queries with Time Windows. Tobias Faaß. 17. Juni 2015

Überblick und Vergleich von NoSQL. Datenbanksystemen

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Java und Datenbanksysteme Datenbankanbindung mit JDBC

XML in der Oracle Datenbank "relational and beyond"

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

Webbasierte Exploration von großen 3D-Stadtmodellen mit dem 3DCityDB Webclient

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 6: Datenbankabfragen mit SQL und PHP. Stand: Übung WS 2014/2015

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

Ihr Dienstleister für individuelle Softwareentwicklung und IT-Beratung

RDF(a) und Microformats

Überblick. Einführung Graphentheorie

MySQL 101 Wie man einen MySQL-Server am besten absichert

PHP. Prof. Dr.-Ing. Wolfgang Lehner. Diese Zeile ersetzt man über: Einfügen > Kopf- und

4. Objektrelationales Mapping Grundlagen der Programmierung II (Java)

MySQL Installation. AnPr

Exercise (Part VIII) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

Was ist LDAP. Aufbau einer LDAP-Injection. Sicherheitsmaßnahmen. Agenda. LDAP-Injection. ITSB2006 WS 09/10 Netzwerkkonfiguration und Security

Die Alternative zum Web-Form Modell

Übungsaufgabe Transaktion als Middleware

Dehnbarer Begriff Verteiltes Suchen mit Elasticsearch

Informations- und Wissensmanagement

Algorithmen. Consistent Hashing Bloom Filter MapReduce. Distributed Hash Tables. Einführung 1

LINQ. LANGUAGE INTEGREATED QUERY.net 3.5. Bernhard Grojer

Softwareschnittstellen

Objektorientierte Datenbanken

MySQL Performance Tuning für Entwickler

TRAINING. Transbase Training. Transbase Training - Die Kurse in der Übersicht

Semantic Web Grundlagen

GeoEvent Processor und Feeds

Florian Hopf elasticsearch. Bern

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

Partitionieren über Rechnergrenzen hinweg

Kein blasses Schema? NoSQL und Big Data mit Hibernate OGM

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht

Organisatorisches. Unit1: Intro and Basics. Bewertung. About Me.. Datenorientierte Systemanalyse. Gerhard Wohlgenannt

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken.

Software Maintenance. Program Slicing im Software Maintenance. Fehlerlokalisierung UNIV.-PROF. DIPL.-ING. DR. FRANZ WOTAWA

PostgreSQL Wartungsstrategien

EXASOL Anwendertreffen 2012

Data-Warehouse-Technologien

Technologietag SharePoint 2010

Transkript:

Transformations on Graph Databases for Polyglot Persistence with NotaQL 2017-03-08 Johannes Schildgen schildgen@cs.uni-kl.de Yannick Krück Stefan Deßloch

Polyglot Persistence 3

Polyglot Persistence db.product.insert({ }) db.category.find() 4

Polyglot Persistence OUT._id <- IN._k.split( _ )[0], OUT.clicks <- SUM(IN._v) Data Transformation db.product.insert({ }) db.category.find() INCR dvd_174_cnt 5

6

Graph 8

G = (V, E) 9

v 1 v 2 10

v 1 v 2 11

v 1 v 2 12

0.2 v 1 v 2 0.6 13

Property Graphs Friend v 1 v 2 firstname:kai, nastname:li since:2015-11-11 firstname:ute, lastname:li 14

1 0 0 0 1 1 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 15

v 1 : v 2, v 5 v 2 : v 1, v 2, v 3 v 3 : v 3, v 4 v 4 : v 1 v 5 : 16

vid attribute value v1 vorname Kai v1 nachname Li v2 vorname Ute v2 nachname Li v2 geboren 1985-01-01 eid start ziel label e1 v1 v3 folgt e2 v2 v3 Bruder e3 v2 v4 folgt e4 v3 v4 folgt SELECT xv.value, xn.value vid FROM knoten kai, kanten, knoten xv, knoten xn, knotenlabelsv1 WHERE kai.attribute = vorname AND kai.wert = Kai AND v2 kanten.start=kai.vid AND v2 kanten.ziel = xv.vid AND xv.vid = knotenlabels.vid AND v3 xn.vid=xv.vid AND xv.attribute= vorname AND v4 xn.attribute= nachname AND knotenlabels.label = student eid attribute value e1 seit 2015 e3 seit 2014 e4 seit 2015 e4 priorität 5 label person person student person person 17

vid v1 v2 v3 v4 properties {vorname: Kai, nachname: Li } {vorname: Ute, nachname: Li, geboren:date(1985-01-01)} vid v1 v2 v2 v3 v4 label person person student person person eid start ziel label properties e1 v1 v3 folgt { seit : 2015 } e2 v2 v3 Bruder { } e3 v2 v4 folgt { seit: 2014 } e4 v3 v4 folgt { seit : 2015, Priorität:5 } 18

Row-id graph properties edges v1 label person vorname Kai nachname Li folgt_v3 2015 v2 label person vorname nachname geboren Ute Li 1985-01-01 Bruder_v3 folgt_v4-2015 v3 label person v4 label person 19

ergebnis = []; { _id: v1, kai = db.personen.find( label: person, {vorname: Kai },{folgt:1}) vorname: Kai, while(kai.hasnext()) { nachname: Li, p = folgt.next(); for(i in p.folgt) { folgt:[{_id: v2, seit:2015}] id = p.folgt[i]._id; } s = db.personen.findone({_id:id, { label: student, _id: v2, {vorname:1,nachname:1}) label:[ person, student ],.toarray(); vorname: Ute, if(s!=null){ergebnis.concat(s);} nachname: Li, } geboren:1985 } folgt:[{_id: v4, seit:2014, prioritaet:5}], Bruder:[ v3 ] }... 20

subjekt prädikat objekt http://dbpedia.org/resource/ Krefeld_Hauptbahnhof http://dbpedia.org/resource/ Krefeld_Hauptbahnhof http://dbpedia.org/resource/ Krefeld_Hauptbahnhof http://dbpedia.org/resource/ Krefeld_Hauptbahnhof http://dbpedia.org/resource/ Krefeld_Hauptbahnhof http://dbpedia.org/resource/ Germany rdf:type foaf:name http://schema.org/place Krefeld Hauptbahnhof georss:point 51.325833333333335 6.569444444444445 rdf:comment country foaf:name Krefeld Hauptbahnhof ist der größte Bahnhof der Stadt Krefeld. Dort http://dbpedia.org/resource/germany Germany 21

Storage Index Support (+Apache Lucene) Graph Query Languages ACID REST API Replication 22

{ _id: 77, firstname: Kate, age: 38, city: Rome } { _id: 19, firstname: Jane, age: 36, city: Bern } OUT._id <- IN._id, OUT.type <- person, OUT.firstname <- IN.firstname, OUT.age <- IN.age, OUT.city <- IN.city type : person _id : 77 name : Kate age : 37 city : Rome type : person _id : 19 name : Jane age : 35 city : Bern 23

{ _id: 77, firstname: Kate, age: 38, city: Rome } { _id: 19, firstname: Jane, age: 36, city: Bern } OUT._id <- IN._id, OUT.type <- person, OUT.$(IN.*.name()) <- IN.@ type : person _id : 77 name : Kate age : 37 city : Rome type : person _id : 19 name : Jane age : 35 city : Bern 24

{ _id: 77, firstname: Kate, age: 38, city: Rome } { _id: 19, firstname: Jane, age: 36, city: Bern } IN-FILTER: type= person, OUT._id <- IN._id, OUT.$(IN.name()) <- IN.@ type : person _id : 77 name : Kate age : 37 city : Rome type : person _id : 19 name : Jane age : 35 city : Bern 25

Accessing & Traversing Edges 26

type : person _id : 77 name : Kate age : 37 city : Rome friend since:2016-01-01 type : person _id : 19 name : Jane age : 35 city : Bern IN.age 37 35 27

type : person _id : 77 name : Kate age : 37 city : Rome friend since:2016-01-01 type : person _id : 19 name : Jane age : 35 city : Bern IN._>e 28

type : person _id : 77 name : Kate age : 37 city : Rome friend since:2016-01-01 type : person _id : 19 name : Jane age : 35 city : Bern IN._>e.since 2016-01-01 29

type : person _id : 77 name : Kate age : 37 city : Rome friend since:2016-01-01 type : person _id : 19 name : Jane age : 35 city : Bern IN._<e.since 2016-01-01 30

type : person _id : 77 name : Kate age : 37 city : Rome friend since:2016-01-01 type : person _id : 19 name : Jane age : 35 city : Bern IN._e.since 2016-01-01 2016-01-01 31

type : person _id : 77 name : Kate age : 37 city : Rome friend since:2016-01-01 type : person _id : 19 name : Jane age : 35 city : Bern IN._e_ type : person _id : 19 name : Jane age : 35 city : Bern type : person _id : 77 name : Kate age : 37 city : Rome 32

type : person _id : 77 name : Kate age : 37 city : Rome friend since:2016-01-01 type : person _id : 19 name : Jane age : 35 city : Bern IN._e_.name Jane Kate 33

type : person _id : 77 name : Kate age : 37 city : Rome friend since:2016-01-01 type : person _id : 19 name : Jane age : 35 city : Bern IN._e?( friend )_.name Jane Kate 34

35

Creating Edges 36

type : person type : person type : person _id : 77 name : Kate father _id : 25 name : Carl mother _id : 26 name : Carla age : 37 age : 57 age : 77 city : Rome city : Rome city : Rome create an edge to every persons grandmother grandmother via: father OUT._>e?(_id= IN._>e?( mother father )_._>e?( mother )_._id ) <- EDGE( grandmother, via <- IN._>e[@]._l ) 37

Iterative Computations Pagerank: PR q = p in q PR(p) out p OUT._id <- IN._>e_._id, OUT.pr <- SUM(IN.pr/COUNT(IN._>e._id)) 38

Iterative Computations Pagerank: PR q = p in q PR(p) out p REPEAT: 10, OUT._id <- IN._>e_._id, OUT.pr <- SUM(IN.pr/COUNT(IN._>e._id)) 39

Iterative Computations Pagerank: PR q = p in q PR(p) out p REPEAT: 99999999, OUT._id <- IN._>e_._id, OUT.pr <- SUM(IN.pr/COUNT(IN._>e._id)) 40

Iterative Computations Pagerank: PR q = p in q PR(p) out p REPEAT: -1, OUT._id <- IN._>e_._id, OUT.pr <- SUM(IN.pr/COUNT(IN._>e._id)) 41

Iterative Computations Pagerank: PR q = p in q PR(p) out p REPEAT: pr(0.0005%), OUT._id <- IN._>e_._id, OUT.pr <- SUM(IN.pr/COUNT(IN._>e._id)) 42

Implementation Details 43

44

Tinkerpop Blueprints Generic Graph API 45

Blueprints API Graph graph = new Neo4jGraph("/tmp/my_graph"); for (Vertex v : graph.getvertices()) { System.out.println(v.getId()); System.out.println(v.getProperty( vorname )); for(edge e : v.getedges(out)) {... } } 46

JSON 47

Applications 48

(15,000 vertices and 200,000 edges) 207 Min. 95 Sek. Java & Cypher 49

Graph-Transformationen in MongoDB 50

23 Min. Graph-Transformationen in MongoDB 2 Min. 51

Conclusions NotaQL language extension for graph transformations access / create properties and edges iterative algorithms cross-system graph transformations prototype based on Blueprints and Spark 52