110 likes | 212 Views
6.4 Verwaltung semistrukturierter Daten. - was ist das? Datenverwaltung für XML-Dokumente Daten in XML-Gewand eigentlich XML-Dokumente Abbildung auf relationale und objektrelationale DBS Indexierung Anfragesprachen: XML Query - RDF-Datenbanken: erste Versuche. Indexierung.
E N D
6.4 Verwaltung semistrukturierter Daten • - was ist das? • Datenverwaltung für XML-Dokumente • Daten in XML-Gewand • eigentlich XML-Dokumente • Abbildung auf relationale und objektrelationale DBS • Indexierung • Anfragesprachen: XML Query • - RDF-Datenbanken: erste Versuche
Indexierung • Performance matters ! • Naive Lösung zur Auswertung von existsNode etc: • Parsen des Dokuments, Baum traversieren • CLOB mit invertierten Listen (wie oben: z.B. Intermedia) • Grundsätzliches Problem: Indexierung Semistrukturierter Daten • Warum eigentlich schwierig?? • Wertindex / Textindex • "Finde alle Objekte, die über einen Pfad erreichbar sind" : Pfadindex
Indexierung Lore-System (Stanford '97)Abiteboul et al.: Indexing semistructured data, Tech. Rep, Stanford Univ., ftp://db.stanford.edu/pub/papers/semiindexing98.ps. • Dataguides* • Idee: - alle Pfade des Datengraphen merken- Index, wenn die erreichbaren Objekte gespeichert werden * Datenverzeichnis (keine Standardübersetzung)
Dataguide (2) • Definition • Gegeben eine semistrukturierte DB (typisch hierarchisch, auch für Graph-DB definiert) • Ein Datenverzeichnis (Dataguide) für DB ist ein Graph G mit: • Jeder Pfad in DB kommt in G vor (Bezeichner-Pfad, nicht Daten!) • Jeder Pfad in G kommt in DB vor • Pfade in G sind eindeutig (aber nicht in DB!)
Dataguides (3) Problem: mehr als ein korrektes Datenverzeichnis für eine DB
Dataguides (4) I 1 II Nicht stark (strong) c b a {x} {z} {z'} {I,II} {1} {1} {I,II} {a,b} {c} {a,b,c} {x,z,z'} {x} {z,z'} "Strong Dataguide": äquivalente Pfade in Guide äquivalent in DB
Dataguides (5) • Algorithmus zur "Indexerstellung": Dataguide G: Knoten (G) = { {wurzel}} Kanten = while Veränderung do s = nonDetSelect (Knotenmenge (G)) a = Select (Labels) Knoten (G) =+ {s'={y|x in s, es existiert (x->y, label a) in Kantenmenge(DB)} Kanten (G) =+ (x->y, label a)
x x 10 13 12 11 11 3 9 7 8 6 2 5 4 9 1 1 x x x b a a c a d a a x 2,3,4,5,6 d a b c 7,8,10,12,13 7,13 Dataguides (6) DB Beachte: Konstruktion eines deterministischen aus nichtdetermini-stischem Automaten! b Dataguide G Kann offenbar groß werdenWenn DB Baum: Größe von G <= Größe DB
Indexierung Bsp: Lore-System (Stanford '97)Abiteboul et al.: Indexing semistructured data, Tech. Rep, Stanford Univ., ftp://db.stanford.edu/pub/papers/semiindexing98.ps. Ein hierarchisches Datenbänken... ... und die zughörigen Pfade • ... Und ein "DataGuide" (Widom et al.: "DataGuides: Enabling Query.....", Proc VLDB 1997) • enthält jeden möglichen Pfad der hierarchischen DB • "gibt es einen bestimmten Pad in der DB"- wie heißen die Nachfolger des aktuellen Knotens • Erweiterung zu Index durch Menge der erreichbaren Objekte
Systeme: Tamino • Tamino (SoftwareAG) "Native data store"
... Tamino • Beispiel für Integration mit tabellarischen Daten Anfrage: ...?_xql=hospital/patient[p-surname="Jones"]/doctor Sprache: X-Query