Teil IV Dateiorganisation und Zugriffsstrukturen

Werbung
Teil IV
Dateiorganisation und Zugriffsstrukturen
Dateiorganisation und Zugriffsstrukturen
Überblick
1
Klassifikation der Speichertechniken
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–1
Dateiorganisation und Zugriffsstrukturen
Überblick
1
Klassifikation der Speichertechniken
2
Statische Verfahren
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–1
Dateiorganisation und Zugriffsstrukturen
Überblick
1
Klassifikation der Speichertechniken
2
Statische Verfahren
3
Baumverfahren
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–1
Dateiorganisation und Zugriffsstrukturen
Überblick
1
Klassifikation der Speichertechniken
2
Statische Verfahren
3
Baumverfahren
4
Hashverfahren
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–1
Dateiorganisation und Zugriffsstrukturen
Überblick
1
Klassifikation der Speichertechniken
2
Statische Verfahren
3
Baumverfahren
4
Hashverfahren
5
Dynamisches Hashen
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–1
Dateiorganisation und Zugriffsstrukturen
Überblick
1
Klassifikation der Speichertechniken
2
Statische Verfahren
3
Baumverfahren
4
Hashverfahren
5
Dynamisches Hashen
6
Cluster-Bildung
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–1
Dateiorganisation und Zugriffsstrukturen
Überblick
1
Klassifikation der Speichertechniken
2
Statische Verfahren
3
Baumverfahren
4
Hashverfahren
5
Dynamisches Hashen
6
Cluster-Bildung
7
Physische Datendefinition in SQL-Systemen
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–1
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Einordnung in 5-Schichten-Architektur
Speichersystem fordert über Systempufferschnittstelle Seiten an
interpretiert diese als interne Datensätze
interne Realisierung der logischen Datensätze mit Hilfe von
Zeigern, speziellen Indexeinträgen und weiteren Hilfsstrukturen
Zugriffssystem abstrahiert von der konkreten Realisierung
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–2
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Einordnung /2
Mengenorientierte
MOS Schnittstelle
Datensystem
Satzorientierte
SOS Schnittstelle
Zugriffssystem
Interne
ISS Satzschnittstelle
Speichersystem
SystempufferSPS schnittstelle
Pufferverwaltung
DS Datei-
schnittstelle
Betriebssystem
GS Geräteschnittstelle
Externspeicher
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–3
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Klassifikation der Speichertechniken
Kriterien für Zugriffsstrukturen oder Zugriffsverfahren:
I
I
I
organisiert interne Relation selbst (Dateiorganisationsform) oder
zusätzliche Zugriffsmöglichkeit auf bestehende interne Relation
(Zugriffspfad)
Art der Zuordnung von gegebenen Attributwerten zu
Datensatz-Adressen: Schlüsselvergleich = Zuordnung von
Schlsselwert zu Adresse über Hilfsstruktur;
Schlüsseltransformation = Berechnung der Adresse aus
Schlüsselwert (z.B. über Hashfunktion)
Arten von Anfragen, die durch Dateiorganisationsformen und
Zugriffspfade effizient unterstützt werden können
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–4
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Klassifikation der Speichertechniken /2
Zugriffsverfahren
Zugriffspfad
Sekundärindex
nicht geclustert
dicht besetzt
Dateiorganisation
ohne Index
Primärindex
nicht geclustert
geclustert
dicht besetzt
c Sattler / Saake
dünn besetzt
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–5
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Klassifikation /3
Dünn- vs. dichtbesetzter Index
dünnbesetzter Index: nicht für jeden Zugriffsattributwert K ein
Eintrag in Indexdatei sondern z.B. nur für Seitenanführer einer
sortieren Relation
dichtbesetzter Index: für jeden Datensatz der internen Relation
ein Eintrag in Indexdatei
Geclusterter vs. nicht-geclusterter Index
geclusterter Index: in der gleichen Form sortiert wie interne
Relation
nicht-geclusterter Index: anders organisiert als interne Relation
Primärindex oft dünnbesetzt und geclustert
jeder dünnbesetzte Index ist auch geclusterter Index, aber nicht
umgekehrt
Sekundärindex kann nur dichtbesetzter, nicht-geclusterter Index
sein (auch: invertierte Datei)
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–6
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Geclusterter vs. nicht-geclusterter Index
mehrstufiger Index
...
...
geclusteter
Index
Hauptdatei
...
...
mehrstufiger Index
nichtgeclusterter
Index
...
...
Hauptdatei
...
c Sattler / Saake
Datenbank-Implementierungstechniken
...
Letzte Änderung: 9. Mai 2017
4–7
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Statische vs. dynamische Struktur
statische Zugriffsstruktur: optimal nur bei bestimmter (fester)
Anzahl von verwaltenden Datensätzen
dynamische Zugriffsstruktur: unabhängig von der Anzahl der
Datensätze optimal
I
I
dynamische Adresstransformationsverfahren verändern dynamisch
Bildbereich der Transformation
dynamische Indexverfahren verändern dynamisch Anzahl der
Indexstufen ⇒ in DBS üblich
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–8
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Statische Verfahren
Heap, indexsequenziell, indiziert-nichtsequenziell
oft grundlegende Speichertechnik in RDBS
direkte Organisationsformen: keine Hilfsstruktur, keine
Adressberechnung (Heap, sequenziell)
statische Indexverfahren für Primärindex und Sekundärindex
dateibasierte
Indexstrukturen
unsortiert
sortiert
Heap
ohne Index
mit Index
sequenzielle Datei
c Sattler / Saake
dünn besetzt
dicht besetzt
indexsequenzielle Datei
indexiert-nichtsequenzielle Datei
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–9
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Heap-Organisation
völlig unsortiert speichern
physische Reihenfolge der Datensätze ist zeitliche Reihenfolge
der Aufnahme von Datensätzen
p42
p47
8832
Tamara
Jagellowsk
...
11.11.2009
5588
Gunter
Saake
...
5.10.1966
4711
Kai-Uwe
Sattler
...
1.4.1970
4242
Annie
De Monti
...
3.5.1999
6660
Erwin
Maier
...
1.5.1978
6644
Andreas
Heuer
...
11.12.1988
9912
Max
Mustermann
...
1.1.1949
frei
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–10
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Heap: Operationen
insert: Zugriff auf letzte Seite der Datei. Genügend freier Platz
⇒ Satz anhängen. Sonst nächste freie Seite holen
delete: lookup, dann Löschbit auf 0 gesetzt
lookup: sequenzielles Durchsuchen der Gesamtdatei, maximaler
Aufwand (Heap-Datei meist zusammen mit Sekundärindex
eingesetzt; oder für sehr kleine Relationen)
Komplexitäten:
I
I
Neuaufnahme von Daten O(1)
Suchen O(n)
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–11
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Sequenzielle Speicherung
sortiertes Speichern der Datensätze
p42
p47
4242
Annie
De Monti
...
4711
Kai-Uwe
Sattler
...
3.5.1999
1.4.1970
5588
Gunter
Saake
...
5.10.1966
6644
Andreas
Heuer
...
11.12.1988
6660
Erwin
Maier
...
1.5.1978
8832
Tamara
Jagellowsk
...
11.11.2009
9912
Max
Mustermann
...
1.1.1949
frei
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–12
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Sequenzielle Datei: Operationen
insert: Seite suchen, Datensatz einsortieren ⇒ beim Anlegen
oder sequenziellen Füllen einer Datei jede Seite nur bis zu
gewissem Grad (etwa 66%) füllen
delete: Aufwand bleibt
Folgende Dateiorganisationsformen:
I
I
I
schnelleres lookup
mehr Platzbedarf (durch Hilfsstrukturen wie Indexdateien)
mehr Zeitbedarf bei insert und delete
klassische Indexform: indexsequenzielle Dateiorganisation
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–13
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Indexsequenzielle Dateiorganisation
Kombination von sequenzieller Hauptdatei und Indexdatei:
indexsequenzielle Dateiorganisationsform
Indexdatei kann geclusterter, dünnbesetzter Index sein
mindestens zweistufiger Baum
I
I
Blattebene ist Hauptdatei (Datensätze)
jede andere Stufe ist Indexdatei
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–14
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Indexsequenzielle Dateiorganisation /2
p42
p2
4242
42
4242
Annie
De Monti
...
6660
47
4711
Kai-Uwe
Sattler
...
3.5.1999
1.4.1970
5588
Gunter
Saake
...
5.10.1966
6644
Andreas
Heuer
...
11.12.1988
p47
6660
Erwin
Maier
...
1.5.1978
8832
Tamara
Jagellowsk
...
11.11.2009
9912
Max
Mustermann
...
1.1.1949
frei
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–15
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Aufbau der Indexdatei
Datensätze in Indexdatei:
(Primärschlüsselwert, Seitennummer)
zu jeder Seite der Hauptdatei genau ein Index-Datensatz in
Indexdatei
Problem: „Wurzel“ des Baumes bei einem einstufigen Index nicht
nur eine Seite
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–16
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Aufbau der Indexdatei /2
p2
p42
2344
99
4242
Annie
De Monti
...
4242
42
4711
Kai-Uwe
Sattler
...
1.4.1970
6660
47
5588
Gunter
Saake
...
5.10.1966
6644
Andreas
Heuer
...
11.12.1988
p97
3.5.1999
p47
9999
13
6660
Erwin
Maier
...
1.5.1978
14001
43
8832
Tamara
Jagellowsk
...
11.11.2009
9912
Max
Mustermann
...
1.1.1949
frei
p13
9999
Hans
Guck
...
3.5.1978
11234
Bibi
Berg
...
11.11.2008
13444
Bob
Meister
...
1.1.1969
frei
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–17
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Mehrstufiger Index
Optional: Indexdatei wieder indexsequenziell verwalten
Idealerweise: Index höchster Stufe nur noch eine Seite
p2
p117
Indexdatei
Stufe 2
c Sattler / Saake
2344
2
2344
99
9999
97
4242
42
6660
47
p97
9999
13
14001
43
Datenbank-Implementierungstechniken
Indexdatei
Stufe 1
Letzte Änderung: 9. Mai 2017
4–18
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
lookup bei indexsequenziellen Dateien
lookup-Operation sucht Datensatz zum Zugriffsattributwert w
Indexdatei sequenziell durchlaufen, dabei (v1 , s) im Index gesucht
mit v1 ≤ w:
I
I
(v1 , s) ist letzter Satz der Indexdatei, dann kann Datensatz zu w
höchstens auf dieser Seite gespeichert sein (wenn er existiert)
nächster Satz (v2 , s0 ) im Index hat v2 > w, also muß Datensatz zu
w, wenn vorhanden, auf Seite s gespeichert sein
(v1 , s) überdeckt Zugriffsattributwert w
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–19
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
insert bei indexsequenziellen Dateien
insert: zunächst mit lookup Seite finden
Falls Platz, Satz sortiert in gefundener Seite speichern; Index
anpassen, falls neuer Satz der erste Satz in der Seite
Falls kein Platz, neue Seite von Freispeicherverwaltung holen;
Sätze der „zu vollen“ Seite gleichmäßig auf alte und neue Seite
verteilen; für neue Seite Indexeintrag anlegen
Alternativ neuen Datensatz auf Überlaufseite zur gefundenen
Seite
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–20
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
delete bei indexsequenziellen Dateien
delete: zunächst mit lookup Seite finden
Satz auf Seite löschen (Löschbit auf 0)
erster Satz auf Seite: Index anpassen
Falls Seite nach Löschen leer: Index anpassen, Seite an
Freispeicherverwaltung zurück
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–21
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Probleme indexsequenzieller Dateien
stark wachsende Dateien: Zahl der linear verketteten
Indexseiten wächst; automatische Anpassung der Stufenanzahl
nicht vorgesehen
stark schrumpfende Dateien: nur zögernde Verringerung der
Index- und Hauptdatei-Seiten
unausgeglichene Seiten in der Hauptdatei (unnötig hoher
Speicherplatzbedarf, zu lange Zugriffszeit)
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–22
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Indiziert-nichtsequenzieller Zugriffspfad
zur Unterstützung von Sekundärschlüsseln
mehrere Zugriffpfade dieser Form pro Datei möglich
einstufig oder mehrstufig: höhere Indexstufen wieder
indexsequenziell organisiert
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–23
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Aufbau der Indexdatei
Sekundärindex, dichtbesetzter und nicht-geclusteter Index
zu jedem Satz der Hauptdatei Satz (w, s) in der Indexdatei
w Sekundärschlüsselwert, s zugeordnete Seite
I
I
entweder für ein w mehrere Sätze in die Indexdatei aufnehmen
oder für ein w Liste von Adresse in der Hauptdatei angeben
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–24
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Aufbau der Indexdatei /2
p2
p42
Andreas
42
4242
Max
De Monti
...
Annie
47
4711
Kai-Uwe
Sattler
...
1.4.1970
Gunter
42
5588
Gunter
Saake
...
5.10.1966
Kai-Uwe
42
6644
Andreas
Heuer
...
11.12.1988
p97
3.5.1999
p47
42
6660
Annie
Maier
...
1.5.1978
Max
47
8832
Tamara
Jagellowsk
...
11.11.2009
Tamara
47
9912
Max
Mustermann
...
1.1.1949
Max
frei
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–25
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Aufbau der Indexdatei /3
p2
p42
Andreas
42
4242
Max
De Monti
...
Annie
47
4711
Kai-Uwe
Sattler
...
1.4.1970
Gunter
42
5588
Gunter
Saake
...
5.10.1966
Kai-Uwe
42
6644
Andreas
Heuer
...
11.12.1988
p97
3.5.1999
p47
Max
42, 47
6660
Annie
Maier
...
1.5.1978
47
8832
Tamara
Jagellowsk
...
11.11.2009
9912
Max
Mustermann
...
1.1.1949
Tamara
frei
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–26
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Operationen
lookup: w kann mehrfach auftreten, Überdeckungstechnik nicht
benötigt
insert: Anpassen der Indexdateien
delete: Indexeintrag entfernen
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–27
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Baumverfahren
Stufenanzahl dynamisch verändern
wichtigste Baumverfahren: B-Bäume und ihre Varianten
B-Baum-Varianten sind noch „allgegenwärtiger“ in heutigen
Datenbanksystemen als SQL
SQL nur in der relationalen und objektrelationalen
Datenbanktechnologie verbreitet; B-Bäume überall als
Grundtechnik eingesetzt
B-Bäume
Daten in den Knoten
Daten in den Blättern
B-Baum
TID-B+-Baum
c Sattler / Saake
Inline-B+-Baum
Präfix-B+-Baum
Datenbank-Implementierungstechniken
BLOB-B+-Baum
Letzte Änderung: 9. Mai 2017
4–28
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
B-Bäume
Ausgangspunkt: ausgeglichener, balancierter Suchbaum
Ausgeglichen oder balanciert: alle Pfade von der Wurzel zu den
Blättern des Baumes gleich lang
Hauptspeicher-Implementierungsstruktur: binäre Suchbäume,
beispielsweise AVL-Bäume von Adelson-Velskii und Landis
Datenbankbereich: Knoten der Suchbäume zugeschnitten auf
Seitenstruktur des Datenbanksystems
mehrere Zugriffsattributwerte auf einer Seite
Mehrwegebäume
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–29
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Prinzip des B-Baumes
B-Baum von Bayer (B für balanciert, breit, buschig, Bayer, NICHT:
binär)
dynamischer, balancierter Indexbaum, bei dem jeder Indexeintrag
auf eine Seite der Hauptdatei zeigt
Mehrwegebaum völlig ausgeglichen, wenn
1
alle Wege von Wurzel bis zu Blättern gleich lang
2
jeder Knoten gleich viele Indexeinträge
vollständiges Ausgleichen zu teuer, deshalb B-Baum-Kriterium:
Jede Seite außer der Wurzelseite enthält zwischen m und 2m
Einträge.
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–30
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Definition B-Baum
Ordnung eines B-Baumes ist minimale Anzahl der Einträge auf
den Indexseiten außer der Wurzelseite
Bsp.: B-Baum der Ordnung 8 fasst auf jeder inneren Indexseite
zwischen 8 und 16 Einträgen
Def.: Ein Indexbaum ist ein B-Baum der Ordnung m, wenn er die
folgenden Eigenschaften erfüllt:
1
2
3
4
Jede Seite enthält höchstens 2m Elemente.
Jede Seite, außer der Wurzelseite, enthält mindestens m Elemente.
Jede Seite ist entweder eine Blattseite ohne Nachfolger oder hat
i + 1 Nachfolger, falls i die Anzahl ihrer Elemente ist.
Alle Blattseiten liegen auf der gleichen Stufe.
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–31
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Eigenschaften des B-Baumes
n Datensätze in der Hauptdatei ⇒ in logm (n) Seitenzugriffen von
der Wurzel zum Blatt
I
I
I
Durch Balancierungskriterium wird Eigenschaft nahe an der
vollständigen Ausgeglichenheit erreicht (1. Kriterium vollständig
erfüllt, 2. Kriterium näherungsweise)
Kriterium garantiert 50% Speicherplatzausnutzung
einfache, schnelle Algorithmen zum Suchen, Einfügen und
Löschen von Datensätzen (Komplexität von O(logm (n)))
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–32
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Suchen in B-Bäumen
lookup wie in statischen Indexverfahren
Startend auf Wurzelseite Eintrag im B-Baum ermitteln, der den
gesuchten Zugriffsattributwert w überdeckt ⇒ Zeiger verfolgen,
Seite nächster Stufe laden
Suchen: 38, 20, 6
25
10
2
5
7
20
8
13
30
22
14
c Sattler / Saake
15
24
16
32
26
27
28
Datenbank-Implementierungstechniken
35
40
38
41
42
45
Letzte Änderung: 9. Mai 2017
46
4–33
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Einfügen in B-Bäumen
Einfügen eines Wertes w
I
I
I
mit lookup entsprechende Blattseite suchen
passende Seite n < 2m Elemente, w einsortieren
passende Seite n = 2m Elemente, neue Seite erzeugen,
F
F
F
I
ersten m Werte auf Originalseite
letzten m Werte auf neue Seite
mittleres Element auf entsprechende Indexseite nach oben
eventuell dieser Prozess rekursiv bis zur Wurzel
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–34
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Einfügen in einen B-Baum: Beispiel
1
5
1
1
Split
1
6
c Sattler / Saake
5
6
1
2
5
2
5
7
2
1
2
5
2
1
Datenbank-Implementierungstechniken
5
6
7
Letzte Änderung: 9. Mai 2017
4–35
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Einfügen in einen B-Baum: Beispiel /2
Split
2
4
6
1
7
5
8
1
2
6
4
5
1
2
6
4
5
3
7
8
1
7
2
3
6
4
Split
Split
2
4
7
5
4
6
2
1
3
5
7
6
8
1
c Sattler / Saake
8
Datenbank-Implementierungstechniken
3
5
7
8
Letzte Änderung: 9. Mai 2017
4–36
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Löschen in B-Bäumen
bei weniger als m Elementen auf Seite: Unterlauf
Löschen eines Wertes w: Bsp.: 24; 28, 38, 35
I
I
I
mit lookup entsprechende Seite suchen
w auf Blattseite gespeichert ⇒ Wert löschen, eventuell Unterlauf
behandeln
w nicht auf Blattseite gespeichert ⇒ Wert löschen, durch
lexikographisch nächstkleineres Element von einer Blattseite
ersetzen, eventuell auf Blattseite Unterlauf behandeln
Unterlaufbehandlung
I
I
Ausgleichen mit der benachbarten Seite (benachbarte Seite n
Elemente mit n > m)
oder Zusammenlegen zweier Seiten zu einer (Nachbarseite n = m
Elemente), das „mittlere“ Element von Indexseite darüber dazu, auf
Indexseite eventuell Unterlauf behandeln
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–37
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Einfügen und Löschungen im B-Baum
Einfügen des Elementes 22; Löschen von 22
20
7
10
15
18
26
20
7
10
c Sattler / Saake
15
18
30
35
40
30
22
26
Datenbank-Implementierungstechniken
35
40
Letzte Änderung: 9. Mai 2017
4–38
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Komplexität der Operationen
Aufwand beim Einfügen, Suchen und Löschen im B-Baum immer
O(logm (n)) Operationen
entspricht genau der „Höhe“ des Baumes
Konkret: Seiten der Größe 4 KB, Zugriffsattributwert 32 Bytes,
8-Byte-Zeiger: zwischen 50 und 100 Indexeinträge pro Seite;
Ordnung dieses B-Baumes 50
1.000.000 Datensätze: log50 (1.000.000) = 4 Seitenzugriffe im
schlechtesten Fall
Wurzelseite jedes B-Baumes normalerweise im Puffer: 3
Seitenzugriffe
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–39
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Varianten
B+ -Bäume: nur Blattebene enthält Daten
B∗ -Bäume:
Baum ist hohl
Aufteilen von Seiten vermeiden durch „Shuffle“
Präfix-B-Bäume: Zeichenketten als Zugriffsattributwerte, nur
Präfix indexieren
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–40
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
B+ -Baum: Motivation
B-Baum: Wie/wo werden Nicht-Schlüsseldaten (Tupel, TIDs)
gespeichert?
I
I
Zusammen mit Schlüsseln in allen Knoten?
Problem beim Traversieren des Baumes, z.B. bei Bereichsanfragen
rangeSearch(7,35)
25
10
2
5
7
20
8
13
30
22
14
c Sattler / Saake
15
24
16
32
26
27
28
Datenbank-Implementierungstechniken
35
40
38
41
42
45
Letzte Änderung: 9. Mai 2017
46
4–41
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
B+ -Baum
in der Praxis am häufigsten eingesetzte Variante des B-Baumes:
I
I
effizientere Änderungsoperationen, insb. Löschen
Verringerung der Baumhöhe
Änderungen gegenüber B-Baum
I
I
in inneren Knoten nur noch Zugriffsattributwert und Zeiger auf
nachfolgenden Seite der nächsten Stufe; nur Blattknoten enthalten
neben Zugriffsattributwert die Daten (Datensätze bzw. Verweise auf
Datensätze in der Hauptdatei)
Knoten der Blattebene sind untereinander verkettet für effiziente
Unterstützung von Bereichsanfragen
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–42
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Ordnung; Operationen
Ordnung für B+ -Baum: (x, y ), x Mindestbelegung der
Indexseiten, y Mindestbelegung der Blattseiten
delete gegenüber B-Baum effizienter („Ausleihen“ eines
Elementes von der Blattseite entfällt)
Zugriffsattributwerte in inneren Knoten können sogar
stehenbleiben
häufig als Primärindex eingesetzt
B+ -Baum ist dynamische, mehrstufige, indexsequenziellen Datei
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–43
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
B+ -Baum: Blattebene mit Verweisen
23
3
7
13
42
67
23
99
35
40
Blattebene
7
Ann
Maier
3
Tom
Tigger
35
May
Flower
40
Dirk
Mejer
13
Tim
Tahler
23
Maik
Muggel
c Sattler / Saake
Datenbank-Implementierungstechniken
Hauptdatei
Letzte Änderung: 9. Mai 2017
4–44
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
B+ -Baum: Datenstrukturen
BPlusBranchNode = record of
nkeys: int;
ptrs: array [0 .. nkeys ] of PageNum;
keys: array [1 .. nkeys ] of KeyType;
level: int;
/* Level= 1 zeigt an, dass die ptrs auf Blätter zeigen
end;
BPlusLeafNode = record of
nkeys: int;
keys: array [1 .. nkeys ] of KeyType;
payload: array [1 .. nkeys ] of LoadType ;
nextleaf: PageNum;
end;
c Sattler / Saake
Datenbank-Implementierungstechniken
*/
/* Daten bzw. TIDs */
Letzte Änderung: 9. Mai 2017
4–45
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Operationen im B+ -Baum
lookup: wie im B-Baum jedoch immer bis zur Blattebene
search(u, o): Lookup für unteren Wert u, Traversieren auf der
Blattebene bis zum oberen Wert o
insert: ähnlich zum B-Baum, im Fall des Split bei
Überlaufbehandlung wird nur ein Separatorschlüssel im
Elternknoten eingefügt (z.B. Kopie des kleinsten Schlüsselwertes
des „rechten“ Kindknotens oder geeigneter Wert zwischen beiden
Knoten)
delete: ähnlich zum B-Baum, jedoch
I
I
I
Löschen der Daten zunächst nur auf Blattebene
bei Unterlauf: entweder Ausgleich mit Nachbarknoten oder
Vereinigen mit Nachbarknoten; ggf. Anpassen (Ausgleich) oder
Löschen (Vereinigen) des Separatorschlüssels
alternativ: Unterlauf akzeptieren und durch spätere inserts oder
Reorganisation auflösen
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–46
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Weitere Entwurfsentscheidungen für B+ -Baum
Schlüsselsuche im Knoten: sequenzielle Suche vs. binäre Suche
vs. Interpolation Search
Knotengröße: Maximieren der Anzahl der Vergleiche
(Knotennutzen) pro I/O-Zeiteinheit
Seitengröße
Sätze Knoten- I/O-Zeit Nutzen
(KB)
/ Seite
nutzen
(ms)
/ Zeit
4
143
≈7
5,020
1,427
16
573
≈9
5,080
1,804
64
2.294
≈11
5,320
2,098
128
4.588
≈12
5,640
2,157
256
9.175
≈13
6,280
2,096
1.024
36.700
≈15 10,120
1,498
4.096 146.801
≈17 25,480
0,674
Literatur: G. Graefe: Modern B-Tree Techniques, Foundations and
Trends in Databases, 2010.
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–47
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Weitere Entwurfsentscheidungen für B+ -Baum /2
Knotengröße: bei großen Puffern kann großer Teil der inneren
Knoten im Puffer gehalten werden
größere Knoten (im
MB-Bereich) sinnvoll
Verzögern des Splits bei Überlaufbehandlung: Ausgleichen mit
Nachbarknoten soweit möglich; verbessert Auslastung der Knoten
zusätzliche Verweise zwischen Knoten
I
I
z.B. zwischen inneren Knoten der gleichen Ebene, zu Elternknoten,
etc.
ermöglichen Konsistenzchecks, aber erschweren Sperren für
Nebenläufigkeitskontrolle
Konsistenzprüfung während der Traversierung
I
mögliche Inkonsistenzen durch Speicherfehler, konkurrierende
Änderungen + Implementierungsfehler, . . .
Cache-Optimierung: Knotenstruktur, Kompression (Präfix-/Suffix
Truncation)
Pointer Swizzling: zur Ersetzung der logischen Seitennummern
durch physische Adressen
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–48
Architektur von DBMS
Architekturen konkreter DBMS
Präfix-B-Baum
B-Baum über Zeichenkettenattribut
I
I
lange Schlüssel in inneren Knoten
hoher Speicherplatzbedarf
vollständige Schlüssel eigentlich nicht notwendig, da nur
„Wegweiser“
Idee: Verwaltung von Trennwerten
I
I
Präfix-B-Baum
in inneren Knoten nur Trennwerte, die lexikographisch zwischen
den Werten liegen
möglichst kurze Trennwerte, z.B. kürzester eindeutiger Präfix
Tho
Sara
Soren
Taddäus
Theo
Thomas
Tom
Zack
aber: Beispiel „Vandenberg“ und „Vandenbergh“
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–49
Architektur von DBMS
Architekturen konkreter DBMS
Mehr-Attribut-B-Baum
B-Baum ist eindimensionale Indexstruktur, jedoch können
mehrere Attribute als kompositer Schlüssel indexiert werden
Beispiel
create index NameIdx on KUNDE(Name, Vorname)
Datenstruktur
Meier§Klaus
Meier§Alex
Meier§Anne
Meier§Heinz
Meier§Karl
Meier§Nino
Meister§Anne
Meister§Karl
Pohl§Bernd
allerdings: Attribute werden bei partial-match-Anfragen nicht
gleich behandelt!
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–50
Architektur von DBMS
Hashverfahren
Hashverfahren
Schlüsseltransformation und Überlaufbehandlung
DB-Technik: Bildbereich entspricht Seiten-Adressraum
Dynamik: dynamische Hashfunktionen oder Re-Hashen
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–51
Architektur von DBMS
Hashverfahren
Grundprinzipien
Basis-Hashfunktion: h(k ) = k mod m
m möglichst Primzahl
Überlauf-Behandlung
I
I
I
I
Überlaufseiten als verkettete Liste
lineares Sondieren
quadratisches Sondieren
doppeltes Hashen
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–52
Architektur von DBMS
Hashverfahren
Hashverfahren für Datenbanken
Tamara
0
h
1
2
Arnie
Gunter
Jerry
Regis
Kay
Kai-Uwe
Andreas
Jerrie
Kai
Zuse
3
4
c Sattler / Saake
Gunther
Hastur
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–53
Architektur von DBMS
Hashverfahren
Operationen und Zeitkomplexität
lookup, modify, insert, delete
lookup benötigt maximal 1 + #B(h(w)) Seitenzugriffe
#B(h(w)) Anzahl der Seiten (inklusive der Überlaufseiten) des
Buckets für Hash-Wert h(w)
Untere Schranke 2 (Zugriff auf Hashverzeichnis plus Zugriff auf
erste Seite)
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–54
Architektur von DBMS
Hashverfahren
Statisches Hashen: Probleme
mangelnde Dynamik
Vergrößerung des Bildbereichs erfordert komplettes Neu-Hashen
Wahl der Hashfunktion entscheidend; Bsp.: Hash-Index aus 100
Buckets, Studenten über 6-stellige MATRNR (wird fortlaufend
vergeben) hashen
I
I
ersten beiden Stellen: Datensätze auf wenigen Seiten quasi
sequenziell abgespeichert
letzten beiden Stellen: verteilen die Datensätze gleichmäßig auf
alle Seiten
Sortiertes Ausgeben einer Relation schlecht
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–55
Architektur von DBMS
Dynamisches Hashen
Statisches vs. Dynamisches Hashen
statische Hash-Verfahren
I
Neu-Hashen bei steigender Auslastung
dynamische Hash-Verfahren
I
Hash-Verfahren mit dynamisch vergrösserbarem Bildbereich
F
I
meist Verdopplung des Bildbereichs...
oft in Verbindung mit zusätzlichem Index zur Adressierung von
Blöcken
lineares Hashen als Beispiel
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–56
Architektur von DBMS
Dynamisches Hashen
Lineares Hashen
Folge von Hash-Funktionen, die wie folgt charakterisiert sind:
I
I
hi : dom(Primärschlüssel) → {0, . . . , 2i × N} ist eine Folge von
Hash-Funktionen mit i ∈ {0, 1, 2, . . .} und N als Anfangsgröße des
Hash-Verzeichnisses
Wert von i wird auch als Level der Hash-Funktion bezeichnet
dom(Primärschlüssel) wird im folgenden als dom(Prim) abgekürzt
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–57
Architektur von DBMS
Dynamisches Hashen
Lineares Hashen /2
Für diese Hash-Funktionen gelten die folgenden Bedingungen:
I
I
hi+1 (w) = hi (w) für etwa die Hälfte aller w ∈ dom(Prim)
hi+1 (w) = hi (w) + 2i × N für die andere Hälfte
Bedingungen sind zum Beispiel erfüllt, wenn hi (w) als w
mod (2i × N) gewählt wird
I
Darstellung durch Bit-Strings, Hinzunahme eines Bits verdoppelt
Bildbereich
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–58
Architektur von DBMS
Dynamisches Hashen
Prinzip lineares Hashen
für ein w höchstens zwei Hash-Funktionen zuständig, deren Level
nur um 1 differiert, Entscheidung zwischen diesen beiden durch
Split-Zeiger
I
I
sp Split-Zeiger (gibt an, welche Seite als nächstes geteilt wird)
lv Level (gibt an, welche Hash-Funktionen benutzt werden)
Aus Split-Zeiger und Level läßt sich die Gesamtanzahl Anz der
belegten Seiten wie folgt berechnen:
Anz = 2lv + sp
Beide Werte werden am Anfang mit 0 initialisiert.
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–59
Architektur von DBMS
Dynamisches Hashen
Prinzip lineares Hashen /2
lv = 2
sp = 1
Seitennr.
h(w)
0
000
1
01
10101010
10110101
2
10
01010101
01011010
3
11
11111111
11111110
4
100
c Sattler / Saake
Seiten
Überlaufseiten
00011011
10011001
11111101
00100000
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–60
Architektur von DBMS
Dynamisches Hashen
Lookup
s := hlv (w);
if s < sp
then s := hlv +1 (w);
zuerst Hash-Wert mit der „kleineren“ Hash-Funktion bestimmen
liegt dieser unter dem Wert des Split-Zeigers ⇒ größere
Hash-Funktion verwenden
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–61
Architektur von DBMS
Dynamisches Hashen
Splitten einer Seite
1
2
3
Die Sätze der Seite (Bucket), auf die sp zeigt, werden mittels hlv +1
neu verteilt (ca. die Hälfte der Sätze wird auf Seite (Bucket) unter
Hash-Nummer 2lv ∗ N + sp verschoben)
Der Split-Zeiger wird weitergesetzt: sp := sp + 1;
Nach Abarbeiten eines Levels wird wieder bei Seite 0 begonnen;
der Level wird um 1 erhöht:
if sp = 2lv ∗ N then
begin
lv := lv + 1;
sp := 0
end;
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–62
Architektur von DBMS
Dynamisches Hashen
Beispiel nach Split
lv = 2
sp = 2
Seitennr.
h(w)
0
000
1
001
2
10
01010101
01011010
3
11
11111111
11111110
4
100
5
101
c Sattler / Saake
Seiten
Überlaufseiten
00011011
10011001
11111101
00100000
10101010
10110101
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–63
Architektur von DBMS
Dynamisches Hashen
Problem lineares Hashen
lv = 3
sp = 0
c Sattler / Saake
Seitennr.
h(w)
0
000
1
001
2
010
3
011
4
100
5
101
6
110
7
111
Seiten
Überlaufseiten
00011011
10011001
01010101
01011010
00100000
10101010
10110101
11111111
11111110
Datenbank-Implementierungstechniken
11111101
Letzte Änderung: 9. Mai 2017
4–64
Architektur von DBMS
Dynamisches Hashen
Erweiterbares Hashen
Problem: Split erfolgt an fester Position, nicht dort wo Seiten
überlaufen
Idee: binärer Trie zum Zugriff auf Indexseiten
Blätter unterschiedlicher Tiefe
I
I
Indexseiten haben Tiefenwert
Split erfolgt bei Überlauf
aber: Speicherung nicht als Trie, sondern als Array
I
entspricht vollständigem Trie mit maximaler Tiefe
F
“shared” Seiten als Blätter
I
Array der Grösse 2d für maximale Tiefe d
I
bei Überlauf: Indexgrösse muss möglicherweise verdoppelt werden!
F
erfordert nun nur einen Speicherzugriff!
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–65
Architektur von DBMS
Dynamisches Hashen
Erweiterbares Hashen /2
Ausgangslage:
I
Einfügen von 00111111 würde Überlauf bei erreichter maximaler
Tiefe erzeugen
Tiefe
d=2
Index
00
01
10
11
c Sattler / Saake
Seiten
00011011
00100000
2
01010101
01111010
2
10101010
10110101
2
11111111
11111110
2
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–66
Architektur von DBMS
Dynamisches Hashen
Erweiterbares Hashen /3
Verdopplung der Indexgrösse
Tiefe
Index
d=3
000
001
010
011
100
101
110
111
c Sattler / Saake
Seiten
00011011
00100000
2
01010101
01111010
2
10101010
10110101
2
11111111
11111110
2
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–67
Architektur von DBMS
Dynamisches Hashen
Erweiterbares Hashen /4
nun möglich: Split der Seite
Tiefe
d=3
Index
000
001
010
011
100
101
110
111
c Sattler / Saake
Seiten
00011011
00100000
2
01010101
01000000
3
10101010
10110101
2
11111111
11111110
2
01111010
3
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–68
Architektur von DBMS
Dynamisches Hashen
Spiral-Hashen
Problem: zyklisch erhöhte Wahrscheinlichkeit des Splittens
Lösung: unterschiedliche Dichte der Hashwerte
I
I
Interpretation der Bit-Strings als binäre Nachkommadarstellung
einer Zahl zwischen 0.0 und 1.0
Funktion von [0.0, 1.0] → [0.0, 1.0] so dass Dichte gleichmässig
verteilter Werte nahe 1.0 doppelt so gross ist wie nahe 0.0
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–69
Architektur von DBMS
Dynamisches Hashen
Spiral-Hashen /2
Umverteilung mittels Exponentialfunktion
Funktion exp(n)
exp(n) = 2n − 1
erfüllt die Bedingungen
I
insbesondere gilt 20 − 1 = 0 und 21 − 1 = 1
Hashfunktion exhash
exhash(k ) = exp(h(k )) = 2h(k ) − 1
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–70
Architektur von DBMS
Dynamisches Hashen
Spiral-Hashen /3
Wirkung der verwendeten Hashfunktion im Intervall 0.0 bis 1.0
n
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
c Sattler / Saake
2n − 1
0.0
0.0717735
0.1486984
0.2311444
0.3195079
0.4142136
0.5157166
0.6245048
0.7411011
0.866066
1.0
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–71
Architektur von DBMS
Dynamisches Hashen
Spiral-Hashen /4
Spiralförmiges Ausbreiten
I
Ausgangslage: 4 Seiten der Tiefe 2
c Sattler / Saake
11
00
10
01
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–72
Architektur von DBMS
Dynamisches Hashen
Spiral-Hashen /5
Spiralförmiges Ausbreiten
I
I
Split der Seite mit der höchsten Dichte
Ergebnis: 5 Seiten, davon 3 der Tiefe 2 und 2 der Tiefe 3
11
000
001
10
c Sattler / Saake
01
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–73
Architektur von DBMS
Cluster-Bildung
Cluster-Bildung
gemeinsame Speicherung von Datensätzen auf Seiten
wichtige Spezialfälle:
I
Ballung nach Schlüsselattributen
F
I
Bereichsanfragen und Gruppierungen unterstützen: Datensätze in
der Sortierreihenfolge zusammenhängend auf Seiten speichern ⇒
index-organisierte Tabellen oder geclusterten, dichtbesetzte
Primärindexe
Ballung basierend auf Fremdschlüsselattributen
Gruppen von Datensätzen, die einen Attributwert gemeinsam
haben, werden auf Seiten geballt (Verbundanfragen)
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–74
Architektur von DBMS
Cluster-Bildung
Indexorganisierte Tabellen
Tupel direkt im Index aufnehmen
allerdings dann durch häufigen Split TID unsinnig
weiterer Sekundärindex kann durch fehlenden TID dann aber
nicht angelegt werden (Ausnahme: Oracle mit „logischen“ TIDs)
etwa kein unique möglich
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–75
Architektur von DBMS
Cluster-Bildung
Cluster für Verbundanfragen
Verbundattribut: Cluster-Schlüssel
BestellNr
100
Bestelldatum
Kunde
Lieferdatum
15.04.98
Orion Enterprises
01.01.2001
BestellNr
123
Bestelldatum
Kunde
Lieferdatum
05.10.98
Kirk Enterpr.
31.12.1999
Position
Teil
Anzahl
Preis
Position
Teil
Anzahl
Preis
1
Aluminiumtorso
2
3145,67
1
Beamer
1
13145,67
2
Antenne
2
32,50
2
Energiekristall
2
32,99
3
Overkill
1
1313,45
3
Phaser
5
1313,45
4
Nieten
1000
0,50
4
Nieten
2000
1,00
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–76
Architektur von DBMS
Cluster-Bildung
Definition von Clustern
create cluster BESTELL_CLUSTER
(BestellNr int)
pctused 80 pctfree 5;
create table BESTELLUNG (
BestellNr int primary key, ...)
cluster BESTELL_CLUSTER (BestellNr);
create table BESTELL_POSITION (
Position int,
BestellNr int references BESTELLUNG,
...
constraint BestellPosKey
primary key (Position, BestellNr)
)
cluster BESTELL_CLUSTER (BestellNr);
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–77
Architektur von DBMS
Cluster-Bildung
Organisation von Clustern
Indexierte Cluster nutzen einen in Sortierreihenfolge
aufgebauten Index (z.B. B+ -Baum) über den Cluster-Schlüssel
zum Zugriff auf die Cluster
Hash-Cluster bestimmen den passenden Cluster mit Hilfe einer
Hashfunktion
Indexe für Cluster entsprechen normalen Indexen für den
Cluster-Schlüssel
statt Tupelidentifikatoren Einsatz von Cluster-Identifikatoren oder
direkte Speicheradressen (bei Hashverfahren)
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–78
Architektur von DBMS
Cluster-Bildung
Indexierte Cluster
Verwaltung der Daten in Sortierreihenfolge über Index (B-Baum)
Speicherung von Cluster-Identifikatoren anstelle von TIDs
create index BESTELL_CLUSTER_IDX
on cluster BESTELL_CLUSTER
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–79
Architektur von DBMS
Cluster-Bildung
Hash-Cluster
Identifikation des betroffenen Clusters über Hashfunktion
(Cluster-Schlüssel → Blockadresse)
create cluster BESTELL_CLUSTER (
BestellNr int)
pctused 80
pctfree 5
size 2k
hash is BestellNr
hashkeys 100000;
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–80
Architektur von DBMS
Physische Datendefinition in SQL-Systemen
Oracle: Datenorganisation
Standard-Index: B + -Baum
Indexorganisierte Tabellen: speichern Tupel direkt in den Blättern
eines B + -Baums
Clusterung mehrerer Relationen möglich; Cluster-Indexe als
B + -Baum oder als Hash-Index
Bitmap-Indexe: speichern Bit-Matrizen für Aufzählungsattribute
(siehe Data Warehouses); auch als Verbund-Indexe
Reverse Indexe: interpretieren die Bytes des Primärschlüssels in
umgekehrter Reihenfolge und brechen damit die Speicherung in
Sortierreihenfolge auf
Funktions-basierte Indexe
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–81
Architektur von DBMS
Physische Datendefinition in SQL-Systemen
Oracle: Datendefinition
Parameter für Tabellendefinition
create table tabelle ( ...)
pctfree 10 pctused 40
storage (
initial 10MB, next 2MB,
minextents 1, maxextents 20,
pctincrease 0, freelists 3 )
tablespace USER_TBLSPACE;
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–82
Architektur von DBMS
Physische Datendefinition in SQL-Systemen
Oracle: Datendefinition /2
initial, next: Größe des ersten bzw. der weiteren Extents
(Default: 5 Blöcke)
minextents, maxextents: Anzahl der mind. bzw. max. zu
allokierenden Extents
pctincrease: prozentuale Vergrößerung der nachfolgenden
Extents (0: gleich große Extents)
freelists: Anzahl der Freispeicherlisten (insb. für paralleles
Einfügen)
tablespace: Zuordnung zum Tablespace
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–83
Architektur von DBMS
Physische Datendefinition in SQL-Systemen
Oracle: Datendefinition /3
pctfree: Datenblockanteil, der nicht für insert-Operationen
genutzt werden soll (Reservebereich für update); Default 10
pctused: Grenze, bei der ein zuvor bis zu pctfree gefüllter
Block wieder für insert genutzt werden darf ; Default 40
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–84
Architektur von DBMS
Physische Datendefinition in SQL-Systemen
Oracle: Datendefinition /4
Free-Liste
PCTFREE
Kopf
Kopf
Kopf
Kopf
Kopf
Kopf
Kopf
Kopf
Freibereich
Freibereich
Freibereich
Freibereich
Freibereich
PCTUSED
Freibereich
Freibereich
Freibereich
Datenbereich
Datenbereich
Datenbereich
Datenbereich
Datenbereich
für INSERT verfügbare
DB-Blöcke
c Sattler / Saake
gefüllte
DB-Blöcke
Datenbank-Implementierungstechniken
ungenutzte
DB-Blöcke
Letzte Änderung: 9. Mai 2017
4–85
Architektur von DBMS
Physische Datendefinition in SQL-Systemen
Oracle: Datendefinition /5
Index-organisierte Tabellen
create table tabelle ( ...)
organization index
tablespace USER_TBLSPACE,
pctthreshold 20
overflow tablespace OVER_TBLSPACE;
I
I
pctthreshold: Threshold für Speicherung von nicht-indexierten
Attributen im Überlaufbereich (Wert: 1-50)
optional including: Festlegung der im Index aufzunehmenden
Attribute (alle weiteren → Überlaufbereich)
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–86
Architektur von DBMS
Physische Datendefinition in SQL-Systemen
SQL Server: Indexdefinition
create [ unique ]
[ clustered | nonclustered ] index name
on table-name ( ...)
[ with fillfactor = value, pad_index, ...]
nicht-geclusterter Index: nur Rowids in Blattseiten
geclusterter Index: Datensätze auf Blattseiten
fillfactor: frei zu haltender Platz für Blattseiten beim Aufbau
(pad_index auch für mittlere Seiten)
weitere spezielle Indexstrukturen:
I
I
Indexe auf berechneten Spalten
indexierte Sichten (geclusterter Index auf Sicht) ≡ materialisierte
Sicht
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–87
Architektur von DBMS
Physische Datendefinition in SQL-Systemen
Zusammenfassung
Dateiorganisation vs. Zugriffsverfahren
indexsequenzielle Organisation
B- Baum und Varianten
Hashverfahren
Clusterbildung
Literatur: „Datenbanken: Implementierungstechniken“, Kapitel 4
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 9. Mai 2017
4–88
Herunterladen