Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Kapitel 4: Physikalische Datenorganisation

Ähnliche Präsentationen


Präsentation zum Thema: "Kapitel 4: Physikalische Datenorganisation"—  Präsentation transkript:

1 Kapitel 4: Physikalische Datenorganisation

2 Physikalische Datenorganisation
Record Datensatz fester oder variabler Länge mit Feldern bestimmten Typs Block Speichereinheit im Hintergrundspeicher ( Bytes) File Menge von Blöcken Pinned record Blockadresse + Offset Unpinned record Blockadresse + Recordschlüssel Blockadresse + Tupelidentifikator

3 Tupelidentifikator: Verschieben innerhalb der Seite
4711 2 5001 Grundzüge ... Ethik ... TID 1 3 Seite 4711 4052 Mathematische Logik ... Logik ...

4 Tupelidentifikator: Verdrängen auf andere Seite
4052 Mathematische Logik ... 4711 2 5001 Grundzüge ... Ethik ... TID 1 3 Seite 4711 4812 3 1 2 3 Seite 4812 4052 Mathematische Logik für Informatiker... 4052 Mathematische Logik

5 Implementierung des E-R-Modells
pro Entity ein Record mit den Attributen als Datenfelder pro Relationship ein Record mit den TIDs der beteiligten Entities

6 Speicher-Operationen
INSERT: Einfügen eines Records LOOKUP: Suchen eines Records MODIFY: Modifizieren eines Records DELETE: Löschen eines Records

7 Heap-File INSERT: Record am Ende einfügen
LOOKUP: Gesamtes File durchsuchen MODIFY: Record überschreiben DELETE: Lösch-Bit setzen

8 Hashing 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

9 Beispiel für Hashorganisation (|v| mod 5)
1 Peter Thomas Melanie Ute Kurt Fritz Susanne Eberhard Karl Beate Eva 2 3 4

10 Beispiel 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: dk dk-1 d2 d1 h(v) = (dk + dk d2 + d1) mod N

11 Hash-Operationen für Schlüssel v
LOOKUP: Berechne 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. MODIFY: Falls Schlüssel beteiligt: DELETE und INSERT durchführen. Andernfalls: LOOKUP durchführen und dann überschreiben. INSERT: Zunächst LOOKUP durchführen. Falls Satz mit v vorhanden: Fehler. Sonst: Freien Platz im Block überschreiben und ggf. neuen Block anfordern. DELETE: Zunächst LOOKUP durchführen. Bei Record Löschbit setzen.

12 Beispiel für Hashorganisation
1 Peter Thomas Melanie Ute Kurt Fritz Susanne Eberhard Karl Beate Eva 2 3 4 Hashorganisation: Ausgangslage h(s) = |s| mod 5 Paul einfügen

13 Beispiel für Hashorganisation
1 Peter Thomas Melanie Ute Kurt Fritz Susanne Eberhard Karl Beate Eva 2 3 4 Paul Hashorganisation: nach Einfügen von Paul Kurt umbenennen nach Curdt

14 Beispiel für Hashorganisation
Peter 1 Thomas Melanie Ute Fritz Susanne Eberhard Karl Beate Curdt Eva 2 3 4 Paul Hashorganisation: nach Umbenennen von Kurt in Curdt

15 Probleme beim Hashing Blocklisten werden immer länger
Reorganisation erforderlich Keine Sortierung Keine Bereichsabfragen

16 ISAM (Index sequential access method)
Index-Datei mit Verweisen in die Hauptdatei. Index-Datei enthält Tupel < Schlüssel,Blockadresse>, sortiert nach Schlüsseln. Liegt < v, a > in der Index-Datei, so sind alle Record-Schlüssel im Block, auf den a zeigt, größer oder gleich v.

17 ISAM-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. MODIFY: Zunächst LOOKUP. Falls Schlüssel an Änderung beteiligt: DELETE + INSERT. Sonst: Record ändern, Block zurückschreiben. INSERT: Zunä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. DELETE: Analog zu INSERT

18 Beispiel für Indexorganisation
Index-Organisation: Ausgangslage Manfred einfügen

19 Beispiel für Indexorganisation
Index-Organisation: nach Einfügen von Manfred

20 Sekundär-Index Sekundärindex besteht aus Index-File mit Einträgen der Form <Attributwert, Adresse>.

21 Sekundär-Index für Gewicht
68 71 72 78 83

22 Beispiel zur physikalischen Speicherung
Gegeben seien Records mit folgenden Angaben: Attribut Bytes Pers-Nr. 15 Vorname 15 Nachname 15 Straße 25 PLZ 5 Ort 25 Platzbedarf pro Record: Bytes. Die Blockgröße betrage 1024 Bytes.

23 Fragen 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 / (15+4) = 53 Wieviel Schlüssel / Adresspaare passen in einen zu 75% gefüllten Indexblock? 1.024 / (15+4)*0,75  40

24 Heapfile versus ISAM Welcher Platzbedarf entsteht beim Heapfile?
/ 10 = Blöcke Wieviel Blockzugriffe entstehen im Mittel beim Heapfile? / 2 = Welcher Platzbedarf entsteht im Mittel bei ISAM? / 7,5  zu 75% gefüllte Datenblöcke + /  zu 75% gefüllte Indexblöcke Wieviel Blockzugriffe entstehen im Mittel bei ISAM? log2(1.000) + 1  11 Blockzugriffe

25 B*-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.

26 B*-Baum-Adressierung
Ein Knoten wird auf einem Block gespeichert Ein Knoten mit j Nachfolgern (j  2•k) 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

27 Einfügen in B*Baum eingefügt werden soll: 45 31 22 17 77 42 79 47 61
53 eingefügt werden soll: 45

28 Einfügen in B*Baum eingefügt werden soll: 45 Block anfordern
31 22 17 77 42 79 47 61 53 eingefügt werden soll: 45 Block anfordern Überlaufblock füllen

29 Einfügen in B*Baum eingefügt werden soll: 45 Element einordnen 31 22
17 77 42 79 47 61 53 eingefügt werden soll: 45 Element einordnen

30 Einfügen in B*Baum eingefügt werden soll: 45 Vorgänger korrigieren 31
22 17 77 42 79 45 61 53 47 eingefügt werden soll: 45 Vorgänger korrigieren

31 Einfügen in B*Baum eingefügt wurde: 45 17 42 53 77 17 22 31 42 45 47
79 53 61 eingefügt wurde: 45

32 Sequenz für B*-Baum mit k=2

33 27 27

34 27 55 27

35 27 55 27 55

36 27 55

37

38

39

40

41 12 27 55 94

42 55 94

43 55 94

44 55 94

45

46

47

48

49

50

51 12 27 37 39

52 37 39

53 37 39

54 37 39 55 72 88 94

55 37 39 55 72

56 37 39 55 72

57 37 39

58 37 39

59 37 39

60 37 39

61 37 39 55 58 72 74

62 37 39 72 74

63 12 37 37 39 72 74

64 12 55 12 37 37 39 72 74

65 12 55 12 37 37 39 72 74 Sequenz eingefügt

66 Löschen in B*Baum 31 22 17 77 42 79 53 47 61 Entferne 53

67 Löschen in B*Baum 31 22 17 77 42 79 61 47 Entferne 79

68 Löschen in B*Baum 31 22 17 61 42 77 47 Entferne 42

69 Löschen in B*Baum 22 17 61 31 77 47 Entferne 47

70 Löschen in B*Baum 31 22 17 61 77 Entferne 77

71 Löschen in B*Baum 22 17 31 61 Entferne 22

72 Löschen in B*Baum 17 31 61

73 Fragen zum B*Baum Wie groß ist k ?
Blockgröße / (Schlüssel / Adresspaar-Größe) = 1024 / (15+4) / 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 ? / 7,5 

74 Platzbedarf B*Baum Wieviel Blöcke belegt der B*Baum ?
Höhe Knoten Zeiger aus Knoten * 39 = *39 26*39*39 = drei Ebenen reichen aus Platzbedarf = *  Blöcke Wieviel Blockzugriffe sind erforderlich ? 4

75 Hashing versus B*Baum Welcher Platzbedarf entsteht beim Hashing, wenn dieselbe Zugriffszeit erreicht werden soll wie beim B*Baum? 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 / 45 = 6666 Buckets erforderlich 6666 / (1024 / 4) = 26 Directory-Blöcke Platzbedarf = * =

76 B*Baum versus Hashing B*Baum Hashing
Vorteile Dynamisch Schnell Sortierung möglich platzsparend Nachteile Speicheroverhead keine Sortierung kompliziert Neuorganisation


Herunterladen ppt "Kapitel 4: Physikalische Datenorganisation"

Ähnliche Präsentationen


Google-Anzeigen