Labeling Dynamic XML Trees Edith Cohen, Haim Kaplan, Tova Milo Seminarvortrag von Jochen Leitz Labeling Dynamic XML Trees – p.1 Gliederung Einleitung Statisches Labeling Dynamisches Labeling Clues Zusammenfassung Labeling Dynamic XML Trees – p.2 Einleitung XML Dokumente mit Baumstruktur Indexstruktur benötigt Label (ID) für jeden Dokumentknoten unterstützen von strukturellen Anfragen Anfragen auf frühere Dokumentversinen Labeling Dynamic XML Trees – p.3 Labeltypen persistentes Label eindeutig, keine Wiedervergabe bleibt auch nach Löschen eines Knotens aus aktueller Dokumentversion ⇒ Zugriff auf gleichen Knoten in früheren Dokumentversionen strukturelles Label Test auf Vorgänger-/Nachfolgerbeziehung kein Betrachten der Nutzdaten ⇒ strukturelle Anfragen Labeling Dynamic XML Trees – p.4 Beispiel: Statisches Labeling Dokumentstruktur bekannt z. B. Nummerierung durch Tiefensuche buecher [1, 10] Hashtabelle als Index: [2, 5] buch buch [6, 9] [3, 4] preis preis [7, 8] ... −→ . . . {<buecher>} −→ {dokument1, {[1, 10]}} {<buch>} −→ {dokument1, {[2, 5], [6, 9]}} {<preis>} −→ {dokument1, {[3, 4], [7, 8]}} ... −→ . . . [3, 4] ⊆ [2, 5] ⇒ Preis eines Buchs (keiner CD) Was tun mit neuen Knoten? Labeling Dynamic XML Trees – p.5 Dynamische XML-Bäume vollständige Dokumentstruktur unbekannt bisheriger Ansatz: zwei Label ein persistentes und ein strukturelles bei Updates strukturelles Label neu berechnen Labeling Dynamic XML Trees – p.6 Motivation Ansatz hier: ein Label strukturell und persistent Vergabe beim Einfügen eines Knotens (dynamisch) Varianten: Präfixbäume (prefix scheme) Intervallbäume (range scheme) Labeling Dynamic XML Trees – p.7 Dynamisches Labeling z. B. Präfixbaum “” 10 0 0 110 10 0 00 110 0 100 10 0 1010 1100 v i-tes Kind von v L(v) L(v).1i−1 0 eindeutig L(v) Präfix von L(u) ⇒ v Vorgänger von u Labeling Dynamic XML Trees – p.8 Dynamisches Labeling: Updates hinzufügen und löschen verschieben = löschen und neu hinzufügen Labeling Dynamic XML Trees – p.9 Speicherplatz eines Label (1) möglichst kurze Label statisches Labeling: Blätter von links nach rechts nummerieren Markierung anhand Blätter im Teilbaum: [kleinstes Blatt, grösstes Blatt] maximaler Platzbedarf O(log n) Bits (n Anzahl Knoten) Labeling Dynamic XML Trees – p.10 Speicherplatz eines Label (2) dynamische Variante z. B. „breiter“ Präfixbaum “” 0 10 11100 110 111010 1110 1110110 11101110 maximaler Platzbedarf O(n) Labeling Dynamic XML Trees – p.11 Dynamisches Labeling: Problem Reservieren von Labels für potentielle Nachfolger “” 0 10 11100 110 111010 1110 1110110 11101110 Teilbaum ganz links alle Labels mit Präfix 0 reserviert werden ggf. niemals gebraucht Labeling Dynamic XML Trees – p.12 Clues Ziel: kurze Labels nicht „unnötig“ reservieren Speicherverbrauch insgesamt senken Ansatz: Schätzung der Anzahl zukünftiger Nachfolger z. B. erkennbar aus DTD, XML-Schema verwende Intervallbäume Labeling Dynamic XML Trees – p.13 Subtree Clues subtree-clue(v) : [l(v), h(v)] min./max. Anzahl zukünftiger Knoten im Teilbaum mit Wurzel v u [l(v), h(v)] = [2, 2] v reserviere 2 Label für den Teilbaum von v ? ? nicht reservierte Labels weiter verwendbar vgl. Präfixbaum: alle Labels mit Präfix 0 reserviert Labeling Dynamic XML Trees – p.14 Zusammenfassung Indexstrukturen benötigen Labels Ziel: ein persistentes, strukturelles Label Vergabe beim Einfügen eines Knotens Länge der Labels (Baum mit n Knoten): statisch Grenzen Θ(log n) dynamisch keine Clues Subtree Clues Sibling Clues Θ(n) Θ(log 2 n) Θ(log n) Labeling Dynamic XML Trees – p.15