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?