6. Baumbasierte Zugriffspfade

Werbung
6. Baumbasierte Zugriffspfade
Anforderungen an Zugriffspfade
• Folgende Arten von Zugriffen müssen unterstützt werden:
• Ziele
- Entwurfsprinzipien für Zugriffspfade auf die Sätze einer Tabelle,
bei denen ein Suchkriterium unterstützt wird
- Abbildungsmöglichkeiten für hierarchische Zugriffsanforderungen
• Anforderungen und Klassifikation
- Sequentieller Zugriff auf alle Sätze eines Satztyps (Scan)
Select * From Pers
- Sequentieller Zugriff in Sortierreihenfolge eines Attributes
... Order by Name
• Zugriffspfade für Primärschlüssel
- Binäre Suchbäume?
- Direkter Zugriff über den Primärschlüssel
- Mehrwegbäume und Digitalbäume
... Where Pnr = 0815
- Hash-Verfahren (Kapitel 7)
- Direkter Zugriff über einen Sekundärschlüssel
• B- und B*-Bäume
(Wiederholung)
... Where Beruf = ‘Programmierer’
• Digitalbäume
- Direkter Zugriff über zusammengesetzte Schlüssel und
komplexe Suchausdrücke (Wertintervalle, ...)
- m-ärer Trie
- Binärer Digitalbaum
... Where Gehalt Between 50K And 100K
• Adressierung in Bäumen
- wichtig für die fein-granulare Abbildung von XML-Dokumenten
- Nummerierungsschema für Knoten soll die Dokumentenstruktur und -ordnung berücksichtigen und bei beliebigen Einfügungen Renummerierung vermeiden
- Unterstützung von Navigation, deklarativer Anfrageauswertung und Sperren
• Wichtige Kenngrößen:
- Navigierender Zugriff von einem Satz zu einer dazugehörigen
Satzmenge desselben oder eines anderen Satztyps
... Where P.Pnr = A.Pnr
➥Wenn kein geeigneter Zugriffspfad vorhanden ist, sind alle
Zugriffsarten durch fortlaufende Suche (Scan) abzuwickeln
• n = #Sätze eines Satztyps
• b = mittlere #Sätze/Seite (Blockungsfaktor)
• q = #Treffer der Anfrage
• Scan
- muß von allen DBMS unterstützt werden!
• NS = #Seitenzugriffe
- ist ausreichend / effizient bei:
• NB = #Blattseiten des B*-Baums
• kleinen Satztypen (z. B. ≤ 5 Seiten)
• hB = Höhe des B*-Baums
• Anfragen mit großen Treffermengen (z. B. > 3%)
- DBMS kann Prefetching zur Scan-Optimierung nutzen
6-1
6-2
6-3
konstante
Schlüsseltransformation
dynamische
dynamische
Hash-Bereiche
statische
Hash-Bereiche
• Balancierte binäre Suchbäume
Definition: Seien Bl(x) und Br(x) die linken und rechten Unterbäume eines Knotens x. Weiterhin sei h(B) die Höhe eines Baumes B. Ein k-balancierter binärer Suchbaum ist entweder leer oder es ist ein Suchbaum, bei dem für jeden Knoten x gilt:
h ( Bl ( x ) ) – h ( Br ( x ) ) ≤ k
Definition: Ein 1-balancierter binärer Suchbaum heißt AVL-Baum.
neuer Schlüssel
baumstrukturierter
nach Einfügung
nach Rebalancierung
Linksrotation
⇒
RR
-2
BERN
WIEN
0
ATHEN
Schlüsselvergleich
fortlaufender
logisch
ganzer Schlüssel
Schlüsselteile
• Beispiel: AVL-Baum
-2
BONN
-1
BERN
0
ATHEN
R
-1
SOFIA
R
0
WIEN
• Satz
Für die Höhe hb eines AVL-Baumes mit n Knoten gilt:
log 2 ( n ) + 1 ≤ h b ≤ 1,44 ⋅ log 2 ( n + 1 )
physisch
Mehrweg- Digitalbäume
bäume
sequentielle
Listen
gekettete
Listen
Binäre
Suchbäume
Baumstrukturen
sequentielle
Speicherungsstrukturen
Zugriffsverfahren für Datenstrukturen
gestreute
Speicherungsstrukturen
Binäre Suchbäume
6-4
0
SOFIA
0
BONN
0
WIEN
Mehrwegbäume
• Bezugsgröße: Seite = Transporteinheit zum Externspeicher
B-Baum
• Def.: Ein B-Baum vom Typ (k, h) ist ein Baum mit folgenden Eigenschaften
im Gegensatz zu binären Suchbäumen
1. Jeder Weg von der Wurzel zum Blatt hat die Länge h
2. Jeder Zwischenknoten hat mindestens k+1 Söhne.
• Vorfahr: ISAM (statisch, periodische Reorganisation)
Die Wurzel ist ein Blatt oder hat mindestens 2 Söhne
3. Jeder Knoten hat höchstens 2k+1 Söhne
• Weiterentwicklung: B- und B*-Baum
- referenzierte und materialisierte Speicherung der Datensätze
• Seitenformat:
- dynamische Reorganisation durch Splitten und Mischen von Seiten
Z0 S1 D1 Z1 S2 D2 Z2 • • • Sm Zm Dm
• Funktion
frei
- direkter Schlüsselzugriff
- sortiert sequentieller Zugriff
• Balancierte Struktur
Zi =
Zeiger Sohnseite
Si =
Schlüssel
Di =
Daten des Satzes oder Verweis auf den Satz
(materialisiert oder referenziert)
- unabhängig von Schlüsselmenge
- unabhängig von Einfügereihenfolge
• Beispiel:
• Realisierung von Index-organisierten Tabellen
6
- oft nach Primärschlüssel geordnet
- Cluster-Bildung durch eingebettete Datensätze
3
8
• Verbesserung der Baumbreite (fan-out)
- Schlüsselkomprimierung
- Nutzung von „Wegweisern” in B*-Bäumen
- Präfix-B-Bäume
2
4
5
7
9
bei 4 KB Seiten:
• Verbesserung des Belegungsgrades
➥ verallgemeinertes Splittingverfahren
6-5
Z=4 B, S=4 B, D=92 B
⇒
100 B pro Eintrag
⇒
ca. 40 Söhne
Z=4 B, S=4 B, D=4 B
⇒
12 B pro Eintrag
⇒
ca. 330 Söhne
6-6
B*-Baum
Splitting bei B*-Bäumen
• Def.: Ein B*-Baum vom Typ (k, k*, h) ist ein Baum mit folg. Eigenschaften
• Split-Faktor m
P
i
1. Jeder Weg von der Wurzel zum Blatt hat die Länge h
2. Jeder Zwischenknoten hat mindestens k+1 Söhne.
P
i
P
k
m = 1
Die Wurzel ist ein Blatt oder hat mindestens 2 Söhne.
Jedes Blatt hat mindestens k* Einträge.
3. Jeder Zwischenknoten hat höchstens 2k+1 Söhne.
Jedes Blatt hat höchstens 2k* Einträge.
P
i
P
i+1
P
i
P
k
m = 2
• Zwischenknoten:
Z0 S1
Zi =
Z1 S2
Z2 • • • Sm Zm
Zeiger Sohnseite,
Si =
frei
Schlüssel
• Blattknoten:
V
P
i+1
Pi-1
S1 D1 S2 D2 • • • Sm Dm
frei
Di =
Verweis auf Satz (materialisiert oder referenziert)
N=
Nachfolger-Zeiger,
V=
2
N
6
Pi
1
Pi+1
m = 3
P
i-1
Vorgänger-Zeiger
4
2
P
i
P
k
P
i+1
8
• Belegung
3
2
Z=4 B, S=4 B
4
7
5
6
⇒ 8 B pro Eintrag
Belegung
8
9
⇒ ca. 500 Söhne bei 4 KB Seite
6-7
m=1
m=2
m
worst case:
1
_____
1+1
2
_____
2+1
m
_____
m+1
avg. case:
ln 2
(69 %)
➥ m ≤ 3: sonst zu aufwendig!
6-8
m+1
m ⋅ ln  --------------
 m 
Suche in der Seite
Digitalbäume
• Bisher: stets Vergleich des ganzen Schlüssels
• Interne Struktur sei eine Liste mit n Einträgen
- sequentielle Suche
• sortierte oder ungeordnete Schlüsselmenge
• Cavg (n) ≈ n/2
• nur geringe Verbesserungen auf sortierten Listen (bei erfolgloser Suche)
- Binärsuche wesentlich effizienter (Divide-and-Conquer-Strategie)
Bei den digitalen Suchbäumen oder kurz Digitalbäumen erfolgen die Vergleiche in den
Baumknoten zur Bestimmung des weiteren Suchweges nicht nach dem ganzen Schlüssel,
sondern jeweils nach aufeinanderfolgenden Teilen des Schlüssels. Jede unterschiedliche
Folge von Teilschlüsseln ergibt einen eigenen Suchweg im Baum; alle Schlüssel mit dem
gleichen Präfix haben in der Länge des Präfixes den gleichen Suchweg.
➥ Organisation des Digitalbaumes und Suche im Baum erfolgt
nach Schlüsselteilen
• Digitale Suchbäume - Prinzip
1
n
• m-ärer Trie
• Voraussetzung: Sortierung und Einträge fester Länge
allgemeines Alphabet
• Cavg (n) ≈ log2 (n+1) - 1 für große n
- Trie-Darstellung
- Grundoperationen
- Sprungsuche
• Voraussetzung: Sortierung und Einträge fester Länge
- Verbesserung der Platzausnutzung
• Prinzip
- Digitalbaum mit variablem Knotenformat
• Binärer Digitalbaum
1
n
• zunächst wird Liste in Sprüngen von m Einträgen überquert, um Abschnitt
zu lokalisieren, der ggf. den gesuchten Schlüssel enthält
• danach wird der Schlüssel im gefundenen Abschnitt nach irgendeinem
Verfahren gesucht
•
binäres Alphabet
- Binärer digitaler Suchbaum
- PATRICIA-Baum
Vermeidung von Einwegverzweigungen
- Binärer Radix-Baum
Verbesserung der Suchmöglichkeiten
1 n 1
C avg ( n ) = --- a ⋅ ---- + --- b ( m – 1 )
2 m 2
wenn ein Sprung a und ein sequentieller Vergleich b Einheiten kostet
• Was ist die optimale Sprungweite m?
6-9
6 - 10
Digitalbaum
m-ärer Trie
• Prinzip
• Spezielle Implementierung des Digitalbaumes: Trie
- Zerlegung des Schlüssels in Teile
Trie leitet sich von Information Retrieval ab (E.Fredkin, 1960)
- Aufbau des Baumes nach Schlüsselteilen
Verwendetes Alphabet der Schlüssel legt den Grad eines Trie fest:
- Suche im Baum durch Vergleich von Schlüsselteilen
- bei Ziffern: m = 10
- bei Alpha-Zeichen: m = 26
• Was sind Schlüsselteile ?
- bei alphanumerischen Zeichen: m = 36
- Schlüssel bestehe aus L Zeichen eines Alphabets
➥ bei Schlüsselteilen der Länge k potenziert sich der Grad entsprechend,
- Schlüsselteile können gebildet werden durch Bits, Ziffern, Zeichen als Elemente eines
Alphabets
- aber auch Zusammenfassungen dieser Grundelemente können herangezogen werden
(z. B. Silben der Länge k)
- längster Pfad im Baum + 1 = Höhe des Baumes = L/k + 1,
- wenn L die Schlüssellänge und k die Schlüsselteillänge ist.
d. h., als Grad ergibt sich mk
• Trie-Darstellung
- Der Grad m eines Trie wird durch Kardinalität des Alphabets und Länge k des Schlüsselteils festgelegt.
- Jeder Knoten eines Tries vom Grad m ist im Prinzip ein eindimensionaler Vektor mit
m Zeigern.
• Konzeptionelle Darstellung eines Digitalbaumes
- Jedes Element im Vektor ist einem Zeichen des verwendeten Alphabets zugeordnet.
Auf diese Weise wird ein Schlüsselteil (Kante) implizit durch die Vektorposition ausgedrückt.
Alphabet aus Ziffern
L = 6, k = 2
- Beispiel: Knoten eines 10-ären Trie mit Ziffern als Schlüsselteilen
17
02
17
21
99
47
39
15
17
m=10
k=1
P0 P1 P2 P3 P4 P5 P6 P7 P8 P9
11
49
- Es existiert eine implizite Zuordnung von Ziffer (oder Zeichen) zu Zeiger. Pi gehört
34
95
17
01
50
20
10
25
47
also zur Ziffer i. Tritt Ziffer i in der betreffenden Position auf (ist also Kante i in der
konzeptionellen Darstellung vorhanden), so verweist Pi auf den Nachfolgerknoten.
Kommt i in der betreffenden Position nicht vor, so ist Pi mit NIL belegt.
170234
170295
171717
219901
391550
391720
394910
394925
471147
- Wenn der Knoten auf der j-ten Stufe eines 10-ären Trie liegt, dann zeigt Pi auf einen
Unterbaum, der nur Schlüssel enthält, die in der j-ten Position die Ziffer i besitzen.
➥ max. Grad des Digitalbaumes m = 100
6 - 11
6 - 12
m-ärer Trie (2)
m-ärer Trie (3)
• Grundversion des Trie
• Verweis auf Datensätze:
- Alle Schlüssel besitzen gleiche Länge. Dann hat der Trie eine ähnliche Struktur wie der
B*-Baum: die inneren Knoten dienen als Index und von den Blattknoten aus wird auf
die Datensätze verwiesen.
• Flexiblere Struktur des Trie
- Die mit * gekennzeichneten Zeiger - jeweils am Ende eines Suchpfades - können entweder Zeiger auf den zugehörigen Datensatz sein oder Platzhalter, die anzeigen, daß
der zugehörige Schlüssel gültig ist und existiert.
• Beobachtungen:
- Spezielles Trennzeichen (Leerzeichen oder Punkt) im verwendeten Alphabet ermöglicht es, Schlüssel, die Präfix eines anderen Schlüssels sind, im Trie zu speichern. Beispielsweise wird der Schlüssel AB im Trie durch AB. dargestellt, um seinen Suchweg
- Die Höhe des Trie wird durch den längsten abgespeicherten Schlüssel
bestimmt.
von dem des Schlüssels ABBA zu unterscheiden.
- Die Gestalt des Baumes hängt von der Schlüsselmenge, also von der Verteilung der
Schlüssel, nicht aber von der Reihenfolge ihrer Abspeicherung ab.
➥ uneingeschränkte Speicherung von variabel langen Schlüsseln
- Knoten, die nur NIL-Zeiger besitzen, werden nicht angelegt.
- Wegen der impliziten Zeigerzuordnung muß für jedes Zeichen in jedem Knoten Platz
reserviert werden.
• Trie für Schlüssel aus einem auf A-E beschränkten Alphabet
- Zu den Blättern hin treten sehr viele Einweg-Verzweigungen auf.
• ABC DE
m=6
k=1
• Grundoperationen
(1) Direkte Suche:
In der Wurzel wird nach dem ersten Zeichen des Suchschlüssels verglichen.
Bei Gleichheit wird der zugehörige Zeiger verfolgt. Im gefundenen Knoten
wird nach dem zweiten Zeichen verglichen usw.
Aufwand bei erfolgreicher Suche:L i/k (+ 1 bei Präfix)
*
*
*
*
*
*
➥ effiziente Bestimmung der Abwesenheit eines Schlüssels (z. B. CAD)
(2) Einfügen:
*
*
*
*
*
*
Wenn Suchpfad schon vorhanden, wird ein NIL-Zeiger in einen *-Zeiger umgewandelt, sonst Einfügen von neuen Knoten (z. B. CAD)
(3) Löschen:
*
➥ Welche Schlüssel sind im Trie dargestellt ?
Nach Aufsuchen des richtigen Knotens wird ein *-Zeiger auf NIL gesetzt. Besitzt
daraufhin der Knoten nur NIL-Zeiger, wird er aus dem Baum entfernt (rekursive
Überprüfung der Vorgängerknoten).
(4) Sequentielle Suche ?
6 - 13
6 - 14
m-ärer Trie (4)
m-ärer Trie (5)
• Keine dynamische Reorganisation
• Digitalbaum mit variablem Knotenformat
- Es findet also weder ein Split- noch ein Mischvorgang statt.
- Die Zuordnung der Knoten ohne Ausgleichsvorgänge ist auch ein Grund für die
schlechte Platzausnutzung
• Verbesserung der Platzausnutzung
- Selbst wenn im Trie Einweg-Verzweigungen vermieden werden, sind viele Knoten nur
dünn besetzt.
- Deutliche Verbesserung der Speicherausnutzung, wenn durch Übergang auf eine variable Knotengröße nur noch die besetzten Zeiger gespeichert werden.
- Da implizite Zuordnung von Schlüsselzeichen zu Zeigerposition aufgegeben wird, ist
zu jedem Zeiger zugehöriges Schlüsselzeichen explizit zu speichern.
- Vermeidung von Einweg-Verzweigungen im Trie
- Variante: Sobald ein Zeiger auf einen Unterbaum mit nur einem Schlüssel verweist,
wird anstelle des Unterbaums der darin enthaltene Rest-Schlüssel (oder der gesamte
Schlüssel) in einem speziellen Knotenformat dargestellt.
➥ Die Trie-Charakteristik geht verloren!
A
B
A
E
D
E
- Modifizierte Trie-Darstellung
• ABCDE
B
m=6
k=1
• * A
A
D
A
*
*
A
B
A
D
E
*
B
E
A
*
*
*
*
*
*
*
*
B
A
B
A
D
E
A
D
A
*
A * E *
B
E
A
*
D
• * E *
*
D
A
D
A
E
D
D
A
*
*
➥ Für große n kann man nach Knuth mit einem durchschnittlichen Suchaufwand von
logmn Suchschritten rechnen, wenn die Schlüssel zufällig erzeugt sind.
A
D
• * D
A * D
E *
D
A
D
A
E
D
D
A
*
*
- Variables Knotenformat verursacht bei der Speicherverwaltung oft Probleme.
- Vorschlag: doppelte Verkettung
A
6 - 15
D
B
D
E
➥ Binärbaum-Darstellung
6 - 16
Binärer Digitalbaum
Binärer Digitalbaum (2)
• Spezialfall: binäres Alphabet
• 2. Variante: PATRICIA-Baum
(Practical Algorithm To Retrieve Information Coded In Alphanumeric)
• 1. Variante: binärer digitaler Suchbaum
- In jedem Knoten ist jeweils ein vollständiger Schlüssel - genauso wie im binären Suchbaum - gespeichert
- Beim Einfügen erhält der Schlüssel den ersten freien Blattknoten, der über seine Bitfolge gefunden wird
- Zur Entscheidung, ob in einem Knoten links oder rechts verzweigt werden soll, wenn
der gespeicherte Schlüssel nicht mit dem Suchschlüssel übereinstimmt, dienen der Reihe nach die einzelnen Bits des Suchschlüssels
HANS = 1001000...
HEINZ = 1001000...
HOLGER= 1001000...
BERT = 1000010...
...
OTTO = 1001111...
...
HANS
0
0
0
ABEL
BERT
HOLGER
1
1
UWE
1
HEINZ
- Grundidee: Vermeidung von Einwegverzweigungen
- Speicherung der Schlüssel in den Blättern
- innere Knoten: es wird gespeichert, wieviele Bits beim Test zur Wegeauswahl zu überspringen sind
- Konstruktionsprinzip
Schlüsselmenge
binärer Digitalbaum
mit Einwegverzweigungen
PATRICIA -Baum
K1 = 10000
K2 = 10001
K3 = 11100
K4 = 11110
K5 = 11111
1
2
10000
K1
HEIN
1
OTTO
10001
K2
11100
K3
0
11110
K4
1
OLAF
10000
K1
• Bewertung
1
10001
K2
11100
K3
11110
K4
11111
K5
- keine Darstellung einer geordneten Menge (LWR ?)
- abhängig von Schlüsselmenge und Einfügereihenfolge
- lange Einwegverzweigungen, keine dynamische Balancierung
➥ besser ausgewogene Bäume: anstelle der Bitfolge von Ki
Zufallszahl mit Ki als Saat
• Anwendung: statische Schlüsselmengen mit stark gewichteten
• Bewertung
- Es treten keine Einwegverzweigungen auf
- sonst jedoch ähnlich wie beim binären digitalen Suchbaum
- Baumstruktur läßt sich als Testanleitung für Suchschlüssel auffassen.
Bei jedem beliebigen Schlüssel muß die Testfolge ganz ausgeführt werden,
bevor über Erfolg oder Mißerfolg der Suche entschieden werden kann.
Zugriffshäufigkeiten
6 - 17
6 - 18
11111
K5
Binärer Digitalbaum (3)
Binärer Digitalbaum (4)
• PATRICIA-Baum für ein Anwendungsbeispiel
• 3. Variante: Binärer Radix-Baum
als Modifikation des PATRICIA-Baumes
- Speicherung der Testinformation
9
0
0
11
H
A
R
A
L
D
6
H
A
R
T
M
U
T
9
H
E
I
N
•
2
H
E
I
N
R
I
C
H
H
E
I
N
Z
- zusätzlich Speicherung variabel langer Schlüsselteile in den inneren
Knoten, sobald sie sich als Präfixe für die Schlüssel des zugehörigen
Unterbaums abspalten lassen
25
H
E
L
M
U
T
H
O
L
G
E
R
H
U
B
E
R
•
6
• Gewähltes Anwendungsbeispiel
H
U
B
E
R
T
•
H
U
B
E
R
T
U
S
H
3
4
U
B
E
R
1
5
n Anzahl der zu überspringenden Bits
A
R
Schlüssel
O
L
G
E
R
E
5
3
•
T
1
A
L
D
- einfache Struktur der inneren Knoten
I
N
T
M
U
T
L
M
U
T
1
- Wie wird getestet, wenn
ABEL = X’1000001100001010001011001100’
gesucht wird ?
➥ erfolgreiche und erfolglose Suche endet in einem Blattknoten
U
S
4
•
- Wie verläuft die Suche nach dem Schlüssel
HEINZ = X’10010001000101100100110011101011010’ ?
•
1-7 Anzeige, welches Bit zu testen ist
R
I
C
H
gemeinsames Schlüsselelement
Z
Restschlüssel
- komplexere Knotenformate und aufwendigere Such- und Aktualisierungsoperationen
- erfolglose Suche läßt sich oft schon in einem inneren Knoten abbrechen
6 - 19
6 - 20
*
Addressing in Trees
*
*
- conceptual representation: trees with nodes and edges
- document order must be preserved / recoverable:
node order matters!
- LOBs don’t enable fine-granular management,
no content-based search and no multi-user operation
*
*
*
Welche Schlüssel sind im Trie dargestellt ?
*
- mapping onto relational tables?
*
m=6
k=1
*
• A B C D E
• many solutions: „shredding“
• XML query language (e.g., XQuery, XPath, DOM, SAX)
must be mapped to SQL
• use of the SQL optimizer!
• but: concurrency control (locking) very cumbersome,
because a document is distributed over n tables
- improved solution needed: native XML DBMS!
• fine-granular management and storage of the XML documents
as native tree-like storage structures
• navigating and direct access to all document nodes
• indexing of all nodes should accelerate declarative queries
• modification of documents also required under multi-user operations
(cooperative processing)
• fine-granular locking: nodes, edges and subtrees
*
• How to address tree nodes,
*
*
which can be arbitrarily displaced by later insertions?
- how do XML documents appear at the user level?
- which storage structures are adequate?
- which labeling scheme
should be used for the nodes?
*
Trie-Darstellung für Schlüssel aus einem auf A-E beschränkten Alphabet
• XML documents are to be stored in databases
6 - 21
6 - 22
6 - 23
element
attribute root
attribute
text node
string node
T
CITI
39,95
Peter
Sucio
T
Bunem...
Serge
T
T
first
T
Data...
last
author
title
W.
2
2000
id
year
Stevens
T
TCP/IP...
1
1994
6 - 24
Abiteb...
T
last
book
author
first
T
last
author
first
T
Dan
price
T
Gerbarg
T
Ehe E...
3
65,95
T
first
last
T
id
year
- these nodes are not visible at the XML-DBMS interface
1999
id
year
T
price
author
book
- DOM structure was extended to optimize lock protocols
- taDOM storage structure has additional nodes:
attribute root and string node
Darcy
T
T
affiliation
last
title
T
book
bib
title
• Modified storage structure called taDOM tree
Example of a taDOM Tree
<bib>
<book year=“1994“ id=“1“>
<title>TCP/IP Illustrated</title>
<author>
<last>Stevens</last>
<first>W.</first>
</author>
<price>65.95</price>
</book>
<book year=“2000“ id=“2“>
<title>Data on the Web</title>
<author>
<last>Abiteboul</last>
<first>Serge</first>
</author>
<author>
<last>Buneman</last>
<first>Peter</first>
</author>
<author>
<last>Suciu</last>
<first>Dan</first>
</author>
<price>39.95</price>
</book>
<book year=“1999“ id=“3“>
<title>The Economics of . . . </title>
<editor>
<last>Gerbarg</last>
<first>Darcy</first>
<affiliation>CITI</affiliation>
</editor>
<price>129.95</price>
</book>
</bib>
author
• Example of an XML document
first
price
T
129,95
Addressing in Trees (2)
Addressing in Trees (3)
Addressing in Trees (4)
• Principal approaches to a solution
• Prefix-based solutions
- representation of an XML document: ordered, labeled tree with nodes of type element,
attribute, text (and attribute root, string)
- labeling scheme should be insensitive to insertions
- 13 different axes defined in XPath (sequence semantics):
child, parent, descendant, ancestor, following-sibling, preceding-sibling, following,
preceding, descendant-or-self, ancestor-or-self, self, attribute, namespace
- in a prefix-based labeling scheme, each node is encoded with a unique string S such that
1.S(v) is before S(u) in lexicographic order iff node v is before node u in the document
order
2.S(v) is a prefix of S(u) iff node v is the ancestor of node u
- simple example prefix scheme:
- support of the most important axes required:
parent/child, ancestor/descendant, preceding-sibling/following-sibling
• assign to the outgoing edges of each node a set of prefix-free binary strings in lexicographical order from left to right
- two classes: range-based and prefix-based schemes
• starting from the root and going down, the label of each node is the concatenation of
the parent’s label and the string assigned to its incoming edge
• Range-based solutions
- positions of nodes in trees are marked by (DocNo, LeftPos:RightPos, LevelNo)
- LeftPos (LP) and RightPos (RP) describe the labeling range in each node with its subtree and can be generated by a depth-first traversal of the tree
- ancestor-descendant containment (DocNo is omitted): a node n1 (LP1:RP1, lv1) contains a node n2 (LP2:RP2, lv2), iff LP1 < LP2 and RP1 > RP2.
• the level of a node is recorded to distinguish the parent-child and the ancestor-descendant relationship
• add the edge string length esl to each node descriptor to derive the parent (ancestor)
label
- support of preceding-sibling/following-sibling relationship needs indexes
• Example
- additional condition for parent-child containment: lv1 = lv2 - 1
1
- supporting preceding-sibling/following-sibling relationship?
“0“
• Example of a simple range scheme
“0“
1
2
“1“
3
4
“00“
2
3
5
4
label template (S, lv, esl)
label template (LP:RP, lv)
5
6 - 25
6
7
6 - 26
“01“
6
“10“
7
Addressing in Trees (5)
Addressing in Trees (6)
• Concept of DeweyIDs1
• Initial document loading2
- Dewey order was introduced in libraries to enable the insertion of
new books at arbitrary places thereby preserving the given order
While a new document is loaded—typically bulk-loaded in left-most depth-first order—, the
DeweyIDs for its nodes are dynamically assigned which is guided by the following rules:
- suitable adaptation to XML trees; satisfies both conditions for prefix schemes
1. Element root node: It always obtains DeweyID 1.
2. Element nodes: The first node at a level receives the DeweyID of its parent node extended by a division of distance + 1. If a node N is inserted after the last node L at a level,
DeweyID of L is assigned to N where the value of the last division is increased by distance.
• Assignment of DeweyIDs
- distinction: initial loading of the document (bulk-loading)
and later insertion of nodes
- DeweyID consists of several divisions separated by dots
3. Attribute nodes: A node N having at least one attribute, obtains (in taDOM) an attribute
root R for which the DeweyID of N extended by a division with value 1 is assigned. The
attribute node yields the DeweyID of R extended by a division. If it is the first attribute
node of R, this division has the value 3. Otherwise, the division receives the value of the
last division of the last attribute node increased by 2. In this case, the distance value does
not matter, because the attribute sequence does not affect the semantics of the document.
Therefore, new attributes can always be inserted at the end of the attribute list.
- assignment of division values is affected by parameter distance
- on initial loading, only odd division values are assigned
- distance (in the example distance=2) enables later insertions;
even division values are used for a kind of overflow mechanism
bib 1
1.3
book
1.3.1
1.3.1.3
year
1.3.1.3.1
1994
1.3.1.5
id
1.3.1.5.1
1
1.3.3
title
author
1.3.3.3 1.3.5.3
last
T
1.3.5
1.3.5.5
...
book
1.7.3.3
last
1.3.5.3
1.3.5.5.3
T
1.3.5.3.1
element
65,95
1.3.5.5.3.1
W.
1.7
1.7.3
publisher
T
1.3.3.3.1
TCP/IP...
1.3.5.3.3
1.3.5.3.3.1
Stevens
1.3.7
price
first
T
1.5
book
4. Text nodes: A node containing text is represented in taDOM by a text node and a string
node. For text nodes, the same rules apply as for element nodes. The value of an attribute
or a text node is stored in a string node. This string node obtains the DeweyID of the text
node resp. attribute node, extended by a division with value 1.
attribute root
attribute
T
text node
string node
2.
1.
Decimal classification system of Dewey: http://www.mtsu.edu/~vvesper/dewey.html
6 - 27
M. Haustein, T. Härder, C. Mathis, M. Wagner: DeweyIDs – The Key to Fine-Grained Management of XML Documents, submitted (2005), http://wwwdvs.informatik.uni-kl.de/pubs/p2005.html
6 - 28
Addressing in Trees (7)
Addressing in Trees (8)
• Initial assignment of DeweyIDs
• DeweyID assignment when new nodes are Inserted
string node
text node
attribute
T
attribute root
element
last
65,95
TCP/IP...
author
last
W.
T
price
T
book
Stevens
T
TCP/IP...
last
65.95
book
book
publisher
last
1994
id
year
Stevens
first
W.
price
1
title
T
book
author
first
bib
bib
book
year
1994
id
1
title
...
publisher
book
- Example using distance = 8
node type
element
element
attr. root
attribute
string
attribute
string
element
text
string
element
element
text
string
element
text
string
element
text
string
element
element
element
last
rule
DeweyID
1
1
2
1.9
3
1.9.1
3
1.9.1.3
4
1.9.1.3.1
3
1.9.1.5
4
1.9.1.5.1
2
1.9.9
4
1.9.9.9
4
1.9.9.9.1
2
1.9.17
2
1.9.17.9
4
1.9.17.9.9
4
1.9.17.9.9.1
2
1.9.17.17
4
1.9.17.17.9
4
1.9.17.17.9.1
2
1.9.25
4
1.9.25.9
4
1.9.25.9.1
2
1.17
2
1.25
2
1.25.9
2
1.25.9.9
When new nodes are inserted at arbitrary logical positions, their DeweyIDs must reflect the
intended Document order as well as position, level, and type of node without enforcing modifications of DeweyIDs already present. For element nodes and text nodes, the same rules
apply. In contrast to them, attribute roots, attribute nodes, and string nodes do not need special consideration by applying rule 3, because order and level properties do not matter.
Assignment of a DeweyID for a new last sibling is similar to the initial loading. Here, the
last level only consists of one division. Hence, when inserting element node year after price,
addition of the distance value yields 1.9.33. In case, the last level consists of more than one
division (indicated by even values), the first division of this level is increased by distance 1. For example, the successor of 1.3.14.6.5 is 1.3.21.
If a sibling is inserted before the first existing sibling, the first division of the last level is
halved and, if necessary, ceiled to the next integer or increased by 1 to get an odd division.
This measure secures that the “before-and-after gaps” for new nodes remain equal. Hence,
inserting a type node before title would result in DeweyID 1.9.5. If the first divisions of the
last level are already 2, they have to be adopted unchanged, because smaller division values
than 2 are not possible, e.g., the predecessor of 1.9.2.2.8.9 is 1.9.2.2.5. In case the first division of the last level is 3, it will be replaced by 2.distance+1. For example, the predecessor
of 1.9.3 receives 1.9.2.9.
The remaining case is the insertion of node d2 between two existing nodes d1 and d3. Hence,
for d2 we must find a new DeweyID which is between the DeweyIDs of d1 and d3. Because
they are allocated at the same level and have the same parent node, they only differ at the
last level (which may consist of arbitrary many even divisions and one odd division, in case
a weird insertion history took place at that position in the tree). All common divisions before
the first differing division are also equal for the new DeweyID. The first differing division
determines the division becoming part of DeweyID for d2. If possible, we prefer a median
division to keep the before-and-after gaps equal. Assume for example, d1 = 1.9.5.7.5 and d3
= 1.9.5.7.16.5, for which the first differing divisions are 5 and 16. Hence, choosing the median odd division result in d2 = 1.9.5.7.11.
If d4 = 1.5.6.7.5 and d6 = 1.5.6.7.7, only even division 6 would fit. Remember, we have to
recognize the correct level. Hence, having distance value 8, d5 = 1.5.6.7.6.9.
6 - 29
6 - 30
Addressing in Trees (9)
Addressing in Trees (10)
• Initial assignment of DeweyIDs (distance=2)
• Worst-case Considerations
bib 1
1.3
book
1.3.1
1.3.1.3
year
1.3.1.3.1
1994
1.3.1.5
id
Assume a test case with root 1 and a child with DeweyID 1.distance+1. The insertion of the
sibling always takes place before the last inserted one. Hence, using distance value 16 and
“halving the gap” as an example, the sequence of assigned DeweyIDs is
1.3.3
title
price
1.3.3.3
1.3.5
...
book
1.7
1.7.3
publisher
1.7.3.3
last
1.3.5.3
T
1.3.1.5.1
1
1.5
book
T
• Benefits of DeweyID Use
1.3.5.3.1
1.3.3.3.1
TCP/IP...
65,95
• Existing DeweyIDs allow the assignment of new IDs without the need to reorganize the
IDs of nodes present. A relabeling after weird insertion histories (think of point insertions3 of thousands of nodes between two existing nodes) is only required, if the length
• Insertion of a subtree
of a DeweyID exceeds a given limit and violates existing implementation restrictions,
bib 1
book
1.3.1
1.3.1.3
year
1.3.1.3.1
1994
1.3.1.5
id
1.3.1.5.1
1
1.3.3
title
1.3
author
1.3.3.3 1.3.4.3.3
last
T
e.g., the maximum lengths of keys in B*-trees.
1.5
book
1.3.4.3
price
1.3.4.3.5
first
1.3.5
...
1.3.5.3
T
1.3.4.3.5.3 1.3.5.3.1
1.3.3.3.1
65,95
TCP/IP...
1.3.4.3.3.3 T
T
1.3.4.3.3.3.1
Stevens
book
1.7
• The DeweyID of the parent node can be determined in a very simple way, e.g., frequently
needed for locking the ancestor path.
1.7.3
publisher
• Comparison of two DeweyIDs delivers the order of the respective nodes in the left-most
1.7.3.3
last
• Checking whether node d1 is an ancestor of d2 only requires to check whether DeweyID
depth-first stored document.
of d1 is a prefix of DeweyID of d2.
• High distance values reduce the probability of reorganization. They have to be balanced
against increased storage space for the representation of DeweyIDs.
1.3.4.3.5.3.1
W.
3. New insertions before the currently inserted node may enforce increased use of even division values thereby extending the total length of
a DeweyID)
6 - 31
6 - 32
B*-Baum (clustered, non-clustered) mit Präfix-Komprimierung, ...
B*-Baum, statisches Hashing, Cluster-Bildung (LIST), Invertierung (Pointer-Array), Ket-
NonStop SQL (Tandem)
UDS (Siemens)
• Cluster-Bildung optimiert (sortiert) sequentielle Zugriffe
B*-Baum (clustered, non-clustered), partitionierte Tabellen, ...
B-Baum, statisches Hashing, ISAM, HEAP, ...
B*-Baum (mit Präfix-/Suffix-Komprimierung), (Join-) Cluster-Bildung, ...
B*-Baum (clustered, non-clustered), ...
DB2 (IBM)
Informix
Oracle
Sybase
• Zugriffsverhalten des AVL-Baumes mit O(log2n) ist nicht gut genug
- fehlt in keinem DBMS
- materialisierte und referenzierte Speicherung der Datensätze
- Index-organisierte Tabelle mit Cluster-Bildung
• Indexstrukturen als B*-Bäume
- mit und ohne Clusterbildung spezifizierbar
- Balancierte Struktur unabhängig von Schlüsselmenge und
Einfügereihenfolge
➥ dynamische Reorganisation durch Aufteilen (Split) und Mischen
von Seiten
- direkter Schlüsselzugriff auf einen indexierten Satz
- sortiert sequentieller Zugriff auf alle Sätze
(unterstützt Bereichsanfragen, Verbundoperation usw.)
➥ Wie viele Indexstrukturen/Tabellen?
• Digitalbäume
- Kein „eingebautes“ Balancierungskriterium
- als Pfadindexe für XML-Dokumente vorgeschlagen
Zugriffspfade in kommerziellen Datenbanksystemen
• Standard-Zugriffspfadstruktur: B*-Baum (the ubiquitous B*-tree)
- Abbildung auf Externspeicher ist schwierig bei dynamischen Dokumenten
• DeweyIDs als bevorzugtes Nummerierungsschema für Bäume
- ordnungserhaltend und stabil bei Einfügungen, aber variabel lange Einträge
- ausdrucksstark mit effektiver Unterstützung für DB-Operationen
6 - 33
6 - 34
tung (CHAIN)
B*-Baum (clustered, non-clustered), Hashing, Join-Cluster-Bildung, ...
RDB (DEC)
Zusammenfassung
Herunterladen