Synch.modul Datenbanken - Kapitel 4, v2 mit - fbi.h

Werbung
Synchronisationsmodul Informatik
Teil-Modul „Datenbanken“
Kapitel 4: Interne Datenorganisation
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 1
Interne Datenorganisation
Inhalte des Kapitels
• Aufbau eines Speichermediums, Pages und Pufferverwaltung
• Datenorganisation
• Index und B-Baum
• Hash-Indexe
Lernziele
• Die mit dem Zugriff auf den Sekundärspeicher verbundenen PerformanceProbleme sollen klar sein.
• Die grundlegende Idee der Pufferverwaltung sollte bekannt sein.
• Die interne Datenorganisation und unterschiedliche Zugriffsstrukturen sollen
in ihrer Implementierung und strategisch verstanden sein.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 2
Datensuche wertebasiert  heap-organisiert
Wo finde ich die
Prüfungsakte des
Studenten mit der
Matrikelnummer
685 234 ?
Irgendwo hier,
in einem
dieser
Ordner!
Suchstrategie? Aufwand?
Schestag
Synchronisationsmodul DB (Master DS)
C
Kapitel 4 - 3
Datensuche wertebasiert  sequenzielle Ablage
Klar, in welchem Ordner ich
die Prüfungsakte des
Studenten mit der
Matrikelnummer 685 234
finde!
685 201
685 210
685 211
685 220
685 221
685 230
685 231
685 240
...
...
C
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 4
Datensuche wertebasiert  mit direkter Referenz
Wo finde ich die
Prüfungsakte des
Studenten mit der
Matrikelnummer
685 234 ?
13
14
15
16
17
18
19
20
21
22
23
25
26
Du findest sie in
Ordner Nr. 18,
darin die 4.
Akte!
Woher weiß
er das so
genau???
Suchstrategie? Aufwand?
Schestag
24
Synchronisationsmodul DB (Master DS)
C
Kapitel 4 - 5
Aufbau eines Speichermediums – Pages
Magnetplattengerät
mehrere Platten
(Oberflächenspeicherung,
beidseitige Speicherung)
Spuren,
die konzentrische Kreise
um die Drehachse bilden
Lese- / Schreibkopf
a
b
Sektoren *)
(kleinste Einheiten, die
das DBMS adressieren und
auf die es zugreifen kann)
Zylinder
(unmittelbar übereinander liegende Spuren)
•
•
Pages (Datenseiten, Datenblöcke) nennt man die Zusammenfassung von
mehreren benachbarten Sektoren zu einer Verarbeitungseinheit (Größe
einer Page: zwischen 512 Bytes und 8k Bytes).
In einer Page können ein oder mehrere vollständige Datensätze, Teile von
Datensätzen oder Indexeinträge gespeichert werden.
*) Sektorenadresse: Angaben zu Zylinder, Plattenoberfläche und Nr. des Sektors auf der Spur
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 6
Aufbau eines Speichermediums – Pages
•
Zum Lesen der Daten muss das DBMS eine Page komplett in den Hauptspeicher laden. Eine Page ist die kleinste physische Einheit, die vom DBMS
in den Hauptspeicher geladen werden kann (und ist deshalb immer  der
kleinsten physischen Einheit, die das Betriebssystem mit einem Zugriff in
den Hauptspeicher laden kann).
 Pages sind grundlegende Einheiten für das Lesen und Transferieren
von Daten.
Adressierung von Datenblöcken (Pointer)
• Die Adressierung einer Page erfolgt über physische Adressen (relevant für
das Betriebssystem) und logische Adressen (relevant für das DBMS).
• Ein Pointer kann sich nicht nur auf eine Page beziehen, sondern auch auf
einen bestimmten Datensatz innerhalb einer Page. Man nennt einen
solchen Pointer dann auch Record-ID (RID):
RID = Adresse der Page + Aufsetzpunkt für den Datensatz innerhalb der Page
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 7
Zugriffszeiten
Größenordnung Zugriffszeiten
Beispiel: 100 Pages lesen
• Hauptspeicher: 100 x 100 ns =
10.000 ns = 0,01 ms
• Plattenspeicher: 100 x 10 ms =
1.000 ms = 1 s
Zugriffslücke: 10 5
1-10ns
Register
10-100ns
Cache
100-1000ns
Hauptspeicher
10 ms
Plattenspeicher
sec
Archivspeicher
Quelle: Kemper:2004
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 8
Pufferverwaltung
•
•
Puffer: ausgezeichneter Bereich des Hauptspeichers. Er ist
in Pufferrahmen gegliedert, jeder Pufferrahmen kann eine Page (Seite) der
Platte aufnehmen.
DB-Buffer
B‘
C‘
A‘
D
B
A‘
Einlagerung
D
Auslagerung
E‘
...
F
G
•
E‘
F
Jede Seite, die von der Platte in den DB-Puffer gelesen wird, wird dort so
lange wie möglich vorgehalten, um unnötige I/Os auf die Platte zu vermeiden (vgl. auch Kapitel 7, Transaktionsmanagement).
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 9
Interne Datenorganisation
 Aufbau eines Speichermediums, Pages und Pufferverwaltung
•
Datenorganisation
•
Index und B-Baum
•
Hash-Indexe
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 10
Interne Datenorganisation
•
Die interne Datenorganisation sollte so eingerichtet sein, dass die Anzahl
der Plattenzugriffe bei der Recherche oder der Manipulation von Daten
minimal ist.
•
Hierfür wird die Anordnung der gespeicherten Daten auf der Platte so
optimiert, dass der gewünschte Datensatz durch möglichst wenige I/Os
gefunden wird. Eine solche Anordnung nennen wir Speicherstruktur.
•
Verschiedene Speicherstrukturen haben verschiedene PerformanceCharakteristika, die für jeweils unterschiedliche Applikationen / Datenbankbereiche von Vorteil sein können.
•
Eine optimale Datenorganisation kann nur erzielt werden, wenn die
Datenstrukturen, statistische Informationen zum Datenvolumen sowie
Ausprägungen innerhalb der Wertebereiche bekannt sind und berücksichtigt
werden ( Optimizer, Systemkatalog, Kapitel 5).
Es gibt keine Speicherstruktur,
die optimal für alle Applikationen ist!
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 11
Datenorganisation
•
Beim Zugriff auf die Daten einer Datenbank spielt neben dem MindestFüllgrad der Pages auch die Organisationsform der zugrunde liegenden
Daten eine Rolle.
•
Unter der Organisationsform von Daten versteht man die Form des
Abspeicherns und die Möglichkeiten des Zugriffs.
•
Folgende Organisationsformen werden vorgestellt:
- Heap-Organisation mit linearer Suche,
- Sequenzielle Organisation mit binärer Suche,
- Indexsequentiellen Organisation, bei der eine sequenzielle DateiOrganisationsform durch eine Indexdatei über dem Sortierattribut der
sequenziellen Datei ergänzt wird.
•
Im Folgenden wird generell von „Dateien“ gesprochen, im Zusammenhang
mit relationalen DBMS kann man sich jeweils Tabellen vorstellen.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 12
Die Heap-Organisation – lineare Suche
•
Die Daten der Datei liegen in unsortierter Form vor:
ISBN
Titel
VerlagID
EJahr
3011
1013
2899
1012
3012
…
YYY
Klm
mmm
Abc
rst
…
500
420
310
500
289
1977
2005
1980
2002
2010
…
Preis €
49,90
12,95
19,80
24,80
68,80
…
Heap-Organisation
einer Datei
Record ID
Record 1
Record 2
Record 3
Record 4
Record 5
…
•
Die Daten werden fortlaufend in der Reihenfolge ihrer Eingabe gespeichert.
In dieser Reihenfolge werden sie auch wieder gelesen und verarbeitet.
•
Der Aufwand für (Lineare) Suche in einer unsortierten Datei mit n
Datensätzen beträgt O(n), d.h. im „worst case“ müssen alle Datensätze
durchlaufen werden, bis der gesuchte Satz gefunden ist.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 13
Die Sequenzielle Organisation – binäre Suche
•
Verbesserungsansatz gegenüber linearer Suche: Die Datei wird nach einem
Schlüssel, z.B. nach dem Primärschlüssel, sortiert abgespeichert, mehrere
Records werden in einer Page untergebracht, und die Adresse der Pages in
einem Pointer verfügbar gemacht.
Primär
Schlüssel
Schestag
ISBN
Titel
1011
1012
1013
…
2889
…
3011
3012
…
XXX
Abc
Klm
VerlagID
500
500
420
EJahr
Preis €
Page ID
1997
2002
2005
78,90
24,80
12,95
Page 1
mmm
310
1980
19,80
YYY
rst
…
500
289
1977
2010
…
49,90
68,80
…
Synchronisationsmodul DB (Master DS)
…
Page 2
…
Page 3
…
Kapitel 4 - 14
Die Sequenzielle Organisation – binäre Suche
 Vorteil: Binäre Suche ist möglich, in der jeweiligen Page müssen die Daten
jedoch immer noch sequentiell gelesen werden. Der Aufwand für Binäre
Suche in einer sortierten Datei mit n Records beträgt O(log2(n)) – vgl. auch
Anhang A.
ABER:
 Das Update in einer Datei, die nach einem Schlüssel sortiert ist, ist mit
erheblichen Aufwänden verbunden, insbesondere wenn beim Einfügen oder
Löschen von Datensätzen Pagegrenzen überschritten werden!
 Die Sortierreihenfolge nach einem bestimmten Attribut lässt sich i. d. R.
innerhalb einer Datei nicht mit der Sortierreihenfolge nach einem anderen
Attribut vereinbaren.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 15
Interne Datenorganisation
 Aufbau eines Speichermediums, Pages und Pufferverwaltung
 Datenorganisation
•
Index und B-Baum
•
Hash-Indexe
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 16
Die Indexdatei
•
•
•
Zu Attributen, die in einer Datei besonders oft als Selektionskriterien
verwendet werden, wird eine zweite, sortierte Datei angelegt, die zu jeder
Ausprägung des Attributes den Pointer auf die entsprechende Page bzw.
den zugehörigen Record enthält. Diese Datei nennt man Index(-datei).
Als Plural im Kontext mit Datenbanken spricht man häufig von Indexen.
Eine Indexdatei hat im Prinzip eine „2-spaltige Struktur“:
Wert des indizierten Attributes
auf- oder absteigend
sortiert
Schestag
physische Adresse
PID oder RID
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 17
Die Indexdatei
Ein Index ist immer sortiert nach dem ihm zugeordneten Attribut und
deshalb geeignet, binäre Suche zu unterstützen.
Index für die eindeutigen Werte
des Attributes ISBN
ISBN
1000
2000
…
6000
…
Schestag
Page ID
1
2
…
6
…
Index für die nicht notwendig eindeutigen
Werte des Attributes Erscheinungsjahr EJahr
EJahr
…
1958
1958
…
1959
…
…
2011
…
Record ID
…
2384
3887
…
2922
…
…
8734
…
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 18
Die Indexdatei
Ein Index erhöht die Geschwindigkeit beim Suchen,
aber er reduziert die Geschwindigkeit bei Updates.
•
Bei jedem Hinzufügen eines neuen Records oder beim Ändern der
entsprechenden Attribute wird auch unmittelbar der Index modifiziert.
Diese Updates erfolgen analog den entsprechenden Vorgängen in
sortierten Dateien.
•
Zu einer Datei kann es beliebig viele Indexe geben. Ein Index kann auch
aus mehreren Attributen eines Records zusammengesetzt sein.
Der Begriff des Index ist nicht spezifisch für relationale DBMS
sondern spielt auch in DBMS auf der Grundlage anderer
Datenbankmodelle eine wichtige Rolle als Zugriffspfad!
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 19
Beispiele von Indexen
•
Index auf dem Attribut VerlagID für die Buch-Datei
VerlagID
(Index)
Schestag
Buch-Datei
(Daten)
Dekor
(Index)
310
3011 YYY
1977
500
...
Fisch
420
1013 Klm
2005
420
...
Fisch
500
1011 XXX
1997
500
...
Rose
500
1012 Abc
2002
500
...
Rose
500
2889 mmm
1980
310
...
Rose
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 20
Beispiele von Indexen
•
Index auf dem Attribut VerlagID und auf dem Attribut Erscheinungsjahr
(EJahr) für die Buch-Datei
VerlagID
(Index)
Schestag
Buch-Datei
(Daten)
EJahr
(Index)
310
3011 YYY
1977
500
...
1977
420
1013 Klm
2005
420
...
1980
500
1011 XXX
1997
500
...
1997
500
1012 Abc
2002
500
...
2002
500
2889 mmm
1980
310
...
2005
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 21
Beispiele von Indexen
•
Index über die zwei Attribute VerlagID und Erscheinungsjahr (EJahr) für
die Buch-Datei
VerlagID | EJahr
(Index)
Schestag
Buch-Datei
(Daten)
310 | 1980
3011 YYY
1977
500
...
420 | 2005
1013 Klm
2005
420
...
500 | 1977
1011 XXX
1997
500
...
500 | 1997
1012 Abc
2002
500
...
500 | 2002
2889 mmm
1980
310
...
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 22
Dünne und dichte Indexe
Man unterscheidet grundsätzlich zwei Arten von Indexen:
•
dünner Index: die Schlüsselwerte sind eindeutig, und die zugehörigen
Tupel werden sortiert gespeichert.
•
dichter Index: die Schlüsselwerte sind eindeutig, aber die zugehörigen
Tupel werden unsortiert gespeichert (Heap-Organisation), oder die
Schlüsselwerte können in der Datei mehrmals vorkommen.
 Welche Schlüsselwerte einer Relation sind immer eindeutig, welche können
mehrmals vorkommen?
 Inwiefern kann man bei eindeutigen Schlüsselwerten und zugehörigen,
sortiert gespeicherten Tupeln die Anzahl der Einträge im Index reduzieren?
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 23
Dünner Indexe
•
Dünner Index auf dem Primärschlüsselfeld ISBN der Buch-Datei. Der
Index enthält jeweils den ersten Schlüssel, der in einer Page vorkommt.
ISBN (Index)
ISBN
PID
1000
2000
3000
4000
….
PID 1
PID 2
PID 3
PID 4
….
Wo findet man
den Datensatz mit
ISBN 2889?
Schestag
PID 1
1000|….1011|XXX|1997, …
1012|Abc|2002|… 1013|Klm
|2005| …
PID 2
2000|….2001|… 2002|… 2003|
…
PID 3
3000|….3011|YYY|1977|
… 3012|rst|2010|…
3013| …
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 24
Dünner Indexe
Dünner Index (non dense index)
Die Index-Datei enthält nicht für jeden gespeicherten Record einen Eintrag,
sondern nur für jede Page (Datenblock).
 Die Index-Datei hat weniger Datensätze als die eigentliche Datei, sie ist
also „dünner“!
Der Index enthält jeweils den ersten (oder letzten) Schlüssel, der in einer
Page vorkommt und dessen Adresse (Pagepointer). Um die RID des
gesuchten Record in der Index-Page zu finden, muss diese Page im
Hauptspeicher noch sequentiell durchsucht werden.
 Dünne Indexe werden im allgemeinen für die Primärschlüssel der Records
einer Datei erstellt (Primärindex).
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 25
Dichter Indexe
Dichter Index (dense index)
Die Index-Datei enthält für alle Records einen eigenen Index-Eintrag.
 Die Index-Datei hat genau so viele Datensätze, wie die eigentliche Datei,
sie ist also genau so „dicht“ wie die eigentliche Datei!
Die Suche im dichten Index erfolgt analog einer Suche in sortierten Dateien.
Der Index enthält jeweils den Schlüsselwert und die Adresse des
zugehörigen Records (Record-pointer, RID).
Dichte Indexe werden im allgemeinen für die Sekundärschlüssel der
Records einer Datei erstellt (Sekundärindex).
In relationalen Datenbanken ist es i. d. R. sinnvoll, auf einen
Fremdschlüssel einen Sekundärindex zu legen (vgl. auch Kapitel 5).
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 26
Indexsequenzielle Dateiorganisation
 Eine sequenzielle Datei-Organisationsform kann durch eine Indexdatei
über dem Sortierattribut der sequenziellen Datei ergänzt wird.
 Man spricht dann von indexsequenzieller Dateiorganiation.
 Eine indexsequentielle Datei kann man sich als Baum mit mindestens
zwei Ebenen vorstellen:
 Blattebene: Hauptdatei mit den gespeicherten Datensätzen
 Die Knoten in allen anderen Ebenen des Baumes sind Indexdateien
•
Man spricht von einem n-stufigen Index, wenn es eine Hauptdatei und n
Indexdateien gibt  Der ISBN-Index auf Folie 4-24 ist ein 1-stufiger Index.
•
Der i+1-te Index zeigt auf den i-ten Index.
•
Wird eine Indexdatei selbst zu groß, so kann diese wieder indexsequenziell
verwaltet werden.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 27
Indexiert-nichtsequenzieller Zugriffspfad
 Ist keine Sortierung in der Hauptdatei gegeben, so kann man dennoch
einstufige oder mehrstufige, indexiert-nichtsequenzielle Zugriffspfade
aufbauen.
 Die höheren Indexstufen sind dann wieder indexsequentiell organisiert.
 Unabhängig von der zugrunde liegenden Dateiorganisation der
Hauptdatei gilt:
Eine Indizierung von Indexstufen kann beliebig oft weiter geführt werden.
Man erhält dann eine Baumstruktur, die in der Praxis i.d.R.
als B-Baum (balancierter Baum, Bayer-Baum) realisiert wird,
um eine Homogenität der Zugriffspfade zu erreichen.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 28
Indexe und Bäume
•
Ein mehrstufiger Index als Baumstruktur besitzt die folgenden Komponenten:
–
Die unterste Ebene eines mehrstufigen Index (Indexbaum) nennt man Blätter des Baumes
(sie entsprechen den Records der Datei).
Die Adressverweise auf bestimmte Pages des Speichers nennt man Knoten.
Der oberste Knoten in der Hierarchie, der keinen Vorgänger mehr hat, heißt Wurzel.
Für einen Knoten x nennen wir einen darunter liegenden Knoten Sohn, einen darüber
liegenden Knoten Vater (bzw. child und parent).
–
–
–
65
32
97
Schestag
Synchronisationsmodul DB (Master DS)
122
112
109
103
108
102
117
130
119
125
132
106
99
93
80
95
74
81
89
68
78
53
87
71
66
70
72
45
47
51
58
36
38
40
39
35
33
16
20
48
43
37
24
14
13
11
10
5
8
1
3
17
27
7
114
76
115
41
75
12
Kapitel 4 - 29
B-Baum
•
•
•
Ein B-Baum (Bayer-Baum (1972), balancierter Baum) ist ein mehrstufiger
Index, bei dem alle Pfade von der Wurzel zu den Blättern gleich lang sind,
ein B-Baum ist also immer höhenbalanciert.
Im Datenbankbereich sind die Knoten der Suchbäume zugeschnitten auf
die Seitenstruktur des DBMS.
Ein B-Baum der Ordnung m hat die folgenden Eigenschaften:
– Alle Knoten sind gleich groß (aber sie müssen nicht alle immer gleich viele
Einträge haben!).
– Jeder Knoten enthält höchstens 2m Records.
– Jeder Knoten - mit Ausnahme der Wurzel - enthält mindestens m Records.
– Die Wurzel enthält maximal 2m Records und mindestens einen Record.
– Jeder Record besteht aus einem Schlüssel- und einem nicht-Schlüssel-Anteil.
– Ein Knoten - mit Ausnahme von Wurzel und Blättern - hat n+1 Nachfolgeknoten,
wenn er n Schlüssel enthält (m  n  2m).
n=3
a
b
c
a
Schestag
Synchronisationsmodul DB (Master DS)
a, b
b, c
c
Kapitel 4 - 30
Seitenformat des B-Baums
Seitenformat:
Z0
S1
Z1
D1
S2
Z2
D2
S3
…
Sm
Zm
Dm
frei
Zi = Zeiger auf Seite der nächsten Stufe
Si = Schlüssel (Zugriffsattributwert)
Di = Daten des Satzes oder Verweis auf den Satz (bzw. die Sätze)
d.h. materialisiert oder referenziert
Ein B-Baum ist als Primär- und Sekundärindex geeignet.
Um in einem B-Baum mit n Knoten der Ordnung m einen Wert zu suchen,
muss man höchstens logm (n)-mal auf die Platte bzw. den Index zugreifen.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 31
Variante B+-Baum
Der B+-Baum ist die in der Praxis am häufigsten eingesetzte Variante des
B-Baumes: Änderungsoperationen sind effizienter, die Baumhöhe ist verringert.
Die Daten befinden sich nur auf den Blattseiten.
Die inneren Knoten enthalten nur Schlüssel und Zeiger auf die nachfolgende
Seite der nächsten Stufe:
• Seitenformat innere Knoten:
Z0
S1
Z1
S2
Z2
S3
…
Sm
Zm
frei
Zi = Zeiger auf Seite der nächsten Stufe
Si = Schlüssel
•
Seitenformat Blattknoten:
V
S1
D1
S2
D2
S3
…
Sm
Dm
frei
N
Si = Schlüssel
Di = Daten des Satzes oder Verweis auf den Satz
V = Vorgänger-Zeiger
N = Nachfolger-Zeiger
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 32
B-Baum vs. B+-Baum
13 Schulz …
14 Meier
•
…
keine Daten(-verweise) in den inneren Knoten
 es passen mehr Einträge auf eine Seite
 Reduktion der Höhe des Baumes
 weniger Seitenzugriffe bei lookup, insert, delete
aber jetzt immer logm(n)
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 33
B- und B+-Bäume
•
B- und B+-Bäume sind geeignet sowohl für
– Punktanfragen ("Prodnr = 101322“) als auch für
– Bereichsanfragen ("Preis 50.00 und Preis  200.00").
•
In einem B- bzw. B+-Baum werden neben dem Suchen (Lookup) alle Arten
von Update-Operationen ausgeführt (insert, update, delete). Bei UpdateOperationen muss jeweils für die Balanciertheit des Baumes gesorgt
werden.  vgl. Hörsaalübung
 Algorithmen zum Suchen, Einfügen und Löschen in B-Bäumen:
vgl. Anhang B.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 34
Index inclusion – Anmerkung zu Praktikum 2
Warum kommt es im angegebenen
Fall zu einer Index inclusion?
Wie kann man diese Index inclusion
verhindern?
 ???
/*==============================================================*/
/* Table: BOOT
*/
/*==============================================================*/
create table BOOT (
BOOTSTYP
VARCHAR2(20)
not null,
BOOTSNR
INTEGER
not null,
LETZTEWARTUNG
DATE,
constraint PK_BOOT primary key (BOOTSTYP, BOOTSNR)
);
Schestag
/*==============================================================*/
/* Index: BOOTSTYPZUORDNUNG_FK
*/
/*==============================================================*/
create index BOOTSTYPZUORDNUNG_FK on BOOT (
BOOTSTYP ASC
);
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 35
Interne Datenorganisation
 Aufbau eines Speichermediums, Pages und Pufferverwaltung
 Datenorganisation
 Index und B-Baum
•
Hash-Indexe
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 36
Hash-Indexe
•
Nachteil der Datenverwaltung über B-Bäume: In der Regel sind beim
Durchlaufen der Pfade mehrere I/Os auf externen Speicher notwendig.
 Eine alternative Methode zur Datenverwaltung mit Hilfe von Indexen sind
die Hash-Indexe:
•
•
Die Record-Adressen werden über einen geeigneten Algorithmus, der
Hash-Funktion, aufgrund des Schlüsselwertes unmittelbar berechnet.
Eine Hash-Funktion sollte
– „einfach“ zu berechnen sein, und
– die Menge der Schlüsselwerte möglichst gleichmäßig und zufällig auf
die Menge der verfügbaren Adressen abbilden.
Schlüsselmenge (Keys k)
Menge der
Speicherplätze (Adressen)
logisch
{1011, 1012, 1013, ...
1021, 1022, 1023, ...
3011, 3012, ...}
Schestag
physisch
Hash-Funktion h(k)
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 37
Hash-Indexe
•
•
Voraussetzung : Datenbestände, die relativ „statisch“ sind, und bei denen
möglichst selten Löschoperationen auftreten.
Hash-Indexe eignen sich also nicht für sehr „dynamische“ Datenbestände.
Die „bekannteste“ Hash-Funktion ist die Modulo-Funktion (DivisionsRest-Verfahren):
h(k) = k mod p
k=Schlüsselwert, p=Anzahl der vorhandenen Adressen
•
Die Modulo-Funktion lässt sich nur auf ganzzahlige numerische Schlüssel
anwenden. Alphanumerische oder dezimale Schlüssel müssen so umgewandelt werden, dass sie ebenfalls in ganzzahliger, numerischer Form
vorliegen.
•
Beispiel:
Schestag
p=1000, k={27, 489, 1.020, 2.027, ...}

Synchronisationsmodul DB (Master DS)
h(27)
= 27
h(489) = 489
h(1.020) = 20
h(3027) = 27 ...
Kapitel 4 - 38
Hash-Indexe
Kollisionsbehandlung
(1) Für jede Adresse wird ein Überlaufbereich vorgesehen, und gleiche HashFunktionswerte werden durch Pointer linear verkettet.
 Suche nach einem Record entspricht der Berechnung des HashFunktionswertes und anschließender sequentieller Suche nach dem
Schlüssel.
Nachteil: Dieses Verfahren benötigt u. U. viel Speicherplatz und ist häufig
ineffizient in der Suche.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 39
Hash-Indexe
Kollisionsbehandlung
(2) Offene Hash-Verfahren
Im Fall einer Kollision wird für den betroffenen Record durch Anwenden
einer zweiten Hash-Funktion eine Ersatzadresse ermittelt. Dieses Verfahren
kann – falls nötig – beliebig oft fortgeführt werden, und Adressen aus
kollidierenden Bereichen können durch lineare Listen verkettet werden
(Kollisionsketten).
Die Berechnung des ersten Hash-Funktionswertes bezeichnet man als
Streuen, die Berechnung der Ersatzwerte als Sondieren.
Beispiel:
hi(k)=(h(k)+c·i) mod m, c=const., lineares Sondieren
hi(k)=(h(k)+i2) mod m,
quadratisches Sondieren
 Sind Hash-Indexe für Punkt- und Bereichsabfragen gleichermaßen
geeignet?
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 40
Zusammenfassung
•
Persistente Daten werden auf dem Plattenspeicher in Form von Pages
verwaltet.
•
Der DB-Puffer ist geeignet, einmal geladene Pages im Hauptspeicher
vorzuhalten, um den Zugriff auf die Daten zu beschleunigen.
•
Indexe (B-Bäume und Hash-Indexe) sind Zugriffsstrukturen, die dazu
geeignet sind, wertebasierte Suche performant zu unterstützen.
•
Primärindexe sind geeignet für Primärschlüsselspalten, Sekundärindexe für
Fremdschlüsselspalten.
•
Ein strategisches Unterscheidungsmerkmal für unterschiedliche Zugriffsstrukturen ist ihre Eignung für Punkt- und / oder Bereichsabfragen.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 41
Vorkenntnisse: Ergebnisse des Eingangstests*  1
Fragen und Antworten aus dem Bereich „Zugriffspfade “
richtig
1. Was ist ein Index? (3/11)
falsch
im Prinzip
richtig, aber …
Ein Index wird verwendet, um die Performance einer DB zu
erhöhen. Grundsätzlich ist damit eine effiziente
Speicherstruktur gemeint. Ohne Index müsste bei einer
Abfrage die komplette Datenbank durchlaufen werden, bis
der Treffer erreicht wird.
Der Index enthält alle möglichen wählbaren Daten.
Eine Positionsbezeichnung innerhalb eines Vektors/Arrays.
Meistens als natürliche Zahl ausgewiesen.
Wie würden Sie die Antwort nach Kapitel 4 formulieren?
* insgesamt 11 Teilnehmer
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 42
Vorkenntnisse: Ergebnisse des Eingangstests  2
richtig
2. Was ist ein B-Baum? (1/11)
falsch
im Prinzip
richtig, aber …
Ein binomialer Baum. Jeder Knoten hat zwei Kind-Knoten.
Wie würden Sie die Antwort nach Kapitel 4 formulieren?
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 43
Datenbanken

Einführung

Semantische Datenmodellierung

Relationenmodell

Interne Datenorganisation
5.
SQL - Structured Query Language
6.
Prozedurale Spracherweiterungen von SQL, Stored Procedure
und Trigger, JDBC
7.
Transaktionsmanagement
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 44
Anhang A: Binäre Suche in Arrays
Der Algorithmus
a[n] sei ein geordnetes Array mit n Elementen, d.h. anfangs 0 = min
(Index-Minimum),
n-1 = max (Index-Maximum).
x sei der gesuchte Wert. x wird gesucht im Bereich a[min] ... a[max].
Wähle einen Index pos zwischen min und max, idealerweise [(min+max)/2], wobei
[ ] die Gauss-Klammer darstellt.
Folgende Schritte werden wiederholt durchgeführt:
• a[pos] > x  suche weiter im Bereich a[min] ... a[pos-1]
• a[pos] < x  suche weiter im Bereich a[pos+1] ... a[max]
• a[pos] = x  Der Wert x befindet sich im Array bei Index pos.
Der Wert x ist nicht im Array enthalten, wenn min > max erreicht wird.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 45
Anhang A: Binäre Suche in Arrays
•
Wählt man für den Start-Index pos zwischen min und max den Wert „in der Mitte“, so
halbiert sich der Aufwand für die Lösung des Problems bei jedem Schritt.
 eine Verdoppelung der Arraygröße bewirkt beim linearen Suchen eine Verdoppelung
des Aufwandes, beim binären Suchen eine Erhöhung des Aufwandes um einen
Schritt!
•
Einen Bereich von n Elementen kann man höchstens log2(n) mal halbieren.*)
•
Zu jeder natürlichen Zahl n gibt es eine natürliche Zahl m, sodass n zwischen den
Zahlen 2m und 2m+1 liegt, d.h. 2m  n  2m+1 .
*) Zur Erinnerung: log2(n) = y : n = 2y, z.B. log2(32) = 5, denn 25 = 32.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 46
Anhang A: Binäre Suche in Arrays
•
Beispiel
Es sei n=19  m =4, denn 24 = 16 < 19 < 32 = 24+1 = 25.
 Um in einem Array mit 19 Elementen einen vorgegebenen Wert zu finden, benötigen
wir maximal 4 Schritte:
n=19
n=9
n=4
n=2
n=1
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 47
Anhang A: Binäre Suche in Arrays
•
Die Komplexität f(n) eines Algorithmus ist i.d.R. funktional abhängig von einer
„Leitgröße“ n.
– Beim linearen Suchen können wir lineare Abhängigkeit beobachten,
– beim binären Suchen dagegen logarithmische Abhängigkeit:
best case
lineare Suche
1
binäre Suche
1
average case
worst case
n/2
log2(n)-1
n
log2(n)
•
Es ist schwierig, den genauen Aufwand zu bestimmen. Man schätzt deshalb für große n den
Aufwand durch eine Funktion g(n) ab, sodass gilt: f(n)  c ·g(n), mit einer Konstanten c.
Man sagt, „f(n) ist höchstens von der Ordnung g(n)“ und schreibt f(n) = O(g(n)) („O-Notation“).
Es gilt also: n/2 entspricht O(n), n entspricht O(n),
log2(n)-1 entspricht O(log(n)) und log2(n) entspricht O(log(n)).
•
Häufige Komplexitäten von Algorithmen sind:
konstant, linear, polynomial (alle Komplexitäten der Form n2-quadratisch, n3-kubisch,
n4,...), logarithmisch, log-linear und exponentiell.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 48
Anhang B: Suche in B-Bäumen
Suchen eines Schlüssels s im B-Baum
1. Prüfe, beginnend bei der Wurzel, ob s im gerade betrachteten Knoten x enthalten ist.
Falls ja  fertig.
Falls nein  2.
2. Prüfe, ob x ein Blatt (= Knoten ohne “Söhne”) ist.
Falls ja  erfolgloses Ende der Suche.
Falls nein  3.
3. Stelle fest, zwischen welchen Schlüsseln si-1 und si des Knotens x der Schlüssel s liegt
(bzw. ob s < s1 oder s > sk ist) und setze die Suche danach mit 1. beim Knoten
x.sohn[i] fort.
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 49
Anhang B: Einfügen in B-Bäume
Das Einfügen eines Schlüssels s geschieht grundsätzlich in den Blättern.
1. Durchlaufe den B-Baum mit dem neu einzutragenden Schlüssel wie beim Suchen, bis
das Blatt gefunden wird, wo der Schlüssel einzutragen ist. Die Zahl der Schlüssel je
Knoten (mit Ausnahme der Wurzel) muss zwischen m und 2m liegen.
2.a Anzahl der Schlüssel im Knoten < 2m
 Einfügen erfolgreich beendet.
2.b Anzahl der Schlüssel im Knoten = 2m
 es entsteht ein Überlauf, da das Blatt nach Einfügen 2m + 1 Schlüssel enthalten
würde.
 Teile den Knoten in zwei Knoten zu je m Schlüsseln. Der mittlere Schlüssel des
Knoten wird vom „Vater“ aufgenommen; die beiden Zeiger rechts und links dieses
Schlüssels im „Vater“ zeigen dann auf das alte und das neue darunterliegende Blatt.
Läuft auch der Vaterknoten über, so muss dieser ebenfalls in zwei Knoten aufgeteilt
werden etc.
3. Läuft die Wurzel über, dann wird sie aufgespalten und eine neue Wurzel angelegt.
 Der B-Baum ist dann um eine Stufe gewachsen.
B-Bäume wachsen von den Blättern zur Wurzel hin!
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 50
Anhang B: Löschen in B-Bäumen
1. Suche den Knoten x, in dem der Schlüssel s enthalten ist.
2. x ist ein Blatt  lösche s (ggf. muß ein Unterlauf bereinigt werden, s.u.),
andernfalls 3.
3. Ermittle den nächstgrößeren Schlüssel s’ zu s in einem Blatt des Baumes.
4. Ersetze s durch s’ und lösche s’ im Blatt x’. Enthält das Blatt x’ weiterhin  m
Schlüssel, so ist das Löschen beendet; andernfalls 5.
5. In x’ stehen nur noch (m-1) Schlüssel, man spricht von einem Unterlauf.
Fasse x’ und einen benachbarten Knoten x’’, der den selben Vater wie x’ hat, zu
einem neuen Knoten zusammen und übernehme dabei denjenigen Schlüssel aus
dem Vaterknoten, dessen beide Zeiger auf die benachbarten Knoten gezeigt haben.
6.a Ist der neue Knoten zu groß, muß er entsprechend dem Überlaufverfahren (s.
Einfügen) wieder in zwei gleichgroße Knoten aufgeteilt werden, wobei der mittlere
Schlüssel vom „Vater“ aufgenommen wird.
6.b Ist der „Vater“ beim Zusammenfassen von x’ und x’’ zu klein geworden, so muß
auch er mit einem benachbarten Knoten zusammengefaßt werden etc.
Dieser Prozeß kann sich bis zur Wurzel fortsetzen. Enthält die Wurzel vor dem Zusammenfassen nur einen Schlüssel, so verringert sich die Höhe des Baumes um 1.
Die Höhe eines B-Baumes kann sich beim Löschen verringern!
Schestag
Synchronisationsmodul DB (Master DS)
Kapitel 4 - 51
Herunterladen