Title: Kapitel 4: Physikalische Datenorganisation
1Kapitel 4 Physikalische Datenorganisation
2Physikalische Datenorganisation
- Record Datensatz fester oder variabler Länge
mit Feldern bestimmten Typs - Block Speichereinheit im Hintergrundspeicher
(29 - 212 Bytes) - File Menge von Blöcken
- Pinned record Blockadresse Offset
- Unpinned record Blockadresse Recordschlüssel
- Blockadresse Tupelidentifikator
3Tupelidentifikator Verschieben innerhalb der
Seite
4Tupelidentifikator Verdrängen auf andere Seite
4052 Mathematische Logik
5Implementierung des E-R-Modells
- pro Entity ein Record mit den Attributen als
Datenfelder - pro Relationship ein Record mit den TIDs der
beteiligten Entities
6Speicher-Operationen
- INSERT Einfügen eines Records
- LOOKUP Suchen eines Records
- MODIFY Modifizieren eines Records
- DELETE Löschen eines Records
7Heap-File
- INSERT Record am Ende einfügen
- LOOKUP Gesamtes File durchsuchen
- MODIFY Record überschreiben
- DELETE Lösch-Bit setzen
8Hashing
- alle Records sind auf Buckets verteilt
- ein Bucket besteht aus einer verzeigerten Liste
von Blöcken - Bucketdirectory enthält Einstiegsadressen
- Hashfunktion (angewandt auf Schlüssel) liefert
zuständige Liste - Bei N Buckets bildet die Hashfunktion einen
Schlüssel auf eine Zahl zwischen 0 und N-1 ab. - Pro Datenrecord ein Frei/Belegt-Bit
9Beispiel für Hashorganisation (v mod 5)
10Beispiel für Hash-Funktion
Sei N die Anzahl der Buckets. Fasse den Schlüssel
v als k Gruppen von jeweils n Bits auf. Sei di
die i-te Gruppe als natürliche Zahl interpretiert
h(v) (dk dk-1 . . . d2 d1) mod N
11Hash-Operationen für Schlüssel v
- LOOKUPBerechne h(v) i. Lies den für i
zuständigen Directory-Block ein, und beginne bei
der für i vermerkten Startadresse mit dem
Durchsuchen aller Blöcke. - MODIFYFalls Schlüssel beteiligt DELETE und
INSERT durchführen. Andernfalls LOOKUP
durchführen und dann überschreiben. - INSERTZunächst LOOKUP durchführen. Falls Satz
mit v vorhanden Fehler. Sonst Freien Platz im
Block überschreiben und ggf. neuen Block
anfordern. - DELETEZunächst LOOKUP durchführen. Bei Record
Löschbit setzen.
12Beispiel für Hashorganisation
Paul einfügen
13Beispiel für Hashorganisation
Hashorganisation nach Einfügen von Paul
Kurt umbenennen nach Curdt
14Beispiel für Hashorganisation
Hashorganisation nach Umbenennen von Kurt in
Curdt
15Probleme beim Hashing
- Blocklisten werden immer länger
- Reorganisation erforderlich
- Keine Sortierung
- Keine Bereichsabfragen
16ISAM (Index sequential access method)
- Index-Datei mit Verweisen in die Hauptdatei.
- Index-Datei enthält Tupel lt Schlüssel,Blockadresse
gt,sortiert nach Schlüsseln. - Liegt lt v, a gt in der Index-Datei, so sind alle
Record-Schlüssel im Block, auf den a zeigt,
größer oder gleich v.
17ISAM-Operationen für Record mit Schlüssel v
- LOOKUP (für Schlüssel v)Suche in Index-Datei
den letzten Block mit erstem Eintrag v2 ? v.
Suche in diesem Block das letzte Paar (v3, a) mit
v3 ? v. Lies Block mit Adresse a und durchsuche
ihn nach Schlüssel v. - MODIFYZunächst LOOKUP. Falls Schlüssel an
Änderung beteiligt DELETE INSERT. Sonst
Record ändern, Block zurückschreiben. - INSERTZunächst LOOKUP. Falls Block noch Platz
für Record hat einfügen. Falls Block voll ist
Nachfolgerblock oder neuen Block wählen und Index
anpassen. - DELETEAnalog zu INSERT
18Beispiel für Indexorganisation
Index-Organisation Ausgangslage
Manfred einfügen
19Beispiel für Indexorganisation
Index-Organisation nach Einfügen von Manfred
20Sekundär-Index
Sekundärindex besteht aus Index-File mit
Einträgen der Form ltAttributwert, Adressegt.
21Sekundär-Index für Gewicht
22Beispiel zur physikalischen Speicherung
Gegeben seien 300.000 Records mit folgenden
Angaben
Platzbedarf pro Record 100 Bytes.
Die Blockgröße betrage 1024 Bytes.
23Fragen zur Zahl der Records
- Wieviel Daten-Records passen in einen zu 100
gefüllten Datenblock? - 1024 / 100 10
- Wieviel Daten-Records passen in einen zu 75
gefüllten Datenblock? - 10 0,75 7-8
- Wieviel Schlüssel / Adresspaare passen in einen
zu 100 gefüllten Indexblock? - 1.024 / (154) 53
- Wieviel Schlüssel / Adresspaare passen in einen
zu 75 gefüllten Indexblock? - 1.024 / (154)0,75 ? 40
24Heapfile versus ISAM
- Welcher Platzbedarf entsteht beim Heapfile?
- 300.000 / 10 30.000 Blöcke
- Wieviel Blockzugriffe entstehen im Mittel beim
Heapfile? - 30.000 / 2 15.000
- Welcher Platzbedarf entsteht im Mittel bei ISAM?
- 300.000 / 7,5 ? 40.000 zu 75 gefüllte
Datenblöcke - 40.000 / 40 ? 1.000 zu 75 gefüllte
Indexblöcke - Wieviel Blockzugriffe entstehen im Mittel bei
ISAM? - log2(1.000) 1 ? 11 Blockzugriffe
25B-Baum
- Jeder Weg von der Wurzel zu einem Blatt hat
dieselbe Länge. - Jeder Knoten außer der Wurzel und den Blättern
hat mindestens k Nachfolger. - Jeder Knoten hat höchstens 2 k Nachfolger.
- Die Wurzel hat keinen oder mindestens 2
Nachfolger.
26B-Baum-Adressierung
Ein Knoten wird auf einem Block gespeichert Ein
Knoten mit j Nachfolgern (j ? 2k)speichert j
Paare von Schlüsseln und Adressen (s1, a1), . . .
, (sj, aj). Es gilt s1 ? s2 ? . . . ? sj. Eine
Adresse in einem Blattknoten führt zum Datenblock
mit den restlichen Informationen zum zugehörigen
Schlüssel Eine Adresse in einem anderen Knoten
führt zu einem Baumknoten
27Einfügen in BBaum
eingefügt werden soll 45
28Einfügen in BBaum
eingefügt werden soll 45
Block anfordern
Überlaufblock füllen
29Einfügen in BBaum
eingefügt werden soll 45
Element einordnen
30Einfügen in BBaum
47
eingefügt werden soll 45
Vorgänger korrigieren
31Einfügen in BBaum
53
42
17
77
47
31
22
17
79
77
45
42
61
53
eingefügt wurde 45
32Sequenz für B-Baum mit k2
27 55 12 94 37 88 72 39 25 88 74 58
64
3327
27
3427 55
27
3527 55
27 55
3627 55 12
27 55
3727 55 12
12 27 55
3827 55 12 94
12 27 55
3927 55 12 94
12 27 55 94
4027 55 12 94 37
12 27 55 94
4127 55 12 94 37
12 27
55 94
4227 55 12 94 37
12 27 37
55 94
4327 55 12 94 37
12 55
12 27 37
55 94
4427 55 12 94 37 88
12 55
12 27 37
55 94
4527 55 12 94 37 88
12 55
12 27 37
55 88 94
4627 55 12 94 37 88 72
12 55
12 27 37
55 88 94
4727 55 12 94 37 88 72
12 55
12 27 37
55 72 88 94
4827 55 12 94 37 88 72 39
12 55
12 27 37
55 72 88 94
4927 55 12 94 37 88 72 39
12 55
12 27 37 39
55 72 88 94
5027 55 12 94 37 88 72 39 25
12 55
12 27 37 39
55 72 88 94
5127 55 12 94 37 88 72 39 25
12 37 55
12 27
37 39
55 72 88 94
5227 55 12 94 37 88 72 39 25
12 37 55
12 25 27
37 39
55 72 88 94
5327 55 12 94 37 88 72 39 25 91
12 37 55
12 25 27
37 39
55 72 88 94
5427 55 12 94 37 88 72 39 25 91
12 37 55 88
12 25 27
37 39
55 72
88 94
5527 55 12 94 37 88 72 39 25 91
12 37 55 88
12 25 27
37 39
55 72
88 91 94
5627 55 12 94 37 88 72 39 25 91 74
12 37 55 88
12 25 27
37 39
55 72
88 91 94
5727 55 12 94 37 88 72 39 25 91 74
12 37 55 88
12 25 27
37 39
55 72 74
88 91 94
5827 55 12 94 37 88 72 39 25 88 74 58
12 37 55 88
12 25 27
37 39
55 72 74
88 91 94
5927 55 12 94 37 88 72 39 25 88 74 58
12 37 55 88
12 25 27
37 39
55 58 72 74
88 91 94
6027 55 12 94 37 88 72 39 25 88 74 58 64
12 37 55 88
12 25 27
37 39
55 58 72 74
88 91 94
6127 55 12 94 37 88 72 39 25 88 74 58 64
12 37 72 88
12 25 27
37 39
72 74
88 91 94
55 58
6227 55 12 94 37 88 72 39 25 88 74 58 64
12 37 72 88
12 25 27
37 39
72 74
88 91 94
55 58 64
6327 55 12 94 37 88 72 39 25 88 74 58 64
12 37
55 72 88
12 25 27
37 39
55 58 64
72 74
88 91 94
6427 55 12 94 37 88 72 39 25 88 74 58 64
12 55
12 37
55 72 88
12 25 27
37 39
55 58 64
72 74
88 91 94
6527 55 12 94 37 88 72 39 25 88 74 58 64
12 55
12 37
55 72 88
12 25 27
37 39
55 58 64
72 74
88 91 94
Sequenz eingefügt
66Löschen in BBaum
Entferne 53
67Löschen in BBaum
Entferne 79
68Löschen in BBaum
Entferne 42
69Löschen in BBaum
Entferne 47
70Löschen in BBaum
Entferne 77
71Löschen in BBaum
Entferne 22
72Löschen in BBaum
61
31
17
73Fragen zum BBaum
- Wie groß ist k ?
- Blockgröße / (Schlüssel / Adresspaar-Größe)
- 1024 / (154) / 2 26
- Wieviel Söhne hat eine zu 50 gefüllte Wurzel ?
- 26
- Wieviel Söhne hat ein zu 75 gefüllter Knoten ?
- 39
- Wieviel zu 75 gefüllte Datenblöcke sind
erforderlich ? - 300.000 / 7,5 ? 40.000
74Platzbedarf BBaum
- Wieviel Blöcke belegt der BBaum ?
- Höhe Knoten Zeiger aus Knoten0 1 261 26 26
39 1.0142 2639 263939 39.546 - drei Ebenen reichen aus
- Platzbedarf 1 26 2639 39.546 ? 40.000
Blöcke - Wieviel Blockzugriffe sind erforderlich ?
- 4
75Hashing versus BBaum
- Welcher Platzbedarf entsteht beim Hashing, wenn
dieselbe Zugriffszeit erreicht werden soll wie
beim BBaum? - 4 Blockzugriffe 1 Directory-Blockzugriff 3
Datenblockzugriffe. - Buckets bestehen im Mittel aus 5 Blöcken.
- von 5 Blöcken sind 4 voll und der letzte halb
voll. - 4,5 10 45 Records pro Bucket
- 300.000 / 45 6666 Buckets erforderlich
- 6666 / (1024 / 4) 26 Directory-Blöcke
- Platzbedarf 26 5 6.666 33.356
76BBaum versus Hashing
BBaum Hashing Vorteile Dynamisch Schnell S
ortierung möglich platzsparend Nachteile Speicher
overhead keine Sortierung kompliziert Neuorgani
sation