Labeling Dynamic XML Trees

Werbung
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
Herunterladen