Dateiorganisation und Zugriffsstrukturen

Werbung
Teil IV
Dateiorganisation und Zugriffsstrukturen
Dateiorganisation und Zugriffsstrukturen
Überblick
1
Klassifikation der Speichertechniken
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–1
Dateiorganisation und Zugriffsstrukturen
Überblick
1
Klassifikation der Speichertechniken
2
Statische Verfahren
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–1
Dateiorganisation und Zugriffsstrukturen
Überblick
1
Klassifikation der Speichertechniken
2
Statische Verfahren
3
Baumverfahren
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 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: 13. April 2017
4–1
Dateiorganisation und Zugriffsstrukturen
Überblick
1
Klassifikation der Speichertechniken
2
Statische Verfahren
3
Baumverfahren
4
Hashverfahren
5
Cluster-Bildung
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–1
Dateiorganisation und Zugriffsstrukturen
Überblick
1
Klassifikation der Speichertechniken
2
Statische Verfahren
3
Baumverfahren
4
Hashverfahren
5
Cluster-Bildung
6
Physische Datendefinition in SQL-Systemen
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 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: 13. April 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: 13. April 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
Arten von Anfragen, die durch Dateiorganisationsformen und
Zugriffspfade effizient unterstützt werden können
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 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: 13. April 2017
4–5
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Dateiorganisation vs. Zugriffspfad
Dateiorganisationsform: Form der Speicherung der internen
Relation
I
I
I
I
unsortierte Speicherung von internen Tupeln: Heap-Organisation
sortierte Speicherung von internen Tupeln: sequenzielle
Organisation
gestreute Speicherung von internen Tupeln: Hash-Organisation
Speicherung von internen Tupeln in mehrdimensionalen Räumen:
mehrdimensionale Dateiorganisationsformen
üblich: Sortierung oder Hashfunktion über Primärschlüssel
sortierte Speicherung plus zusätzlicher Primärindex über
Sortierattributen: index-sequenzielle Organisationsform
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–6
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Dateiorganisation vs. Zugriffspfad /2
Zugriffspfad: über grundlegende Dateiorganisationsform
hinausgehende Zugriffsstruktur, etwa Indexdatei
I
I
K ↑:
I
I
I
Einträge (K , K ↑): K der Wert eines Primär- oder
Sekundärschlüssels, K ↑ Datensatz oder Verweis auf Datensatz
K : Suchschlüssel, genauer: Zugriffsattribute und
Zugriffsattributwerte
ist Datensatz selbst: Zugriffspfad wird Dateiorganisationsform
ist Adresse eines internen Tupels: Primärschlüssel;
Sekundärschlüssel mit (K , K ↑1 ), . . . , (K , K ↑n ) für denselben
Zugriffsattributwert K
ist Liste von Tupeladressen: Sekundärschlüssel; nachteilig ist
variable Länge der Indexeinträge
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–7
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Klassifikation [Härder Rahm 2001]
Zugriffsverfahren
Schlüsselvergleich
fortlaufender
Vergleich
physisch
fortlaufend
sequenz.
Listen
logisch
fortlaufend
verkettete
Listen
sequenziell
Schlüsseltransformation
baumstrukturierter
Vergleich
ganzer
Schlüssel
binäre
Suchbäume
Teilschlüssel
Mehrwegebäume
statisch
Kollisionsfrei
Digitalbäume
baumstrukturiert
dynamisch
Überlaufbereich
statische
Bereiche
dynamische
Erweiterung
dynamische
Bereiche
gestreut
Dateiorganisation
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–8
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Dünn- vs. dichtbesetzter Index
dünnbesetzter Index: nicht für jeden Zugriffsattributwert K ein
Eintrag in Indexdatei
I
I
interne Relation sortiert nach Zugriffsattributen: im Index reicht ein
Eintrag pro Seite ⇒ Index verweist mit (K1 , K1 ↑) auf
Seitenanführer, nächste Indexeintrag (K2 , K2 ↑)
Datensatz mit Zugriffsattributwert K? mit K1 ≤ K? < K2 ist auf Seite
von K1 ↑ zu finden
indexsequenzielle Datei: sortierte Datei mit dünnbesetztem Index
als Primärindex
dichtbesetzter Index: für jeden Datensatz der internen Relation
ein Eintrag in Indexdatei
Primärindex kann dichtbesetzter Index sein, wenn
Dateiorganisationsform Heap-Datei, aber auch bei Sortierung
(geclusterter Index)
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–9
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Geclusterter vs. nicht-geclusterter Index
geclusterter Index: in der gleichen Form sortiert wie interne
Relation
I
Bsp.: interne Relation KUNDEN nach Kundennummern sortiert ⇒
Indexdatei über dem Attribut KNr üblicherweise geclustert
nicht-geclusterter Index: anders organisiert als interne Relation
I
Bsp.: über Name ein Sekundärindex, Datei selbst nach KNr sortiert
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: 13. April 2017
4–10
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Geclusterter vs. nicht-geclusterter Index /2
mehrstufiger Index
...
...
geclusteter
Index
Hauptdatei
...
...
mehrstufiger Index
nichtgeclusterter
Index
...
...
Hauptdatei
...
c Sattler / Saake
Datenbank-Implementierungstechniken
...
Letzte Änderung: 13. April 2017
4–11
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Schlüsselvergleich vs. -transformation
Schlüsselvergleich: Zuordnung von Primär- oder
Sekundärschlüsselwerten zu Adressen in Hilfsstruktur wie
Indexdatei
I
Bsp.: indexsequenzielle Organisation, B-Baum, KdB-Baum, . . .
Schlüsseltransformation: berechnet Tupeladresse aufgrund
Formel aus Primär- oder Sekundärschlüsselwerten (statt
Indexeinträgen nur Berechnungsvorschrift gespeichert)
I
Bsp.: Hashverfahren
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–12
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: 13. April 2017
4–13
Dateiorganisation und Zugriffsstrukturen
Klassifikation der Speichertechniken
Anforderung an Speichertechniken
dynamisches Verhalten
Effizienz beim Einzelzugriff (Schlüsselsuche beim Primärindex)
Effizienz beim Mehrfachzugriff (Schlüsselsuche beim
Sekundärindex)
Ausnutzung für sequentiellen Durchlauf (Sortierung, geclusterter
Index)
Clustering
Anfragetypen: exact-match, partial-match, range queries
(Bereichsanfragen)
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–14
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: 13. April 2017
4–15
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: 13. April 2017
4–16
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Heap-Organisation: Datenstruktur
Heap = record of
firstpage: HeapPage ;
/* erste Seite des Heaps
lastpage: HeapPage ;
/* letzte Seite des Heaps
end;
HeapPage = record of
nextpage: HeapPage ;
/* nächste Heap-Seite
nrows: int ;
/* Anzahl der Datensätze
payload: array [1 .. nrows ] of LoadType ;
/* Datensätze
end;
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
*/
*/
*/
*/
*/
4–17
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: 13. April 2017
4–18
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Heap-Operationen: insertHeap
Input: Datensatz newRow
Data: Heap-Datei heap
current ← heap.lastpage;
if current.nrows = max_nrows then
/* Letzte Heap-Seite ist voll
current.nextpage ← new HeapPage;
/* Nächste Heap-Seite zeigt auf eine neue, leere Heap-Seite
current ← current.nextpage ;
/* Leere Seite laden
current.nrows ← 0 ;
/* Reihenanzahl initialisieren
heap.lastpage ← current
end
current.nrows ++ ;
if current.nrows > 1 then
/* Aktuelle Seite ist nicht leer
newpayload ← new payload [1..nrows ] ;
/* Neuen Payload mit einer zusätzlichen Spalte erzeugen
newpayload [1..nrows-1] ← current.payload [1..nrows-1];
/* Alte Reihen in den neuen Payload übertragen
end
current.payload ← newpayload ;
/* Aktuellen Payload überschreiben
current.payload [nrows ] ← newRow;
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
*/
*/
*/
*/
*/
*/
*/
*/
4–19
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: 13. April 2017
4–20
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Sequenzielle Speicherung: Datenstruktur
SeqPage = record of
nrows: int;
keys: array [1 .. nrows ] of KeyType;
payload: array [1 .. nrows ] of LoadType;
nextpage: SeqPage;
end;
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–21
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: 13. April 2017
4–22
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: 13. April 2017
4–23
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: 13. April 2017
4–24
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Indexsequenzielle Speicherung: Datenstruktur
ISAM = record of
firstindexpage: IndexPage;
lastindexpage: IndexPage;
end;
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–25
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: 13. April 2017
4–26
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: 13. April 2017
4–27
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Indexseite: Datenstruktur
IndexPage = record of
nrows: int;
keys: array [1 .. nrows ] of KeyType;
DataPages: array [1 .. nrows ] of SeqPage;
nextpage: IndexPage;
end;
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–28
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: 13. April 2017
4–29
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: 13. April 2017
4–30
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Operationen: lookupISAM
Input: Suchschlüssel k
Data: Indexsequenzielle Datei ISAM
Result: Datenelement result zu k oder NOT_FOUND wenn nicht gefunden
finished ← FALSE;
result ← NOT_FOUND;
current ← ISAM.firstpage;
/* Speichert die sequenzielle Seite des letzten Durchgangs
*/
lastcurrent ← ISAM.firstpage.DataPages [1];
;
/* Speichert den Schlüssel des letzten Durchgangs */
lastkeys ← ISAM.firstpage.keys [1];
i ← 1;
...
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–31
Dateiorganisation und Zugriffsstrukturen
Statische Verfahren
Operationen: lookupISAM /2
...
repeat
/* Suche passenden Eintrag für den Schlüssel
if i > current.nkeys ;
/* Ende der aktuellen Indexseite erreicht
then
if current = ISAM.lastpage then
/* Schlüssel auf der letzten Seite oder nicht gefunden
result ← findKeyOnSeqPage(lastcurrent,k ); finished ← TRUE;
else
current ← current.nextpage; i ← 1 ;
/* Nächste Indexseite laden
end
else
if lastkeys <= k and keys [i] > k then
/* Eintrag zu k steht auf der vorherigen Seite
result ← findKeyOnSeqPage(lastcurrent,k ) ; finished ← TRUE;
else
lastcurrent ← current.DataPages [i];
lastkeys ← current.keys [i + +];
end
end
until finished = TRUE;
return result;
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
*/
*/
*/
*/
*/
4–32
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: 13. April 2017
4–33
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: 13. April 2017
4–34
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: 13. April 2017
4–35
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: 13. April 2017
4–36
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: 13. April 2017
4–37
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: 13. April 2017
4–38
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: 13. April 2017
4–39
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: 13. April 2017
4–40
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: 13. April 2017
4–41
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
Mehrweg-Bäume
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–42
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: 13. April 2017
4–43
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: 13. April 2017
4–44
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Eigenschaften des B-Baumes /2
B-Baum als Primär- und Sekundärindex geeignet
Datensätze direkt in die Indexseiten ⇒ Dateiorganisationsform
Verweist man aus Indexseiten auf Datensätze in den Hauptseiten
⇒ Sekundärindex
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–45
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: 13. April 2017
4–46
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Knoten eines B-Baums
20
42
67
99
Zeiger auf Knoten
Zeiger auf Tupel (TID)
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–47
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Knotentyp eines B-Baums
BTreeNode = record of
nkeys: int ;
/* Anzahl der Schlüssel < 2n
ptrs: array [0 .. nkeys ] of PageNum ;
/* Verweise auf Kindknoten
keys: array [1 .. nkeys ] of KeyType ;
/* Schlüssel
payload: array [1 .. nkeys ] of LoadType ;
/* Daten bzw. TIDs
end;
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
*/
*/
*/
*/
4–48
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
40
35
38
41
42
45
Letzte Änderung: 13. April 2017
46
4–49
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Suchen in B-Bäumen: lookupBTree
Input: Suchschlüssel k
Data: Wurzelknoten root
Result: Datenelement result zu k oder NOT_FOUND wenn nicht gefunden
finished ← FALSE;
result ← NOT_FOUND;
node ← root;
repeat
/* Suche Schlüssel im aktuellen Knoten
i ← findKeyInNode(node, k );
if i = NO_PAGE then
/* Schlüssel nicht gefunden
finished ← TRUE
else if node.keys [i] = k then
result ← node.payload [i];
finished ← TRUE;
else
/* Verweis auf nächsten Kindknoten verfolgen
node ← loadNodeFromPage(node.ptrs [i])
end
until finished = TRUE;
return result;
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
*/
*/
*/
4–50
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Suchen in B-Bäumen: findKeyInNode
Input: Suchschlüssel k , B-Baum-Knoten n
Result: Index des Schüssels oder NO_PAGE wenn nicht gefunden
for i ← 1 to n.nkeys do
if n.keys[i] = k then
return i;
else if n.keys[i] > k then
return i-1;
end
end
return NO_PAGE;
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–51
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: 13. April 2017
4–52
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: 13. April 2017
4–53
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: 13. April 2017
4–54
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
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–55
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
Löschen in B-Bäumen /2
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: 13. April 2017
4–56
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: 13. April 2017
4–57
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: 13. April 2017
4–58
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: 13. April 2017
4–59
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
B+ -Baum
in der Praxis am häufigsten eingesetzte Variante des B-Baumes:
effizientere Änderungsoperationen, Verringerung der Baumhöhe
in inneren Knoten nur noch Zugriffsattributwert und Zeiger auf
nachfolgenden Seite der nächsten Stufe
nur Blattknoten enthalten neben Zugriffsattributwert die Daten
(Datensätze der Hauptdatei bzw. Verweise darauf)
Knoten der Blattebene sind untereinander verkettet für effiziente
Unterstützung von Bereichsanfragen
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–60
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
B+ -Baum: Blattebene in der Hauptdatei
100
23
3
Tom
7
13
c Sattler / Saake
42
67
99
220
110
150
Tigger
23
Maik
Muggel
Ann
Maier
35
May
Flower
Tim
Tahler
40
Dirk
Mejer
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–61
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: 13. April 2017
4–62
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
B+ -Baum: Datenstrukturen
BPlusTreeNode = 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;
BPlusLeaveNode = record of
nkeys: int;
keys: array [1 .. nkeys ] of KeyType;
payload: array [1 .. nkeys ] of LoadType ;
nextleave: PageNum;
end;
c Sattler / Saake
Datenbank-Implementierungstechniken
*/
/* Daten bzw. TIDs */
Letzte Änderung: 13. April 2017
4–63
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: 13. April 2017
4–64
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
B∗ - und B# -Baum
Problem beim B-Baum: häufiges Aufspalten von Seiten und
geringe Speicherplatzausnutzung von nahe 50%
B∗ -Baum, B# -Baum:
I
I
statt Aufteilen von Seiten bei Überlauf zunächst Neuverteilen der
Datensätze auf eventuell nicht voll ausgelastete Nachbarseiten
falls nicht möglich: zwei Seiten in drei aufteilen (ermöglicht
durchschnittliche Speicherplatzausnutzung von 66% statt 50%)
c Sattler / Saake
Datenbank-Implementierungstechniken
Letzte Änderung: 13. April 2017
4–65
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
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: 13. April 2017
4–66
Dateiorganisation und Zugriffsstrukturen
Baumverfahren
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: 13. April 2017
4–67
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–68
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–69
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–70
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–71
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–72
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–73
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–74
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–75
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–76
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–77
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–78
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–79
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–80
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–81
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–82
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–83
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–84
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–85
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–86
Dateiorganisation und Zugriffsstrukturen
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: 13. April 2017
4–87
Herunterladen