Organisatorisches: Inhalt. Agenda. Die Abfragesprache SPARQL. Einleitung und Motivation Row Stores Optimierungen. Column Stores Andere Lösungen

Ähnliche Dokumente
Semantic Web Grundlagen

Semantic Web Grundlagen

Organisatorisches: Inhalt. Ontology Engineering. Agenda

7. XML-Datenbanksysteme und SQL/XML

Organisatorisches: Inhalt. RDF Schema. Agenda

Das relationale Modell (Teil 1)

Organisatorisches: Inhalt. Agenda. Die Abfragesprache SPARQL

Ausblick über den Tellerrand

Semantik von SPARQL. Foliensatz: Markus Krötzsch, Sebastian Rudolph. Webbasierte Informationssysteme 15. November 2010

Datenbanken: Datenkompression. Dr. Matthias Uflacker, Stefan Klauck 2. Mai 2018

7. XML-Datenbanksysteme und SQL/XML

Physischer DB-Entwurf

Semantic Web Grundlagen

Datenzugriffskomponente mit JPA 2.1

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Semantic Web Grundlagen

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

Oracle 9i Einführung Performance Tuning

Indexe. Ein Index = eine Struktur auf Platte, die einer Tabelle oder Sicht zugeordent ist, um die Tupeln in der Tabelle oder Sicht schneller abzurufen

Datenbanken Unit 9: OLAP, OLTP und objektrelationale Datenbanken

Oracle Database 12c Was Sie immer schon über Indexe wissen wollten

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Organisatorisches: Inhalt. Die Abfragesprache SPARQL. Agenda

Query Languages (QL) Relationale Abfragesprachen/Relational

Performance in der Oracle Datenbank von Anfang an

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

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

Datenbanken Unit 9: OLAP, OLTP und objektrelationale Datenbanken

Datenbanken: Indexe. Motivation und Konzepte

C++ Anwendungskurs Tag 4: Datenbanken Daniela Horn Institut für Neuroinformatik Real-time Computer Vision

XML-Datenaustausch in der Praxis Projekt TOMIS bei der ThyssenKrupp Stahl AG

Grundlagen der Datenbanksysteme 2 (M-DB2) Dr. Karsten Tolle

Dateiorganisation und Zugriffsstrukturen. Prof. Dr. T. Kudraß 1

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

3. Vorlesung. Skip-Pointer Komprimierung der Postings Speicherung des Dictionarys Kontext-Anfragen. Seite 55

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Wintersemester 2016/ Matrikelnummer: Hinweise. Unterschrift

Übersicht der wichtigsten MySQL-Befehle

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

Übungen zur Vorlesung Datenstrukturen Prof. R. Bayer, WS 2001/02

5.8.2 Erweiterungen Dynamische Hash-Funktionen (mit variabler Tabellengröße)?

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

Erzeugung und Veränderung von Tabellen

Semantic Web: Resource Description Framework (RDF)

Anfrageverarbeitung. Einführung

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen.

Schemamerging und -mapping

Datenbanken Vertiefung Wintersemester 2013/ Matrikelnummer: Hinweise. Unterschrift

Anfragebearbeitung. Logische Optimierung Physische Optimierung (Kostenmodelle Tuning ) Kapitel 8 1

Literatur: Jeffrey D. Ullman: Principles of Database Systems, 2 nd Edition 1982, Kapitel 2.2

Wiederholung VU Datenmodellierung

Semantic Web Grundlagen

Geodatenintegration unter Nutzung von Linked Data Prinzipien Stefan Wiemann Technische Universität Dresden

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

Datenbanken Vertiefung Wintersemester 2014/ Matrikelnummer: Hinweise. Unterschrift

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

MySQL Engine Infobright: Speicherplatz sparen und schnellere Anfragen

Datenbanken Implementierungstechniken SS2015

1 Einführung Ziele der Vorlesung Die Idee Lernkarte Selbsttest-Frage 3 Literaturhinweise 3

Anfragebearbeitung und Optimierung

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

ACCESS SQL ACCESS SQL

Indexstrukturen in SQL

Fokus bisher lag bisher auf sinnvoller Abbildung eines Ausschnitts der realen Welt in einer relationalen Datenbank

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Optimierung von Datenbanken

Entwicklung eines Tutorials für XQuery

Semantic Web Grundlagen

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Informationssysteme für Ingenieure

Semantic Web Grundlagen

Oracle 10g Einführung

Aufgabe 1 (RDF(S) Syntax und Semantik)

Oracle Indexing Primer

Kapitel 10: Relationale Anfragebearbeitung

Weitere Decision-Support Anfrage- Typen

Kap. 3 Relationenmodell mit relationaler Algebra

Datenbanken Unit 9: OLAP, OLTP, Data Warehouse Ranking Algorithmen

SQL - Datenbankdesign - Aufbau

Einführung in Hauptspeicherdatenbanken

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Agenda. Datenauszeichnung mit RDF. Rahmen für semantische Technologien. XML als Basis-Technologie. Wiederholungsübung XML

Oracle und SQL. Kursinhalte. Kompakt-Intensiv-Training. Oracle und SQL

XML-Technologien Tutorium 6

MCSA: SQL 2016 Database Development

Methodik zur Optimierung in Datenbanken. Anja Rommel, 14-INM

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

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

1 Relationenalgebra [8 P.] Gegeben seien die folgenden Relationenschemata: Hafen(HNR, Ort, Grundsteinlegung)

Transkript:

2/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Birte Glimm Institut für Künstliche Intelligenz 19. Jan 2012 Semantic Web Grundlagen SPARQL Implementierungstechniken Organisatorisches: Inhalt Einleitung und XML 17. Okt Hypertableau II 12. Dez Einführung in RDF 20. Okt Übung 4 15. Dez RDF Schema 24. Okt SPARQL Syntax & Intuition 19. Dez fällt aus 27. Okt SPARQL Semantik 22. Dez Logik Grundlagen 31. Okt SPARQL 1.1 9. Jan Übung 1 3. Nov Übung 5 12. Jan Semantik von RDF(S) 7. Nov SPARQL Entailment 16. Jan RDF(S) & Datalog Regeln 10. Nov SPARQL Implemetierung 19. Jan OWL Syntax & Intuition 14. Nov Ontology Editing 23. Jan Übung 2 17. Nov Übung 6 26. Jan OWL & BLs 21. Nov Ontology Engineering 30. Jan OWL 2 24. Nov Linked Data 2. Feb Tableau 28. Nov SemWeb Anwendungen 6. Feb Übung 3 1. Dez Übung 7 9. Feb Blocking & Unravelling 5. Dez Wiederholung 13. Feb Hypertableau 8. Dez Übung 8 16. Feb Abfragen und RIF wurde gestrichen 3/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 4/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Die Abfragesprache SPARQL Agenda Einleitung und Motivation Row Stores Optimierungen Column Stores Andere Lösungen

5/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 6/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Einführung und Motivation Die Menge an Daten im Semantic Web wächst kontinuierlich Mehr als 25 Milliarden RDF Triple im Web verfügbar (Linked Data) DBPedia: 3,4 Millionen Entitäten, 1 Milliarde Triple Effiziente Techniken zur Auswertung von Anfragen essentiell Wie können wir den Bgp( ) Operator effizient auswerten (ohne Entailment)? In welcher Reihenfolge sollten die anderen Operatoren ausgewertet werden? Mehr und Mehr Tripel Billion Triple Challenge 2008: 1 Milliarde Tripel Billion Triple Challenge 2010: 3 Milliarden Tripel Billion Triple Challenge 2011: 2 Milliarden Tripel http://www.w3.org/wiki/largetriplestores: BigOWLIM: 12 Milliarden Tripel (Juni 2009) Garlik 4store: 15 Milliarden Tripel (Oktober 2009) OpenLink Virtuoso: 15.4 Milliarden Tripel AllegroGraph: 1+ Billionen Tripel 7/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 8/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Und Komplexe Abfragemuster SELECT DISTINCT?a?b?lat?long WHERE {?a dbpedia:spouse?b.?a dbpedia:wikilink dbpediares:actor.?b dbpedia:wikilink dbpediares:actor.?a dbpedia:placeofbirth?c.?b dbpedia:placeofbirth?c.?c owl:sameas?c2.?c2 pos:lat?lat.?c2 pos:long?long. } Agenda Einleitung und Motivation Row Stores Optimierungen Column Stores Andere Lösungen

9/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 10/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 RDF in Row Stores Row Store: Relationale Datenbank, die Tripel in Reihen einer Relation speichert MySQL, PostgreSQL, Oracle, DB2, SQLServer,... Zugrunde liegendes Prinzip: Tripel werden in einer (sehr großen) Tabelle mit drei Attributen gespeichert (s, p, o) SPARQL Abfragen werden in SQL Abfragen umgeschrieben Die Datenbank übernimmt die Auswertung Strings werden oft auf eindeutige Integer IDs abgebildet Verwendet von vielen Tripel Stores z.b. 3Store, Jena, HexaStore, RDF-3X,... Einfache Erweiterung auf Quadrupel (Graph, Subjekt, Prädikat, Objekt) Hier aber Fokus auf Tripel Beispiel Tripel Tabelle ex:sebastian ex:lehrt ex:einführungki ; ex:arbeitetfür ex:kit ; ex:drvon ex:tudresden. ex:birte ex:lehrt ex:semwebgrundlagen ; ex:arbeitetfür ex:uulm ; ex:drvon ex:uomanchester. ex:markus ex:lehrt ex:kr&r ; ex:drvon ex:kit ; ex:arbeitetfür ex:uooxford, ex:semanticwiki. Subjekt Prädikat Objekt ex:sebastian ex:lehrt ex:einführungki ex:sebastian ex:arbeitetfür ex:kit ex:sebastian ex:drvon ex:tudresden ex:birte ex:lehrt ex:semwebgrundlagen ex:birte ex:arbeitetfür ex:uulm ex:birte ex:drvon ex:uomanchester ex:markus ex:lehrt ex:kr&r ex:markus ex:arbeitetfür ex:uooxford ex:markus ex:arbeitetfür ex:semanticwiki ex:markus ex:drvon ex:kit 11/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 12/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Umwandlung von SPARQL in SQL Abfragen Prinzipieller Ansatz: Für jedes Tripel Muster eine Kopie der Tripel Tabelle Konstanten im Abfragemuster führen zu Bedingungen Gemeinsame Variablen in Mustern führen zu Joins FILTER Bedingungen erzeugen Constraints OPTIONAL Klauseln erzeugen Outer Joins UNION Klauseln erzeugen Union Ausdrücke Beispiel: Umwandlung von SPARQL in SQL Abfragen SELECT?a?b?t WHERE {?a arbeitetfür.?b arbeitetfür.?a drvon. OPTIONAL {?a lehrt?t } FILTER (regex(, "*Ulm"))} Algebra Übersetzung: Project( Filter( regex(, "*Ulm"), LeftJoin( Bgp(... ), Bgp(... ), true ) ), {?a,?b,?t })?a ρ?b s π?a,?b,?t σ regex(, "*Ulm")?t o σ p=drvon σ p=lehrt

13/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 14/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Beispiel: Algebra Optimierung Beispiel: Umwandlung von SPARQL in SQL Abfragen T1?a ρ?b s T2 π?a,?b,?t σ regex(, "*Ulm")?t o σ p=drvon T3 σ p=lehrt T4 regex(o, "*Ulm") T1 o ρ?a T1.s?b T2.s π T1.s T2.s T1.s=T3.s o T2?a σ p=drvon?t o πs o σ p=lehrt T3 T4 SELECT * FROM ( SELECT T1.s as a, T2.s as b FROM Triples T1, Triples T2, Triples T3 WHERE T1.p="arbeitetFür" AND T2.p="arbeitetFür" AND T3.p="drVon" AND T1.o=T2.o AND T1.s=T3.s AND T1.o=T3.o AND REGEXP_LIKE(T1.o,"*Ulm") ) AS R1 LEFT OUTER JOIN ( SELECT T4.s as a, T4.o as t FROM Triples T4 WHERE T4.p="lehrt" ) AS R2 ON (R1.a=R2.a) o ρ?a T1.s?b T2.s π T1.s T2.s T1.s=T3.s o?a σ p=drvon regex(o, "*Ulm") T1 T2?t o πs o σ p=lehrt T3 T4 15/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 16/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Ist das Alles? Nein Welche Indexe sollen wir zur Auswertung der Tripel Muster verwenden? Wie können wir die Speicheranforderungen reduzieren? Was ist der beste Ausführungsplan? Agenda Einleitung und Motivation Row Stores Optimierungen Column Stores Andere Lösungen Existierende Datenbanken nicht unbedingt geeignet: Zahlreiche self-joins auf einer großen Tabelle schlecht unterstützt Abfrageoptimierer generieren oft schlechte Pläne für eine große Tripel Tabelle Erweiterbares generisches Tabellenmanagement nicht nötig

17/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 18/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Dictionary für Strings Strings werden auf eindeutige Integers abgebildet (z.b. durch Hashing) Gleichmäßige Größe einfacher zu handhaben Mapping ist meist klein kann im Hauptspeicher gehalten werden Beispiel <http://example.org/birte> 194760 <http://example.org/sebastian> 679375 <http://example.org/markus> 4634 Achtung: Natürliche Ordnung für das Sortieren geht nicht mehr Filterauswertung kann teurer werden Indexe für häufige Tripel Muster Muster mit einer Variable sind häufig Bsp.: ex:einstein ex:invented?x Anlegen eines clustered Index über (s, p, o) Alle Tripel in (s, p, o) Ordnung (16, 19, 5356) (16, 24, 567) (16, 24, 876) (27, 19, 643) (27, 48, 10486) (50,10,10456)... B+ Baum für schnellen Zugriff 1. ID Lookup: ex:einstein =16, ex:invented =24 2. Lookup des Präfix im Index: (16,24,0) 3. Lese Ergebnisse solange Präfix matched: (16, 24, 567), (16, 24, 876) (sind sortiert!) Geht auch für Muster der Form ex:einstein?p?x 19/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 20/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Indexe für häufige Tripel Muster Ähnliche Indexe für alle 6 Kombinationen: SPO, OPS, PSO, SOP, OSP, POS Deckt alle typischen Muster ab Ergibt sortierte Indexe für alle Muster mit zwei Variablen Triple Tabelle nicht länger benötigt da alle Tripel in den Indexen Relevanz der Sortierung für Joins Eingaben auf dem Join Attribut sortiert Merge Join: Sequentieller Scan beider Tabellen Sofortiger Join der Tripel Teile ohne Matches überspringen Pipelining möglich Eingaben auf dem Join Attribut unsortiert Hash Join: Hash Tabelle f. eine Tabelle Scanne die andere, nutze Hashing zum matchen Jeder Eingabe Tripel wird angefasst Kein Pipelining MJ HJ (16,19,5356) (16,33,46578) (16,19,5356) (27,18,133) (16,24,567) (16,56,1345) (16,24,567) (50,134,1056) (16,24,876) (24,16,1353) (16,24,876) (16,56,1345) (27,19,643) (27,18,133) (27,19,643) (24,16,1353) (27,48,10486) (47,37,20495) (27,48,10486) (47,37,20495) (50,10,10456) (50,134,1056) (50,10,10456) (16,33,46578)

21/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 22/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Weitere Indexe SPARQL erlaubt Duplikate (außer mit DISTINCT) Duplikate können für Anwendung wichtig sein (Zählen) Häufig Abfragen mit vielen Duplikaten Bsp.: SELECT?x WHERE {?x?y ex:deutschland} Um Elemente abzufragen, die zu Deutschland in Beziehung stehen Viele identische Zwischenergebnisse Lösung: Berechnung von aggregierten Indexen SP, SO, PO,PS, OP, OS, S, P, O Bsp.: SO enthält, für jedes Paar (s, o), die Anzahl der Tripel mit Subjekt s und Objekt o Statt identischer Bindungen speichern wir Multiplizitäten Bsp.:?x ex : Einstein : 4,?x ex : Merkel : 10 Kompression um Speicher zu Sparen Komprimiere Sequenzen von Tripeln in lexikographischer Ordnung (v 1, v 2, v 3 ); für SPO, v 1 = S, v 2 = P, v 3 = O Schritt 1: Berechne Deltas pro Attribut (16, 19, 5356) (16, 19, 5356) (16, 24, 567) (0, 5, -4798) (16, 24, 676) (0, 0, 109) (27, 19, 643) (11, -5, -34) (27, 48, 10486) (0, 29, 9843) (50, 10, 10456) (23, -38, -30) Schritt 2: Kodiere jedes Delta Tripel separat in 1-13 bytes gap header Delta mit Wert 1 Delta mit Wert 2 Delta mit Wert 3 bit (7 bits) (0 4 bytes) (0 4 bytes) (0 4 bytes) Wenn gap=1, Delta für v3 mit im Header sonst Wert 0 Sonst enthält der Header die Länge der Kodierungen für die drei Deltas (5*5*5=125 Kombinationen) 23/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 24/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Effektivität und Effizienz der Kompression Byte-level Kodierung fast so effektiv wie bit-level Kodierungstechniken (Gamma, Delta, Golomb) Deutlich schneller (10 ) bei der Dekodierung Beispiel Barton Datensatz (Neumann & Weikum 2010): Rohdaten 51 Millionen Tripel, 7GB unkomprimiert Alle 6 Hauptindexe: 1.1 GB Größe, 3.2s Dekomprimierung mit Byte-level Kodierung 1.06 GB Größe, 42.5s Dekomprimierung mit Delta Kodierung Zusätzliche Kompression mit LZ77 2 kompakter, aber deutlich langsamer bei der Dekomprimierung Kompression immer auf Seiten Level Zurück zur Beispiel Abfrage SELECT?a?b?t WHERE {?a arbeitetfür.?b arbeitetfür.?a drvon. OPTIONAL {?a lehrt?t } FILTER (regex(, "*Ulm"))} 50 σ regex(, "*Ulm") 1000 MJ POS(arbeitetFür,,?a) 250 π?a,?b,?t?a HJ?a POS(lehrt,?a,?t) 5 1000 PSO(arbeitetFür,,?b) 100 POS(drVon,,?a) 50 σ regex(, "*Ulm") 1000 π?a,?b,?t?a HJ?a POS(lehrt,?a,?t) 2500 100 MJ POS(arbeitetFür,,?a) Welcher der beiden Pläne ist besser? Wie viele Zwischenergebnisse? 250 PSO(drVon,?a, ) 1000 POS(arbeitetFür,,?b)

25/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 26/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Selektivitätsabschätzung für Abfragemuster Selektivitätsabschätzung sehr wichtig für gute Abfrageoptimierer (join order) In Standard Datenbanken: Histogramm für die Attribute Angenommene Unabängigkeit zwischen Attributen zu vereinfachend und ungenau Zusätzliche Join Statistiken für Tripel Blöcke:... (16, 19, 5356) (16, 24, 567) (16, 24, 876) (27, 19, 643) (27, 48, 10486) (50,10,10456)... Beginn Ende (s, p, o) (s, p, o) Anzahl der Tripel Anzahl verschiedener 1-Präfixe Anzahl verschiedener 2-Präfixe Join Partner für Subjekt s=s s=p s=o Join Partner für Prädikat p=s p=p p=o Join Partner für Objekt o=s o=p o=o Annahme: Unabhängigkeit zwischen Tripeln; zusätzlich Berechnung exakter Statistiken für häufige Pfade in den Daten Verarbeitung von Updates Wie können wir Änderungen an den Daten verarbeiten? SPARQL 1.1 definiert Updates! Annahmen: Lesende Abfragen wesentlich häufiger als Updates Updates meist Einfügen, weniger Löschen von Daten Verschiedene Anwendungen können nebenläufig updaten Lösung: Differenzielle Indexe 27/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 28/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Differentielle Updates Staging Architektur für Updates in RDF-3X Abfrage von A Löschen: Einfügen des gleichen Triples mit Löschflag Verändere scan/join Operatoren Hauptindexe S SP Dict1 Dict2 SPO Dict2 Dict1 SPO Vervollständigung von A Workspace A: Tripel eingefügt von Anwendung A P O SO PS PO OS OP SOP PSO POS OSP OPS SOP PSO POS OSP OPS Differentielle Indexe Vervollständigung von B Workspace B: Tripel eingefügt von Anwendung B On-demand Indexe zur Abfragezeit Batched Merges Im Hauptspeicher

29/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 30/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Agenda Einleitung und Motivation Row Stores Optimierungen Column Stores Andere Lösungen Prinzipien Beobachtungen und Annahmen: Wenig verschiedene Prädikate Abfragemuster haben meist keine Variablen als Prädikate Bedarf zur Abfrage von Tripeln mit gleichem Prädikat Design Konsequenzen: Nutzung einer Tabelle mit 2 Attributen pro Prädikat 31/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 32/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Beispiel: Column Store ex:sebastian ex:lehrt ex:einführungki ; ex:arbeitetfür ex:kit ; ex:drvon ex:tudresden. ex:birte ex:lehrt ex:semwebgrundlagen ; ex:arbeitetfür ex:uulm ; ex:drvon ex:uomanchester. ex:markus ex:lehrt ex:kr&r ; ex:drvon ex:kit ; ex:arbeitetfür ex:uooxford, ex:semanticwiki. drvon lehrt Subjekt Objekt Subjekt Objekt ex:sebastian ex:tudresden ex:sebastian ex:einführungki ex:birte ex:uomanchester ex:birte ex:semwebgrundlagen ex:markus ex:kit ex:markus ex:kr&r arbeitetfür Subjekt Objekt ex:sebastian ex:kit ex:birte ex:uulm ex:markus ex:uooxford ex:markus ex:semanticwiki Vereinfachtes Beispiel: Abfrage Konvertierung SELECT?a?b?t WHERE {?a arbeitetfür.?b arbeitetfür.?a drvon. } SELECT W1.Subjekt as a, W2.Subjekt as b FROM arbeitetfür W1, arbeitetfür W2, drvon P3 WHERE W1.Objekt=W2.Objekt AND W1.Subjekt=P3.Subjekt AND W1.Objekt=P3.Objekt Bisher ist das nur eine andere relationale RDF Repräsentation. Aber was sind Column Stores?

33/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 34/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Column Stores und RDF Column Stores speichern Spalten einer Tabelle separat drvon Subjekt Objekt ex:sebastian ex:tudresden ex:birte ex:uomanchester ex:markus ex:kit drvon:subjekt ex:sebastian ex:birte ex:markus drvon:objekt ex:tudresden ex:uomanchester ex:kit Vorteile: Schnell wenn nur auf das Subjekt oder nur das Objekt zugegriffen wird, nicht auf beides Erlaubt sehr kompakte Repräsentation Probleme: Subjekt und Objekt Spalten müssen wieder kombiniert werden bei Zugriff auf beides Ineffizient für Muster mit Prädikatsvariablen Kompression in Column Stores Allgemeine Idee: Subjekt wird nur einmal gespeichert Nutzung der gleichen Ordnung nach Subjekt für alle Spalten, inkl. NULL Werte wenn nötig Subjekt drvon lehrt arbeitetfür ex:sebastian ex:tudresden ex:grundlagenki ex:kit ex:birte ex:uomanchester ex:semwebgrundlagen ex:uulm ex:markus ex:kit ex:kr&r ex:uooxford ex:markus NULL NULL ex:semanticwiki Zusätzliche Kompression, um NULL Werte nicht zu speichern drvon:bit[1110] ex:tudresden ex:uomanchester ex:kit lehrt:range[1-3] ex:grundlagenki ex:semwebgrundlagen ex:kr&r 35/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 36/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Agenda Einleitung und Motivation Row Stores Optimierungen Column Stores Andere Lösungen Property Tabellen Entitäten mit ähnlichen Prädikaten werden in einer relationalen Tabelle gespeichert (z.b. durch Nutzung der Typen oder eines Clustering Algorithmus) ex:sebastian ex:lehrt ex:grundlagenki ; ex:arbeitetfür ex:kit ; ex:drvon ex:tudresden. ex:birte ex:lehrt ex:semwebgrundlagen ; ex:arbeitetfür ex:uulm ; ex:drvon ex:uomanchester. ex:markus ex:lehrt ex:kr&r ; ex:drvon ex:kit ; ex:arbeitetfür ex:uooxford, ex:semanticwiki. Subjekt lehrt drvon ex:sebastian ex:grundlagenki ex:tudresden ex:birte ex:semwebgrundlagen ex:uomanchester ex:markus ex:kr&r ex:kit übrige Tripel Subjekt Prädikat Objekt ex:sebastian ex:arbeitetfür ex:kit ex:birte ex:arbeitetfür ex:uulm ex:markus ex:arbeitetfür ex:uooxford ex:markus ex:arbeitetfür ex:semanticwiki

37/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 38/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Property Tabellen: Pro und Kontra Vorteile: Ähnlicher zu bestehenden relationalen DBMS Weniger self-joins als mit Tripel Tabellen Nachteile: Potentiell viele NULL Werte Mehrwertige Attribute problematisch Abfrage Transformation hängt vom Schema ab Änderungen am Schema teuer Noch viele weitere Techniken Speicherung von RDF Daten als bit-vektor Matritzen Konvertierung von RDF in XML und Nutzung von XML Methoden (XPath, XQuery) Speicherung von RDF Daten in Graph-Datenbanken... Welche Technik ist die Beste? Performanz hängt stark von der Vorberechung, Optimierung und Implementierung ab 39/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 40/40 Birte Glimm Semantic Web Grundlagen 19. Jan 2012 Vergleichende Studie Q1 Q2 Q3 Q4 cold caches RDF-3X 0.27+0.01 0.26+0.01 0.94+0.01 5.32+0.06 RDF-3X (2008) 4.02+0.03 0.36+0.01 4.5+0.04 112.0+3.32 COLSTORE >30min >30min 946.4+8.01 >30min ROWSTORE 17.44 +0.29 >30min 641.2+0.88 373.0+2.15 warm caches RDF-3X 0.01+0.01 0.01+0.01 0.01+0.01 0.23+0.01 RDF-X (2008) 0.54+0.01 0.01+0.01 0.28+0.01 105.7+1.71 COLSTORE >30min >30min 547.9+83.0 >30min ROWSTORE 0.69+0.03 >30min 637.1+4.97 212.0+1.43 Zusammenfassung Diverse Implementierungstechniken für Tripel Stores Eng verwandt mit Datenbanken Transaktionsmanagement oft (noch) vernachlässigt Oft auch Erweiterung um Regelsprachen Optimierungen essentiell für vernüftige Performanz Q5 Q6 Q7 Q8 geom. Mittel cold caches RDF-3X 2.37+0.04 0.46+0.01 3.99+0.05 0.35+0.01 0.94+0.01 RDF-3X (2008) 6.82+0.63 1.28+0.06 >30min 44.23+0.67 >7.43+0.07 COLSTORE >30min 665.9+38.4 18.71+0.32 >30min >208.0+1.49 ROWSTORE >30min 6.89+0.07 >30min 142.3+13.4 >87.22+0.68 warm caches RDF-3X 0.08+0.01 0.03+0.01 0.03+0.01 0.01+0.01 0.04+0.01 RDF-X (2008) 3.72+0.02 0.73+0.01 >30min 15.12+0.20 >2.59+0.06 COLSTORE >30min 650.0+31.7 0.86+0.02 >30min >150.0+1.48 ROWSTORE >30min 0.81+0.04 >30min 60.29+0.87 >43.98+0.22 Laufzeiten in Sekunden auf dem BTC 2008 Datensatz ([Neumann & Weikum, 2009])