DB - Kapitel 4 - fbi.h

Werbung
fbi
h_da
Datenbanken
Kapitel 4: Interne Datenorganisation
Schestag
Datenbanken (Bachelor)
Kapitel 4 - 1
Interne Datenorganisation
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 2
Datensuche wertebasiert  sequentiell
fbi
h_da
Wo finde ich die
Prüfungsakte des
Studenten mit der
Matrikelnummer
685 234 ?
Irgendwo hier,
in einem
dieser
Ordner!
Suchstrategie? Aufwand?
Schestag
Datenbanken (Bachelor)
C
Kapitel 4 - 3
Datensuche wertebasiert  mit „Zugriffsstruktur“
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 4
Datensuche wertebasiert  mit direkter Referenz
fbi
h_da
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
Datenbanken (Bachelor)
C
Kapitel 4 - 5
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 6
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 7
Zugriffszeiten
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 8
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 9
Interne Datenorganisation
fbi
h_da
 Aufbau eines Speichermediums, Pages und Pufferverwaltung
•
Datenorganisation
•
Index und B-Baum
•
Hash-Indexe
Schestag
Datenbanken (Bachelor)
Kapitel 4 - 10
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 11
fbi
h_da
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.
•
Im folgenden werden die Formen der
- sequentiellen Organisation mit linearer Suche,
- sequentiellen Organisation mit binärer Suche,
- der index-sequentielle Organisation (ISAM)
bis hin zum Begriff des Index in einem Datenbanksystem untersucht und mit
ihren Vor- und Nachteilen dargestellt.
•
Im Folgenden wird generell von „Dateien“ gesprochen, im Zusammenhang
mit relationalen DBMS kann man sich jeweils Tabellen vorstellen.
Schestag
Datenbanken (Bachelor)
Kapitel 4 - 12
Die sequentielle Organisation – lineare Suche
•
•
•
fbi
h_da
Liegt eine Datei in unsortierter Form vor, so erfordert die Suche von Daten
das sequentielle Lesen der Datei:
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
…
Sequentielle Organisation
einer Datei
Record ID
Record 1
Record 2
Record 3
Record 4
Record 5
…
Die Daten werden fortlaufend (sequentiell) 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
Datenbanken (Bachelor)
Kapitel 4 - 13
Die sequentielle Organisation – binäre Suche
•
fbi
h_da
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
…
Datenbanken (Bachelor)
…
Page 2
…
Page 3
…
Kapitel 4 - 14
Die sequentielle Organisation – binäre Suche
fbi
h_da
 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
Datenbanken (Bachelor)
Kapitel 4 - 15
Interne Datenorganisation
fbi
h_da
 Aufbau eines Speichermediums, Pages und Pufferverwaltung
 Datenorganisation
•
Index und B-Baum
•
Hash-Indexe
Schestag
Datenbanken (Bachelor)
Kapitel 4 - 16
Die index-sequentielle Organisation
•
•
•
fbi
h_da
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.
Als Plural im Kontext mit Datenbanken spricht man häufig von Indexen.
Eine Index-Datei hat im Prinzip eine „2-spaltige Struktur“:
Wert des indizierten Attributes
auf- oder absteigend
sortiert
Schestag
physische Adresse
PID oder RID
Datenbanken (Bachelor)
Kapitel 4 - 17
fbi
h_da
Die index-sequentielle Organisation
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
…
Datenbanken (Bachelor)
Record ID
…
2384
3887
…
2922
…
…
8734
…
Kapitel 4 - 18
fbi
h_da
Die index-sequentielle Organisation
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.
Schestag
Datenbanken (Bachelor)
Kapitel 4 - 19
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 20
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 21
fbi
h_da
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
...
Datenbanken (Bachelor)
Kapitel 4 - 22
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 23
fbi
h_da
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
….
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| …
Wo findet man
den Datensatz mit
ISBN 2889?
Schestag
Datenbanken (Bachelor)
Kapitel 4 - 24
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 25
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 26
Indexed-sequentiell Access Method
fbi
h_da
•
Eigenschaften der index-sequentiellen Organisation
Indexed-sequentiell Access Method – ISAM
– Ein Index einer Datei wird immer nach den Schlüsselwerten sortiert
gespeichert.
– Pro Indexeintrag bzw. Schlüsselwert sind die Adressen der Pages und
Records auf dem Speichermedium angegeben.
– Bei dünnen, pageorientierten Indexen muss die Page sequentiell
durchsucht werden, um die RID gesuchten Records zu finden.
• Nachteil: Mit zunehmender Dateigröße nimmt die Performance von
Anfrage- und Update-Operationen ab, insbesondere bei dichten Indexen.
 Lösungsansatz: Wird die Index-Datei selbst zu groß, so kann man für den
Index wieder einen Index anlegen. Man erhält so einen mehrstufigen
Index.
• Eine solche Indizierung 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
Datenbanken (Bachelor)
Kapitel 4 - 27
fbi
h_da
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
Datenbanken (Bachelor)
117
130
119
125
132
109
112
102
103
108
93
80
99
74
122
106
95
47
51
58
68
81
89
53
78
45
87
71
66
70
72
39
43
36
38
33
16
20
35
48
40
37
24
14
13
11
10
5
8
1
3
17
27
7
114
76
115
41
75
12
Kapitel 4 - 28
fbi
h_da
B-Bäume
•
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.
•
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
Datenbanken (Bachelor)
a, b
b, c
c
Kapitel 4 - 29
fbi
h_da
B-Bäume
•
Um in einem B-Baum mit n Knoten der Ordnung m einen Wert zu suchen,
muss man höchstens logm+1(n)-mal auf die Platte bzw. den Index zu-greifen.
•
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-Baum werden neben dem Suchen alle Arten von UpdateOperationen ausgeführt (insert, update, delete). Bei Update-Operationen
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
Datenbanken (Bachelor)
Kapitel 4 - 30
Index inclusion – Anmerkung zu Praktikum 2
fbi
h_da
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
);
Datenbanken (Bachelor)
Kapitel 4 - 31
Interne Datenorganisation
fbi
h_da
 Aufbau eines Speichermediums, Pages und Pufferverwaltung
 Datenorganisation
 Index und B-Baum
•
Hash-Indexe
Schestag
Datenbanken (Bachelor)
Kapitel 4 - 32
fbi
h_da
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.
Menge der
Speicherplätze (Adressen)
Schlüsselmenge (Keys k)
logisch
{1011, 1012, 1013, ...
1021, 1022, 1023, ...
3011, 3012, ...}
Schestag
physisch
Hash-Funktion h(k)
Datenbanken (Bachelor)
Kapitel 4 - 33
fbi
h_da
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, ...}
Datenbanken (Bachelor)

h(27)
= 27
h(489) = 489
h(1.020) = 20
h(3027) = 27 ...
Kapitel 4 - 34
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 35
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 36
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 37
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 38
Anhang A: Binäre Suche in Arrays
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 39
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 40
Anhang A: Binäre Suche in Arrays
•
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 41
fbi
h_da
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
n/2
log2(n)-1
worst case
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
Datenbanken (Bachelor)
Kapitel 4 - 42
Anhang B: Suche in B-Bäumen
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 43
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 44
Anhang B: Löschen in B-Bäumen
fbi
h_da
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
Datenbanken (Bachelor)
Kapitel 4 - 45
Herunterladen