Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972....
Transcript of Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972....
![Page 1: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/1.jpg)
Datenbanksysteme IIArchitektur und Implementierung von Datenbanksystemen
Winter 2009/10
Melanie HerschelWillhelm-Schickard-Institut für Informatik
![Page 2: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/2.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10Melanie Herschel | Universität Tübingen
Kapitel 4Baum-basierte Indizes
•Einführung
• ISAM
• B+ Bäume
2
![Page 3: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/3.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Effizientes Bearbeiten von Bereichsanfragen
3
SELECT *
FROM Kunden
WHERE PLZ >= 30650
AND PLZ < 31000
Ansatz 1
• Sortieren der Tabelle auf der Festplatte (Sortierte Datei, siehe Kapitel 3)
• Beantworten der Anfrage:
• Binäre Suche, um erstes Antwort-Record zu finden.
• Datei scannen, so lange die PLZ < 30100 ist.
30
10
4*
30
12
3*
30
22
2*
30
45
0*
30
52
8*
30
01
2*
30
33
0*
30
42
3*
30
05
0*
30
10
5*
30
18
0*
30
24
5*
30
28
0*
30
40
6*
30
57
0*
30
60
0*
30
60
4*
30
70
0*
30
80
8*
30
88
7*
30
91
0*
30
95
3*
31
01
6*
31
20
0*
31
53
2*
scank* = Record mit Schlüsselwert k
Seiten mitDaten-
Records
![Page 4: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/4.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Effizientes Bearbeiten von Bereichsanfragen
4
Diskussion Ansatz 1
+ Sequentieller Seitenzugriff beim Scannen.
- Wir müssen log2(#Records) Records während der Binärsuche lesen. Da die Binärsuche darauf basiert, Große Sprünge in der Datei zu machen, müssen wir i.A. genauso viele direkte Seitenzugriffe machen.
- Einfüge- und Löschoperationen teuer.
30
10
4*
30
12
3*
30
22
2*
30
45
0*
30
52
8*
30
01
2*
30
33
0*
30
42
3*
30
05
0*
30
10
5*
30
18
0*
30
24
5*
30
28
0*
30
40
6*
30
57
0*
30
60
0*
30
60
4*
30
70
0*
30
80
8*
30
88
7*
30
91
0*
30
95
3*
31
01
6*
31
20
0*
31
53
2*
scank* = Record mit Schlüsselwert k
Seiten mitDaten-
Records
![Page 5: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/5.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Effizientes Bearbeiten von Bereichsanfragen
5
30
10
4*
30
12
3*
30
22
2*
30
45
0*
30
52
8*
30
01
2*
30
33
0*
30
42
3*
30
05
0*
30
10
5*
30
18
0*
30
24
5*
30
28
0*
30
40
6*
30
57
0*
30
60
0*
30
60
4*
30
70
0*
30
80
8*
30
88
7*
30
91
0*
30
95
3*
31
01
6*
31
20
0*
31
53
2*
Seiten mit Daten-
Records
Seiten im Index
30
10
4
30
52
8
30
05
0
30
28
0
30
60
4
30
91
0
31
53
2
scan
Ansatz 2
• Wir erstellen einen Index über die Daten Records.
• In diesem Index speichern wir den Schlüsselwert des ersten Records einer Seite und ein Pointer auf den Beginn der Seite.
• Binärsuche über den Index, um die erste Seite, die der Suchanfrage entspricht, zu finden.
• Laden der entsprechenden Seite der Daten Datei und von da an sequentielles Lesen, bis PLZ >= 31000.
![Page 6: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/6.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Effizientes Bearbeiten von Bereichsanfragen
6
Diskussion Ansatz 2
+ Sequentieller Seitenzugriff beim Scannen.
+ Daten der Indexseiten entsprechen einem Bruchteil der Daten in der Daten Datei.
! Indexdatei benötigt weniger Seiten.
!Binärsuche auf Indexdatei weniger I/O Operationen.
- Bei großen Daten-Dateien kann Indexdatei immer noch zu groß!für effiziente Bearbeitung sein.
30
10
4*
30
12
3*
30
22
2*
30
45
0*
30
52
8*
30
01
2*
30
33
0*
30
42
3*
30
05
0*
30
10
5*
30
18
0*
30
24
5*
30
28
0*
30
40
6*
30
57
0*
30
60
0*
30
60
4*
30
70
0*
30
80
8*
30
88
7*
30
91
0*
30
95
3*
31
01
6*
31
20
0*
31
53
2*
Seiten mit Daten-
Records
Seiten im Index
30
10
4
30
52
8
30
05
0
30
28
0
30
60
4
30
91
0
31
53
2
scan
![Page 7: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/7.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Effizientes Bearbeiten von Bereichsanfragen
7
30
10
4*
30
12
3*
30
22
2*
30
45
0*
30
52
8*
30
01
2*
30
33
0*
30
42
3*
30
05
0*
30
10
5*
30
18
0*
30
24
5*
30
28
0*
30
40
6*
30
57
0*
30
60
0*
30
60
4*
30
70
0*
30
80
8*
30
88
7*
30
91
0*
30
95
3*
31
01
6*
31
20
0*
31
53
2*
Seiten mit Daten-
Records
30
10
4
30
52
8
30
05
0
30
28
0
30
60
4
30
91
0
31
53
2
Ansatz 3: Hierarchische Indexstrukturen
• Wir wiederholen rekursiv Ansatz 2 (Index über Index usw.) bis alle Index Einträge auf eine Seite passen.
!Hierarchischer Index
30
10
4
30
60
4
Seiten im Index über mehrere Ebenen
scan
![Page 8: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/8.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Effizientes Bearbeiten von Bereichsanfragen
8
Diskussion Ansatz 3: Hierarchische Indexstrukturen
• Um ein Daten-Record zu finden, muss stets ein Knoten pro Ebene der Indexhierarchie betrachtet werden.
• Ein Knoten entspricht einer Seite.
• Daher ist maximale Anzahl Seiten I/Os = maximale Tiefe der Indexstruktur.
• Tiefe im Allgemeinen deutlich geringer als log2(#Records) (I/O Kosten für Suche von Ansatz 1).
!Hierarchische Indexstrukturen erlauben effizientes Bearbeiten von Suchanfragen.
!Sequentieller Scan durch Prefetching effizient bei Bereichsanfragen.
![Page 9: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/9.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Baum-Basierte Indizes
9
Zwei hierarchische Indizes im Fokus
• ISAM
• Basiert direkt auf dem gerade vorgestellten Verfahren zum Erstellen einer hierarchischen Datenstruktur.
• Statische Index Datei, daher problematisch bei Einfüge- und Löschoperationen.
• B+-Baum
• Dynamische Indexdatei, somit effizientes Einfügen und Löschen möglich.
![Page 10: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/10.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10Melanie Herschel | Universität Tübingen
Kapitel 4Baum-basierte Indizes
• Einführung
•ISAM
• B+-Bäume
10
![Page 11: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/11.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
• Gegeben eine Anfrage mit einer Selektion auf Feld k.
• Records der Daten-Datei sind auf Festplatte nach k sortiert.
• Dateneinträge in Blattknoten des Index (eine der 3 Varianten, siehe Kapitel 3)
• Dateneinträge und Daten-Records nach Schlüsselwert k sortiert (clustered Index).
• Indexeinträge sind <k,p> Paare (k: Schlüsselwert, p: Pointer auf eine Seite) in inneren Knoten des Baumes.
• Eine Indexseite enthält i Schlüsselwerte und i+1 Pointer, denn Schlüsselwerte dienen als Separatoren zwischen Pointern.
• Es gilt ki-1 < ki für i = 2, ..., n.
• Ist keys(pi) die Menge aller Schlüsselwerte, die man über pi erreicht, so gilt für jeden Schlüssel kl in keys(pi) und ku in keys(pi+1), kl < ki+1 < ku.
Index Sequential Access Method (ISAM)
11
p0 k1 p1 k2 p2 ... kn pn
IndexeintragSeparator Pointer
![Page 12: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/12.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
90* 91* 92* 93* 94* 95* 96* 97*
Index Sequential Access Method (ISAM)
12
p0 106 p1 k2 p2 ... kn pn
9* 10* 11* 12* 13* 14* 15* 16*
1* 2* 3* 4* 5* 6* 7* 8*
p0 9 p1 17 p2 ... kn pn
k < 9 9 <= k < 17
p0 k1 p1 k2 p2 ... 90 pn
90 <= k < 98
p0 k1 p1 k2 p2 ... 98 pn
k >= 98
![Page 13: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/13.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Initialisierung eines ISAM
13
init(file F, Searchkey k)
begin
1. Sortiere Records in F nach k auf Platte;
2. Erstelle Blattknoten der Indexstruktur;
3. p := Anzahl Seiten auf aktueller Indexebene;
4.while p > 1 do
Erstelle neue Indexebene;
end
Anzahl Knoten pro Ebene? Im Baum?
![Page 14: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/14.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Überlaufseiten für inserts, die nicht auf primäre Seiten passen.
Blattknoten bzw. Primärseiten(statisch nach init)
Innere Knoten(statisch nach init)
Überlaufseiten
14
...
... ...
... ... ... ...
![Page 15: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/15.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Einfügen von Records
15
insert(Searchkey k)
Finde Blattknoten L, der Wert von k
entspricht.
L hat freie Record Slots?
Füge Dateneintrag k* in L ein.
Hat L Überlaufknoten mit freien Slots?
Füge Dateneintrag k* in Überlaufknoten
ein.
Erstelle einen Überlaufknoten und
verlinke ihn mit vorangehendem Knoten.
Ja
Ja
Nein
Nein
![Page 16: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/16.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Einfügen von Records
16
delete(Searchkey k)
Finde Blattknoten L, der Wert von k
entspricht.
L ist Überlaufknoten?Lösche k* aus L.
Ist L nach Löschen von L
leer?
Lösche L.
Nein
Nein
Ja
Ja
k*
![Page 17: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/17.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Nachteil• Die inneren Knoten der ISAM Struktur bleiben bei Lösch- und Einfügeoperationen
unverändert.
• Kann zu Indexeinträgen führen, die keinem Dateneintrag mehr entsprechen.
• Um Separatoreigenschaft von Schlüsselwerten in Indexeinträgen beizubehalten, müssen Ketten von Überlaufseiten verwaltet werden.
! ISAM kann bei vielen Updateoperationen seine Ausgeglichenheit verlieren, da einige Pfade von der Wurzel bis zu einem Dateneintrag deutlich länger sind als andere.
! Ineffizientere Suche.
!Um Überlaufseiten zu vermeiden, werden typischerweise 20% einer Blattseite bei der Initialisierung frei gelassen.
Vor- und Nachteile einer statischen Indexdatei
17
![Page 18: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/18.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Vorteil• Die inneren Knoten der ISAM Struktur bleiben bei Lösch- und Einfügeoperationen
unverändert.
• Bei gleichzeitigem Zugriff auf den Index durch mehrere Anwendungen sind keine Locks auf den Indexseiten nötig.
• Locking ist problematisch bei dynamischen Indizes, insb. wenn Zugriff zu Knoten nahe der Wurzel durch eine Anwendung gesperrt sind.
! ISAM kann die beste Indexstruktur sein, wenn Daten sich nur gering verändern.
Vor- und Nachteile einer statischen Indexdatei
18
![Page 19: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/19.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10Melanie Herschel | Universität Tübingen
Kapitel 4Baum-basierte Indizes
• Einführung
• ISAM
•B+Bäume
19
![Page 20: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/20.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
• Die Struktur eines B+-Baumindex ist von ISAM abgeleitet.
• Großer Vorteil: dymanisch bezüglich updates.
• Lösch- und Einfügeoperationen auf dem Baum selbst halten diesen ausgeglichen/ausbalanciert.
• Keine Überlaufketten, da ein B+-Baum immer balanciert bleibt.
• Suchperformance hängt ausschließlich von der Höhe des B+-Baums ab (aufgrund hoher Fan-Outs ist die Höhe selten größer als 3).
• Einfügen / Löschen von Daten in der Daten Datei führt nicht mehr zu steigender Ineffizienz der Anfragebearbeitung.
• Der Speicherplatz eines Knotens in einem B+-Baum (ausgenommen der Wurzel) wird garantiert zu mindestens 50% genutzt (typischerweise 2/3).
B+-BäumeDynamische Indexstruktur
20
Weitherführende Literatur
R. Bayer and E.M. McCreight.Organization and Maintenance of Large Ordered Indexes. Acta Informatica, vol. 1, no. 3, September 1972.
![Page 21: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/21.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Blattknoten• Blattknoten bilden in der Praxis eine doppelt verlinkte Liste (sequence set).
• Nur Blattknoten enthalten Dateneinträge, entweder in Form der Daten Records selbst (Dateneintrag-Variante (1)) oder Referenzen zu Daten Records (Dateneintrag-Varianten (2) und (3)).
Aufbau eines inneren Knotens• Die Anzahl Indexeinträge n wird durch
den Grad d eines B+-Baums beschränkt:
• Innere Knoten: d <= n <= 2d
• Wurzel: 1 <= n <= 2d
• Gleicher interner Aufbau wie innere Knoten eines ISAM-Index.
• Knoten enthält n + 1 Pointer, wobei Pointer pi auf einen Sub-Baum zeigt, bei dem für alle Schlüsselwerte k gilt: ki <= k < ki+1.
• p0 zeigt zu einem Sub-Baum mit Schlüsselwerten < k1, p2d zeigt aug einen Sub-Baum mit Schlüsselwerten >= k2d.
B+-BäumeAufbau
21
p0 k1 p1 k2 p2 ... k2 p2d
IndexeintragSeparator Pointer
![Page 22: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/22.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Suche in B+-Bäumen
22
search(Searchkey k)
function search(Searchkey k) returns nodepointer
root := Wurzel des B+Baums;
return tree_search(root, k);
end function
function tree_search(Nodepointer p, Searchkey k) returns nodepointer
if p zeigt auf einen Blattknoten then return p;
else if k < k1 then return tree_search(p0, k);
else if k >= kn then return tree_search(pn, k);
else
begin
Finde i so dass ki <= k < k+1 gilt;
return tree_search(pi, k)
end
end function
p0 k1 p1 k2 p2 ... k2 pn
IndexeintragSeparator Pointer
![Page 23: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/23.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Beispiel: Suche von 5* in einem B+-Baum mit Grad d = 2 (Anzahl Einträge Pro Knoten zwischen 2 und 4)
Suche in B+-BäumenBeispiel
23
2* 3* 5* 7* 14* 16*
13 17 24 30
19* 20* 22* 24* 27* 29* 33* 34* 38* 39*
5*
5 < 13
![Page 24: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/24.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Beispiel: Suche von 14* und 15* in einem B+-Baum mit Grad d = 2 (Anzahl Einträge Pro Knoten zwischen 2 und 4)
Suche in B+-BäumenBeispiel
24
2* 3* 5* 7* 14* 16*
13 17 24 30
19* 20* 22* 24* 27* 29* 33* 34* 38* 39*
14*
keine 15*
15*
13 <= 15 < 1713 <= 14 < 17
![Page 25: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/25.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Beispiel: Suche von 24* in einem B+-Baum mit Grad d = 2 (Anzahl Einträge Pro Knoten zwischen 2 und 4)
Suche in B+-BäumenBeispiel: Suche von 24*
25
2* 3* 5* 7* 14* 16*
13 17 24 30
19* 20* 22* 24* 27* 29* 33* 34* 38* 39*
24*
24 <= 15 < 30
![Page 26: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/26.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Einfügen in B+-Bäumen
26
Grundidee bei Einfügeoperationen1.Gegeben ein Record mit Schlüsselwert k.
2.Rufe search(k) auf, um die Seite P zu finden, die neues Record enthalten soll.
3.Sei n die Anzahl Einträge in P.
a. Ist n < 2d, so ist noch genügend Platz auf P frei, und Record wird dort gespeichert.
b.Sonst...?
Annahmen• B+-Bäume bleiben bei Updates ausgeglichen.
• Einfüge- und Löschoperationen müssen diese Invariante beibehalten.
• Keine Überlaufketten (wegen Invariante Ausgeglichenheit)
• Kosten für search(k) sollen nur von der Höhe des Baumes abhängen, daher können wir k* auch nicht einfach irgendwo (selbst nahe P) speichern.
![Page 27: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/27.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Einfügen in B+-BäumenSplitting
27
• Splitting: Lösung, wenn die Seite p, in die k* eingefügt werden müsste voll ist.
• Dabei wird p in zwei Seiten p und p’ aufgeteilt und ein neuer Separator muss in den Elternknoten von p eingefügt werden.
• Splitting kann sich rekursiv fortsetzen und kann letztendlich zu einem Split des Wurzelknotens führen.
• Bei einem Split des Wurzelknotens wird ein neuer Wurzelknoten generiert und die Höhe des Baums erhöht sich um 1.
• Die Einträge von p und der neue Eintrag mit Schlüsselwert k werden auf den Seiten p und p’ gleichmäßig verteilt.
![Page 28: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/28.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Beispiel: Einfügen von 8*
2* 3*5* 7* 8*
Einfügen in B+-BäumenBeispiel Splitting
28
2* 3* 5* 7* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39*
5 1324 30
14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39*
13 17 24 30
8*
8 < 13
Seite für 8* voll
![Page 29: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/29.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Beispiel: Einfügen von 8*
2* 3* 5* 7* 8*
Einfügen in B+-BäumenBeispiel Splitting
28
14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39*
5 13 24 30
14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39*
17
![Page 30: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/30.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Einfügen in B+-BäumenSplitting
29
Split einer Seite auf Blattebene P in 2 Seiten P und P’
•Die Hälfte der Dateneinträge auf P bleibt auf P (2* und 3* im Beispiel)
•Die andere Hälfte wird von P auf P’ kopiert und der neue Wert wird hinzugefügt (5*, 7*und 8* im Beispiel).
•Neue Seite auf Blattebene muss in Indexeinträgen reflektiert werden (z.B., <5,p>)
• Copy up: wir kopieren den ersten Schlüsselwert von P’ und fügen diesen zu entsprechendem Indexknoten als neuen Separator hinzu.
• Redundanz der Schlüsselwerte.
• Durch Redundanz können Bereichsanfragen nur mittels Blattknoten beantwortet werden --> Effizienzsteigerung
![Page 31: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/31.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Einfügen in B+-BäumenSplitting
30
Split einer inneren Seite P in 2 Seiten P und P’
• Sei N die Anzahl Indexeinträge vor Einfügeoperation, die zu Split führt.
• In diesem Fall müssen beim Einfügen N+1 Einträge verteilt werden.
• Indexeintrag i, 1 <= i < (N+1)/2 auf P (z.B., <5. p1>, <13,p2>)
• Indexeintrag i, (N+1)/2 < i <= N+1 auf P’ (z.B., <24. p3>, <30, p4>)
• Push up: Indexeintrag (N+1)/2 nicht auf P oder P’ gespeichert, sondern erscheint nun als Separator zwischen P und P’ eine Ebene höher (z.B., 17).
• Keine Redundanz von Schlüsselwerten in inneren Knoten des B+-Index.
![Page 32: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/32.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen 31
Split des Wurzelknotens
•Splitting beginnt immer auf der Blattebene, wenn ein neuer Suchschlüsselwert hinzugefügt wird.
•Rekursives Splitting kann sich bis zur Wurzel fortsetzen.
•Splitting der Wurzel
• Wie Splitting eines inneren Knotens.
• Erstellen einer neuen Wurzel, die den pushed-up Separator enthält.
•Der Wurzelknoten ist der einzige Knoten der Indexstruktur der einen Füllgrad < 50% aufweisen kann.
•Root Splitting ist das einzige Ereignis, das die Höhe der Baumstruktur erhöht.
Einfügen in B+-BäumenSplitting
![Page 33: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/33.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen 32
Einfügen in B+-BäumenAlgorithmus
Einfügen eines Eintrags e in einen B+-Baum mit Grad d - Teil 1
procedure insert(nodepointer, e, e')
if nodepointer zeigt auf einen Blattknoten L then
if L hat freien Speicherplatz then
begin
Füge e auf L ein;
Setze e’ auf null;
return;
end
else
begin
Split L, indem die ersten d Indexeinträge auf L bleiben und die restlichen auf neu erstelltem Knoten L’ verschoben werden;
e’ := Indexeintrag <k,p>, wobei p auf L’ zeigt und k kleinster Schlüsselwert von L’;
Setze Nachbarpointer von L und L’ neu;
return;
end
if nodepointer zeigt auf einen inneren Knoten N then ...
![Page 34: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/34.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen 33
Einfügen in B+-BäumenAlgorithmus
Einfügen eines Eintrags e in einen B+-Baum mit Grad d - Teil 2
...
if nodepointer zeigt auf einen inneren Knoten N thenbegin
Finde i so dass ki < Schlüsselwert von e < ki+1;insert(pi, e, e’);
if e’ = null then return;
else if N hat freien Speicherplatz thenbegin
Füge Indexeintrag von e’ auf N ein;e’ := null;
return;
end
else
begin
Split N, indem die ersten d Schlüssel und die ersten d+1 Pointer auf N bleiben und die letzten d Schlüssel und d+1 Pointer auf neuen Knoten N’ verschoben werden;e’ := Indexeintrag <k,p>, wobei p auf N’ zeigt und k kleinster Schlüsselwert von N’;if N ist Wurzelknoten thenbegin
N’’ := neuer Knoten mit p0 = Pointer auf N und <k1, p1> = e’;Setzte den Zeiger, der auf die Wurzel des B+-Baums zeigt auf N’’;return;
end
end
end
end procedure
![Page 35: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/35.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Beispiel: Einfügen von 8* bei Wiederverteilung
34
Einfügen in B+-BäumenWiederverteilung (Redistribution)
•Idee: Umverteilen von Einträgen im Baum um durchschnittlichen Füllgrad zu erhöhen.
•Ziel: kompakterer Baum, dadurch weniger Disk I/O.
2* 3* 5* 7* 14* 16*
13 17 24 30
19* 20* 22* 24* 27* 29* 33* 34* 38* 39*
Seite für 8* voll
8*
![Page 36: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/36.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Beispiel: Einfügen von 8* bei Wiederverteilung
34
Einfügen in B+-BäumenWiederverteilung (Redistribution)
•Idee: Umverteilen von Einträgen im Baum um durchschnittlichen Füllgrad zu erhöhen.
•Ziel: kompakterer Baum, dadurch weniger Disk I/O.
2* 3* 5* 7* 14* 16*
13 17 24 30
19* 20* 22* 24* 27* 29* 33* 34* 38* 39*
Seite für 8* voll
8*
Nachbar noch Platz
8* 14* 16*
8
![Page 37: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/37.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen 35
Einfügen in B+-BäumenWiederverteilung (Redistribution)
Wiederverteilung in Blattknoten
•Gegeben: Seite P, die voll ist und in die k* eingefügt werden müsste.
• Lade Nachbar P’ in den Hauptspeicher.
• Ein Knoten P’ ist Nachbar von P wenn P’ direkt links bzw. rechts von P ist und P und P’ den gleichen Elternknoten haben.
• Ist P’ ebenfalls voll, wird Splitting durchgeführt.
• Hat P’ freien Platz
• Sei E = entries(P) ! entries(P’) ! {k*} die Menge aller Dateneinträge, die über P und P’ wiederverteilt werden. Es werden jeweils |E|/2 Einträge auf P und P’ gespeichert.
• Aktualisiere Separator im Elternknoten.
Wiederverteilung in inneren Knoten
![Page 38: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/38.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Löschen in B+-Bäumen
36
Grundidee bei Löschoperationen1.Gegeben ein Record mit Schlüsselwert k.
2.Rufe search(k) auf, um die Seite P zu finden, aus der Record gelöscht wird.
3.Sei n die Anzahl Einträge in P.
a. Ist n > d, so ist noch genügend Platz auf P besetzt, und Record wird einfach gelöscht.
b.Sonst...?
![Page 39: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/39.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Löschen in B+-BäumenBeispiel für einfaches Löschen (Füllgrad >= d)
37
Beispiel: Löschen von 19* aus einem Baum mit d = 2
2* 3* 14* 16*
5 13
14* 16* 19* 20* 22* 24* 27* 29*5* 7* 8*
24 30
17
![Page 40: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/40.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Löschen in B+-BäumenBeispiel für einfaches Löschen (Füllgrad >= d)
37
Beispiel: Löschen von 19* aus einem Baum mit d = 2
2* 3* 14* 16*
5 13
14* 16* 19* 20* 22* 24* 27* 29*5* 7* 8*
24 30
17
20* 22*
![Page 41: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/41.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Löschen in B+-BäumenWiederverteilung (Redistribution)
38
Beispiel: Löschen von 20* aus einem Baum mit d = 2
2* 3* 14* 16*
5 13
14* 16* 19* 20* 22* 24* 27* 29*5* 7* 8*
24 30
17
20* 22*
![Page 42: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/42.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Löschen in B+-BäumenWiederverteilung (Redistribution)
38
Beispiel: Löschen von 20* aus einem Baum mit d = 2
2* 3* 14* 16*
5 13
14* 16* 19* 20* 22* 24* 27* 29*5* 7* 8*
24 30
17
20* 22*22* 24* 27* 29*
27*
![Page 43: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/43.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Löschen in B+-BäumenMerge von Blattknoten
39
Beispiel: Löschen von 24* aus einem Baum mit d = 2, Teil 1 (Merge der Blattknoten)
2* 3* 14* 16*
5 13
14* 16* 19* 20* 22* 27* 29*5* 7* 8*
27 30
17
20* 22*22* 24*
![Page 44: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/44.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Löschen in B+-BäumenMerge von Blattknoten
39
Beispiel: Löschen von 24* aus einem Baum mit d = 2, Teil 1 (Merge der Blattknoten)
2* 3* 14* 16*
5 13
14* 16* 19* 20* 22*5* 7* 8*
27 30
17
20* 22*22* 24*22* 27* 29*
30
![Page 45: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/45.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Löschen in B+-BäumenMerge von inneren Knoten
40
Beispiel: Löschen von 24* aus einem Baum mit d = 2, Teil 2 (Merge innerer Knoten)
2* 3* 14* 16*
5 13
14* 16* 19* 20* 22*5* 7* 8* 20* 22*22* 24*22* 27* 29*
17 30
![Page 46: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/46.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Löschen in B+-BäumenRedistribution über innere Knoten
41
Beispiel: Löschen von 24* aus einem Baum mit d = 2, Teil 1 (Merge der Blattknoten)
2* 3*
14* 16*
5 13 17 20
14* 16*
20* 21*
22* 24*
5* 7* 8*
27 30
22
... ...
27* 29*
![Page 47: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/47.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Löschen in B+-BäumenRedistribution über innere Knoten
41
Beispiel: Löschen von 24* aus einem Baum mit d = 2, Teil 1 (Merge der Blattknoten)
2* 3*
14* 16*
5 13 17 20
14* 16*
20* 21*
22* 24*
5* 7* 8*
22
...
22* 27* 29*
30
...
![Page 48: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/48.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Löschen in B+-BäumenRedistribution über innere Knoten
42
Beispiel: Löschen von 24* aus einem Baum mit d = 2, Teil 2 (Wiederverteilung über Elternknoten)
2* 3* 14* 16*
5 13 17 20
14* 16* 20* 21* 22* 24*5* 7* 8*
27 30
22
...
22* 27* 29*
30
...
2220
17
![Page 49: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/49.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen 43
Löschen in B+-BäumenAlgorithmus
Löschen eines Eintrags e in einen B+-Baum mit Grad d - Teil 1
procedure delete(parentpointer, nodepointer, e, e')
if nodepointer zeigt auf einen Blattknoten L then
if L hat Füllgrad > d then begin
Lösche e aus L;
Setze e’ auf null;
return;
end
else begin
S:= Nachbar von L;
if S hat Füllgrad > d then begin
Redistribution zwischen L und S;
R := L wenn L rechts von S ist, sonst S;
P := Eintrag in Elternknoten von L und S, der auf R zeigt;
Ersetze Schlüsselwert von P durch neuen niedrigsten Wert von R;
Setze e’ auf null;
return;
end
else begin
Verschmelze L und S;
R := L wenn L rechts von S ist, sonst S;
e’ := Indexeintrag im Elternknoten, der auf R zeigt;
Verschiebe alle Einträge von R auf den linken Knoten;
Lösche R und setzte entsprechende Nachbarpointer um;
return;
end
end
if nodepointer zeigt auf einen inneren Knoten N then ...
![Page 50: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/50.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen 44
Löschen in B+-BäumenAlgorithmus
Löschen eines Eintrags e in einen B+-Baum mit Grad d - Teil 2
if nodepointer zeigt auf einen inneren Knoten N then begin
Finde i so dass ki < Schlüsselwert von e < ki+1;delete(nodepointer, pi, e, e’);
if e’ = null then return;
else begin
Entferne Indexeintrag e’ von N;if N hat Füllgrad > d then begin
Setze e’ auf null; return;
end
else begin
S := Nachbar von N;if S hat Füllgrad > d then begin
Gleichmäßige Verteilung von Einträgen zwischen S und N über den Elternknoten;Setze e’ auf null;return;
end
else begin
Verschmelze N und S;R := L wenn L rechts von S ist, sonst S;e’ := Indexeintrag in Elternknoten, der auf R zeigt;Ziehe Separator vom Elternknoten in den linken der Knoten S und L; Verschiebe alle Einträge von R in den linken Knoten;Lösche M;return;
end
end
end
end
end procedure
![Page 51: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/51.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Duplikate in B+-Bäumen
45
• Die Algorithmen search, insert, delete nehmen an, dass keine Duplikate in den Suchschlüsselwerten vorkommen.
• Per Definition stimmt diese Annahme bei Primär- bzw. Unique-Indizes.
• Stimmt diese Annahme nicht, gibt es 2 Lösungsansätze
1. Die Algorithmen werden angepasst (Unterscheidung zwischen Dateneintragsvarianten 1 - 3 ).
2. Der Suchschlüssel wird mit einer eindeutigen, vom DBMS generierten ID erweitert um einen Unique-Index zu simulieren.
Handhabung von Duplikaten in Suchschlüsselwerten in DB2
Since duplicate keys add to the B+-tree complexity, IBM DB2forces uniqueness by forming a composite key of the form <k, id>
where id is the unique tuple identity of the data record withkey k.Tuple identitiesare system-maintained unique identitifers for each tuple in a table, andare not dependent on tuple order and never rise again.
Introduction
Torsten Grust
Architecture of aDBMS
OrganizationalMatters
1.10
These Slides. . .
• . . . prepared/updated throughout the semester — watch outfor bugs and please let me know. Thanks.
• Posted to course web home on the day before the lecture —bring a printout and take notes.
Example
Open Issues/Questions
Take notes.
Code Snippets, Algorithms
IBMDB2 Specifics
If possible and insightful, discuss how IBMDB2 does things.
![Page 52: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/52.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Key Compression in B+-Bäumen
46
• I/O Kosten bei Verwendung von hierarchischen Indizes proportional zur Höhe des Baumes.
• Fan-out F bestimmt Höhe h des Baumes für einer Datei von N Seiten : h = logF N
• Für einen Indexeintrag <k, pointer zu pi> gilt i.A. |k| >> |pointer|
• Haben wir lange Schlüssel wie “Devarakonda Venkataramana Sathyanarayana Seshasayee Yellamanchali Murthi”, so haben wir einen geringen fan-out.
• Schlüsselwerte werden nur zur Weiterleitung zum entsprechenden Dateneintrag verwendet.
!Der Schlüsselwert muss nicht dem exakten Datenwert entsprechen, sondern muss nur die Separatoreigenschaft gewährleisten.
!Minimierung der Schlüsselgröße |k| für höheren Fan-out.
![Page 53: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/53.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Key Compression in B+-Bäumen
46
• I/O Kosten bei Verwendung von hierarchischen Indizes proportional zur Höhe des Baumes.
• Fan-out F bestimmt Höhe h des Baumes für einer Datei von N Seiten : h = logF N
• Für einen Indexeintrag <k, pointer zu pi> gilt i.A. |k| >> |pointer|
• Haben wir lange Schlüssel wie “Devarakonda Venkataramana Sathyanarayana Seshasayee Yellamanchali Murthi”, so haben wir einen geringen fan-out.
• Schlüsselwerte werden nur zur Weiterleitung zum entsprechenden Dateneintrag verwendet.
!Der Schlüsselwert muss nicht dem exakten Datenwert entsprechen, sondern muss nur die Separatoreigenschaft gewährleisten.
!Minimierung der Schlüsselgröße |k| für höheren Fan-out.
Beispiel: Key Compression in einem B+-Baum
Daniel Lee David Smith Devarakonda...... ...
![Page 54: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/54.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Key Compression in B+-Bäumen
46
• I/O Kosten bei Verwendung von hierarchischen Indizes proportional zur Höhe des Baumes.
• Fan-out F bestimmt Höhe h des Baumes für einer Datei von N Seiten : h = logF N
• Für einen Indexeintrag <k, pointer zu pi> gilt i.A. |k| >> |pointer|
• Haben wir lange Schlüssel wie “Devarakonda Venkataramana Sathyanarayana Seshasayee Yellamanchali Murthi”, so haben wir einen geringen fan-out.
• Schlüsselwerte werden nur zur Weiterleitung zum entsprechenden Dateneintrag verwendet.
!Der Schlüsselwert muss nicht dem exakten Datenwert entsprechen, sondern muss nur die Separatoreigenschaft gewährleisten.
!Minimierung der Schlüsselgröße |k| für höheren Fan-out.
Beispiel: Key Compression in einem B+-Baum
Daniel Lee David Smith Devarakonda...... ... ?Dan Dav Dev...... ...
![Page 55: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/55.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Key Compression in B+-Bäumen
46
• I/O Kosten bei Verwendung von hierarchischen Indizes proportional zur Höhe des Baumes.
• Fan-out F bestimmt Höhe h des Baumes für einer Datei von N Seiten : h = logF N
• Für einen Indexeintrag <k, pointer zu pi> gilt i.A. |k| >> |pointer|
• Haben wir lange Schlüssel wie “Devarakonda Venkataramana Sathyanarayana Seshasayee Yellamanchali Murthi”, so haben wir einen geringen fan-out.
• Schlüsselwerte werden nur zur Weiterleitung zum entsprechenden Dateneintrag verwendet.
!Der Schlüsselwert muss nicht dem exakten Datenwert entsprechen, sondern muss nur die Separatoreigenschaft gewährleisten.
!Minimierung der Schlüsselgröße |k| für höheren Fan-out.
Beispiel: Key Compression in einem B+-Baum
Daniel Lee David Smith Devarakonda...... ...
Dante Wu Darius Rex ... Davey Jones
k < David Smith
?Dan Dav Dev...... ...
![Page 56: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/56.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Key Compression in B+-Bäumen
46
• I/O Kosten bei Verwendung von hierarchischen Indizes proportional zur Höhe des Baumes.
• Fan-out F bestimmt Höhe h des Baumes für einer Datei von N Seiten : h = logF N
• Für einen Indexeintrag <k, pointer zu pi> gilt i.A. |k| >> |pointer|
• Haben wir lange Schlüssel wie “Devarakonda Venkataramana Sathyanarayana Seshasayee Yellamanchali Murthi”, so haben wir einen geringen fan-out.
• Schlüsselwerte werden nur zur Weiterleitung zum entsprechenden Dateneintrag verwendet.
!Der Schlüsselwert muss nicht dem exakten Datenwert entsprechen, sondern muss nur die Separatoreigenschaft gewährleisten.
!Minimierung der Schlüsselgröße |k| für höheren Fan-out.
Beispiel: Key Compression in einem B+-Baum
Daniel Lee David Smith Devarakonda...... ...
Dante Wu Darius Rex ... Davey Jones
k < David Smith
?Dan Dav Dev...... ...
Überprüfe größten Wert für k im linken Unterbaum (analog: kleinster Wert im rechten Unterbaum)
![Page 57: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/57.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Key Compression in B+-Bäumen
46
• I/O Kosten bei Verwendung von hierarchischen Indizes proportional zur Höhe des Baumes.
• Fan-out F bestimmt Höhe h des Baumes für einer Datei von N Seiten : h = logF N
• Für einen Indexeintrag <k, pointer zu pi> gilt i.A. |k| >> |pointer|
• Haben wir lange Schlüssel wie “Devarakonda Venkataramana Sathyanarayana Seshasayee Yellamanchali Murthi”, so haben wir einen geringen fan-out.
• Schlüsselwerte werden nur zur Weiterleitung zum entsprechenden Dateneintrag verwendet.
!Der Schlüsselwert muss nicht dem exakten Datenwert entsprechen, sondern muss nur die Separatoreigenschaft gewährleisten.
!Minimierung der Schlüsselgröße |k| für höheren Fan-out.
Beispiel: Key Compression in einem B+-Baum
Daniel Lee David Smith Devarakonda...... ...
Dante Wu Darius Rex ... Davey Jones
k < David Smith
Dan Dav Dev...... ...Davi
Überprüfe größten Wert für k im linken Unterbaum (analog: kleinster Wert im rechten Unterbaum)
![Page 58: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/58.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Bulk-Loading eines B+-Baums
47
• Ziel: Gegeben eine Tabelle T mit 1.000.000 Tupeln, erstelle einen B+-Baum-Index über Attributwert A von T.
1. Alternative
• Führe 1.000.000 Mal insert() über wachsende Baum-struktur aus.
! Das DBMS muss 1.000.000 Mal den wachsenden Baum traversieren.
2. Alternative: Bulk-loading
Bulk-loading Algorithmus
1.Für jedes Record in T mit Suchschlüsselwert k, erstelle eine sortierte Liste L von Seiten mit Blatteinträgen k*.
2.Sei R eine leere Indexseite.
3.R.po := Erster Pointer in R, der auf die erste Seite von L zeigt.
4.Für jede Seite S in L
a.Erstelle einen Indexeintrag I := <minimales k von S, Pointer auf S>.
b.Füge I so weit rechts wie möglich in eine Seite R direkt über der Blattebene ein.
c.Ist R voll, wird diese Seite gesplittet.
•Für Dateneintragsvarianten 2 und 3 impliziert dies keine Sortierung der Daten Records.
•Für Variante 1 erstellen wir in diesem Fall einen clustered Index.
•Splitting passiert stets auf dem am weitesten rechts liegenden Pfad von den Blättern zur Wurzel.
![Page 59: Datenbanksysteme II - db.inf.uni-tuebingen.de · Acta Informatica, vol. 1, no. 3, September 1972. Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel](https://reader030.fdocument.pub/reader030/viewer/2022040313/5e056c07c99e68691d713352/html5/thumbnails/59.jpg)
Architektur und Implementierung von Datenbanksystemen | WS 2009/10 | Melanie Herschel | Universität Tübingen
Zusammenfassung
ISAM
• Statische Indexdatei, Einfüge- und Löschoperationen verwenden Überlaufseiten.
• Nachteil: Höhe des Baumes und somit I/O Kosten schwanken und bei zunehmenden Einfügeoperationen kann Effizienz wegen langer Ketten von Überlaufseiten sinken.
• Vortei: Keine Locks auf Indexseiten bei gleichzeitigem Zugriff verschiedener Prozesse nötig.
B+-Baum
• Dynamische Indexdatei, die garantiert, dass alle Wurzel-zu-Blatt Pfade gleich lang sind.
• Änderung der Seiten im Index Einfüge- und Löschoperationen möglich
• splitting bzw merging
• redistribution
• Key Compression, um einen höheren Fan-out zu erzielen.
• Bulk Loading zur effizienten Initialisierung einer Indexdatei.
48