Optimierungsverfahren für große Datenbestände
Vortrag N.N. | Dr. Johannes Busse | jbusse@jbusse.de
Status Quo: Datenbestand Linked Open Data
Die Linked Open Data Cloud
- Datenbestände sind sachlogisch zusammengefasst und gepflegt
- Daten werden in einem gemeinsamen Daten-Modell publiziert: RDF
- Daten sind vielfältig vernetzt: The arrows indicate the existence of at least 50 links between two datasets. A link, for our purposes, is an RDF triple where subject and object URIs are in the namespaces of different datasets. ( http://richard.cyganiak.de/2007/10/lod/ )
Datenbestände liegen physisch verteilt vor
-
sollen nicht beliebig repliziert werden
- Datenmanagement: Wer erzeugt, wer konsumiert?
- Aktualität
-
dürfen nicht beliebig repliziert werden
- Zugriffsrechte, Datenschutz
- Urheberrechte, Geschäftsmodelle
-
können kaum in einem einzigen Repository vorgehalten
- passt in den Speicher?
-
passt in ein RDBMS
oder in einen Tripelstore?
- LOD VeryLarge: > 1 Milliarde Tripel
- passt nirgendwo 'rein, muss schon aus technischen Gründen verteilt gelagert werden!
Datenbestände werden von unterschiedlichen technischen Systemen vorgehalten: technische Integration ist nicht immer billig, aber im Prinzip lösbar (wenn sie wirklich gewollt ist).
Die Linked Open Data Cloud ist ein einziger sehr großer virtueller verteilter verlinkter Datenbestand. Es sind Milliarden (amerikanisch: bilions of) RDF-Tripel im Web verfügbar - mehr als in eine einziges RDBMS passen!
Modelle und Meta-Modelle
Schemata von Datenbeständen können in verschiedensten Meta-Modellen aufgebaut werden:
(Grundlage: Slide 18 from http://www.termnet.org/downloads/english/events/tss2009/TSS2009_GB_TerminologiesOntologies.pdf , Spalte 3 auf RDF angepasst)Die Schemata selbst sind dabei meist kaum kompatibel:
- Datenbestände sind immer zweck- und interessengebunden
- Schemata bedienen jeweils spezielle Bedarfe
- "Das eine Weltmodell" wäre zu komplex und zu unflexibel
- Altlasten, historische Gründe: "nur" ein praktisches Argument, keine theoretische Herausforderung
- prinzipelle Inkaufnahme einer Schema-Pluralität
- Linked Open Data: Verwendung von gemeinsamen Vokabularen wie FOAF, SKOS, DC etc - insbes. bei cross data set links
Integration auf allen Ebenen erforderlich
- Metamodelle: XML (XSD), RDBMS (ER), OO (UML), RDF
- Modelle: Schema 1 .. n
- Problem: n(n-1)/2 Übersetzungen
Unser Ansatz
- Übersetzung in das gemeinsame Meta-Modell RDF
- Speicherung von RDF-Modellen u.a. in einem RDBMS
Optimierung ist insbesondere nötig für
- Integration und Mapping zwischen verschiedenen Matamodellen
- Anfrage-Optimierung für verteilte Ressourcen: Query Federation
- Speicherung von RDF-Tripeln in RDBMS
- Anfrage-Optimierung für typische Graph-Queries
Datenmodellierung in RDF
Das RDF Datenmodell
- RDF ist ein Datenmodell, kein Format! (Formate s.u.)
-
Kern von RDF: ein gerichteter Graph mit
-
Knoten
- mit URI: "Ressource"
- mit Daten (string, integer, date): "Literal"
- anonym: lokale interne id
- Kanten: immer mit URI
-
Knoten
RDF ist "angekommen"
- Die EU-Administration publiziert ihren zentralen Thesaurus in RDF http://eurovoc.europa.eu/drupal/?q=de
- Datenpaten gesucht für öffentliche Daten in Berlin http://opendata-network.org/2010/08/openberlin-werde-ein-datenpate/
- As of 13 January 2010, The New York Times has published approximately ,10,000 subject headings as linked open data under a CC BY license. http://data.nytimes.com/
RDF ist ein Datenmodell und kann als solches in vielen Formaten serialisiert werden. Für RDF gibt es rund 10 verschiedene Formate:
-
auf RDF zugeschnittenes XML
- RDF / XML abbreviated
- RDF / XML
- RDF striped
- TRIX
-
human readable text formats
- n3
- N-triples
- turtle
-
in XML eingebettetes RDF
- RDFa
Jedes XML und jede relationale DB kann im Prinzip in RDF rekonstruiert werden.
Und ja: Datenbestände in RDF werden oftmals in RDBMS abgelegt: Unser Thema!
Semantische Datenbestände mit RDFa
RDF-Graphen können u.A. auch in xhtml-Dokumente eingebettet werden: http://www.w3.org/TR/xhtml-rdfa-primer/
Das gesamte WWW wird dadurch zu einem verteilten vernetzen Datenbestand.
- Anwendung ib b2b Bereich: http://www.heppnetz.de/projects/goodrelations/
Technische Integration
- Google und Yahoo lesen bestimmte RDFa Inhalte gezielt aus (Problem: Google und Yahoo verwenden unterschiedliche Vokabulare)
- RDFa wird sichtbar und auswertbar z.B. mit der Firefox-Erweiterung RDFa Developer: http://rdfadev.sourceforge.net/
Beispiel-Graph: Darstellung in semAuth:
html- und F-Logic Serialisierung:
Optimierte Datenhaltung von RDF-Tripeln in einem RDBMS
Etablierte Tripelstores wie Sesame, Jena etc. verwenden klassische RDBMS als Backend. Kernfrage: Wie kann man einen RDF Graphen in einem klassischen RDBMS modellieren?
Kernfrage: Optimierung der Speicherung von RDF-Tripeln im Relationen-Modell
Darstellung und Bsp. im Folgenden nach Daniel J. Abadi Adam Marcus Samuel R. Madden Kate Hollenbach: "Scalable Semantic Web Data Management Using Vertical Partitioning", VLDB ‘07, September 2328, 2007, Vienna, Austria. http://cs-www.cs.yale.edu/homes/dna/papers/abadirdf.pdf
Naiver Ansatz: Subjekt Prädikat Objekt Tabelle
Tripel-Tabelle
RDF Graph Triples | ||
Subj. | Prop. | Obj. |
---|---|---|
ID1 | type | BookType |
ID1 | title | “XYZ” |
ID1 | author | “Fox, Joe” |
ID1 | copyright | “2001” |
ID2 | type | CDType |
ID2 | title | “ABC” |
ID2 | artist | “Orr, Tim” |
ID2 | copyright | “1985” |
ID2 | language | “French” |
ID3 | type | BookType |
ID3 | title | “MNO” |
ID3 | language | “English” |
ID4 | type | DVDType |
ID4 | title | “DEF” |
ID5 | type | CDType |
ID5 | title | “GHI” |
ID5 | copyright | “1995” |
ID6 | type | BookType |
ID6 | copyright | “2004” |
Diskussion
- Eine simple Anfrage wie "Alle Bücher von Joe Fox im Jahr 2001" erfordert wiederholte Zugriffe auf die selbe Tabelle - teuer!
-
RDBMS hat keine Struktur über Tabellen zur Verfügung, die zur Optimierung genutzt werden können
- keine statistische Auswertung
- kein paralleler Zugriff
Tripel-Store, extremer Ansatz: Zum Teil wird mit dezidierten Triple-DB Implementierungen experimentiert
- Freebase-Backend: http://blog.freebase.com/2008/04/09/a-brief-tour-of-graphd/
- das ist Forschung, die beobachtet werden muss: curriculare Folgen?
- für die Praxis nur mit besonderer Begründung relevant
Unsere Frage: Wie können wir Tripel optimiert in klassischen RDBMS speichern?
Property Class Table
Ansatz: property table mit Zuordnung von Attributen zu Klassen
- Bemerke: Properties können in mehreren Tabellen vorkommen: ggf. sind UNION-Operationen erforderlich
Class: BookType | |||
Subj. | Title | Author | copyright |
---|---|---|---|
ID1 | “XYZ” | “Fox, Joe” | “2001” |
ID3 | “MNP” | NULL | NULL |
ID6 | NULL | NULL | “2004” |
Class: CDType | |||
Subj. | Title | Artist | copyright |
---|---|---|---|
ID2 | “ABC” | “Orr, Tim” | “1985” |
ID5 | “GHI” | NULL | “1995” |
Left-Over Triples | |||
Subj. | Prop. | Obj. | |
---|---|---|---|
ID2 | language | “French” | |
ID3 | language | “English” | |
ID4 | type | DVDType | |
ID4 | title | “DEF” |
Einsicht: generische zeilenorientierte Datenhaltung ist nicht optimal
- Speicherung von Zeilen als Data-Records
-
Postgres: 27 Byte Metadaten per Reihe
- id
- last upgrade
- bei gezipptem content reichen weitere 8 Byte für die eigentliche Datenhaltung meist aus
- der gesamte Record muss gelesen werden, bevor auf einzelne Attribute zugegriffen werden kann: Projektionen sind nicht Bandbreiten-optimal
- Problem Nullwerte
Clustered Property Tabelle
Ansatz: De- (!) Normalisierung von Tabellen durch Clusterung von unabhängigen, sachlogisch zusammengehörenden und nicht mehrwertigen Properties
Bemerke:
- jede Property ist in genau einer Tabelle enthalten
- NULLs können die Tabelle ggf. sogar dominieren
- multi valued attributes (MVA) und n:m-Relationen müssen separat vorgehalten werden
-
Property Tables müssen sorgfältig konstruiert werden
- ggf. manuell
- Datenanalyse: Welche Properties sind paarweise unabhängig?
Clustered Property Table | |||
Subj. | Type | Title | copyright |
---|---|---|---|
ID1 | BookType | “XYZ” | “2001” |
ID2 | CDType | “ABC” | “1985” |
ID3 | BookType | “MNP” | NULL |
ID4 | DVDType | “DEF” | NULL |
ID5 | CDType | “GHI” | “1995” |
ID6 | BookType | NULL | “2004” |
Left-Over Triples | |||
Subj. | Prop. | Obj. | |
---|---|---|---|
ID1 | author | “Fox, Joe” | |
ID2 | artist | “Orr, Tim” | |
ID2 | language | “French” | |
ID3 | language | “English” |
Vertikale Partitionierung
Idee: Lege für jede Property eine eigene Tabelle an
|
|
Vorteile der vertikalen Partitionierung
- triviale Unterstützung mehrwertiger Attribute
- trivialerweise keine Nullwerte
- triviale Projektionen
Konsequenz: Ein dezidiertes spaltenorientiertes RDBMS für RDF-Tripel
- muss weniger allgemeine Lösungen bereitstellen als ein generisches RDBMS für beliebige Schemata
- kann speziell auf spaltenorientierte Operationen hin optimiert werden
spaltenorientierte Datenhaltung
- Metadaten zu den Spalten sind in eigenen Spalten abgelegt (und können selektiv ignoriert werden)
- sortierte Spalten können besonders effektiv durchsucht werden
- Vereinigen von sortierten Spalten (Einfügen neuer Tupelmengen) ist besonders schnell
- Sortierung ist besonders relevant
- Persistenz: Speichere jede Spalte in einer eigenen Datei - die im Query-Fall parallel gelesen werden kann (extensive prefeching)
Offene Fragestellung: In Bezug auf welche Queries hin optimieren wir?
- Randbedingung jeder Datenhaltung: die Queries!
- RDF-Modelle sehen anders aus als XML- oder eben relationale Modelle
- im Ggs. zur RDMBS-Praxis kennen wir in RDF-Umgebungen die zukünftigen Queries i.A. nicht
Optimierung der Datenhaltung bzgl. Queries?
In Bezug auf welche Queries hin optimieren wir? Anfragen an das RDF-Datenmodell bedingen typische Query-Strukturen
- RDF wurde als Datenmodell eingeführt, nämlich als gerichteter Graph.
- Queries gegen einen RDF-Graphen sind sog. Graph-Queries
- Sind alle Graph-Queries 1:1 nach SQL übersetzbar?
(Quelle: http://www.cloudera.com/wp-content/uploads/2010/03/kurt3.png )
Wer fragt einen RDF-Graphen an?
- User, vermittelt durch Applikationen
- Inferencing-Engines! (z.B. Sesame2 RDF Store, enthält RDFS Inferencing Komponente;, früher: Deduktive Datenbanken, insbes. Datalog, heute: z.B. OntoBroker)
Anfragesprache: Nicht mehr SQL (ANSI 1986), sondern SPARQL (W3C Recommendation 15 January 2008)
-
SELECT ?person WHERE { ?person :owns ?car . ?car :madeIn :Detroit . }
Alternative Anfragesprache: F-Logic:
- QUERY Q_PersonOwsDetroitCar : ?- ?person [ owns -> ?car ] AND ?car : Car AND ?car [ madeIn -> Detroit ] .
- (Namespaces omitted)
Die Ontologie dazu: DemoOnto_PersonOwnsDetroitCar
Ergebnis:
- Übersetzung von SPARQL nach SQL oder F-Logic in Abhängigkeit der jeweiligen Datenmodellierung in RDBMS
- Es geht nicht mehr um SQL Query Optimierung, sondern um die Optimierung der Auswertung von SPARQL oder F-Logic Modellen gegen eine Tripelbasis
Anfragen an RDF in der Praxis
RDF Query-Optimierung durch Übersetzung von SPARQL oder F-Logic nach SQL ist derzeit Industrie-Spitzenforschung.
- OpenRuleBench: An Analysis of the Performance of Rule Engines http://rulebench.projects.semwebcentral.org/
Herausforderungen
- zirkuläre Graphen erzeugen rekursive SQL-Queries
- SQL2 kann nur End-Rekursion optimieren, keine generelle transitive Hülle möglich
- für komplexere Graph-Anfragen muss die Inferencing-Engine Zwischenergebnisse explizit zwischenspeichern
- User-Anfragen an RDF Daten in Triplestores werden durch meist durch ein Inferencing-System analysiert und ausgewertet
- Das Inferencing-System setzt komplexe Abfolgen von SQL-Statements an ein RDBMS ab, "kann" also mehr als SQL selbst
Optimierung der Datenhaltung jetzt in Bezug auf Aufgaben der Inferencing-Optimierung
Letzte Folie: Vortrag_DHBW2010_Zusammenfassung
Zusammenfassung
- Linked Open Data werden heute in RDF publiziert und ausgetauscht
- RDF wird in SPARQL (eine SQL-Erweiterung) angefragt
-
Backend für SPARQL-Endpoints ist meist ein RDMBS
- SPARQL basiert auf SQL
- Übersetzung SPARQL -> SQL integriert z.T. hochkomplexe Query-Optimierungen: Industrieforschung eilt der Hochschulforschung voraus.
-
RDF-Graphen werden idealerweise in speziellen spaltenorientierten RDBMS abgelegt
- uns zwar so, dass sog. Graph-Queries besonders gut unterstützt werden
- spaltenorietierte RDBMS sind hoch spezialisiert auf Nichtstandard-Aufgaben
- klassische Verfahren der Datenmodellierung und Query-Optimierung für RDBMS sind im RDF-Umfeld nicht unmittelbar anwendwar
-
"Optimierung für große Datenmengen"
- Wähle ein geeignetes Metamodell (relational, OO, XML, semantisch) für den eigenen Datenbestand
- exportiere / publiziere nach RDF
- verzichte konzeptuell auf Replikationen, sondern verlinke auf andere Daten
-
Beitrag von Wirtschaftsinformatikern im Team
- Beurteilen und Auswählen der beteiligten Systeme und Konzepte
-
Integration auch verschiedenster Modellierungs-Paradigma
- technisch
- konzeptuell
- Kenntnis von Algorithmen und Datenstrukturen, die vielfach verwendbar sind: für relationale, OO etc. Datenbanken