Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Physikalische Datenorganisation RecordDatensatz fester oder variabler Länge mit Feldern bestimmten Typs BlockSpeichereinheit im Hintergrundspeicher (2.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Physikalische Datenorganisation RecordDatensatz fester oder variabler Länge mit Feldern bestimmten Typs BlockSpeichereinheit im Hintergrundspeicher (2."—  Präsentation transkript:

1 1 Physikalische Datenorganisation RecordDatensatz fester oder variabler Länge mit Feldern bestimmten Typs BlockSpeichereinheit im Hintergrundspeicher ( Bytes) FileMenge von Blöcken Pinned recordBlockadresse + Offset Unpinned recordBlockadresse + Recordschlüssel Blockadresse + Index (Tupelidentifikator)

2 2 Tupelidentifikator: Verschieben innerhalb der Seite Grundzüge Ethik... TID 123 Seite Logik Mathematische Logik...

3 3 Tupelidentifikator: Verdrängen auf andere Seite 4052 Mathematische Logik Grundzüge Ethik... TID 123 Seite Seite Mathematische Logik für Informatiker Mathematische Logik

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

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

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

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

8 Peter Thomas Melanie Ute Kurt Fritz Susanne Eberhard Karl Beate 10Eva Beispiel für Hashorganisation (|v| mod 5)

9 9 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 d i die i-te Gruppe als natürliche Zahl interpretiert: dkdk d k-1 d2d2 d1d1 h(v) = (d k + d k d 2 + d 1 ) mod N

10 10 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.

11 Peter Thomas Melanie Ute Kurt Fritz Susanne Eberhard Karl Beate 10Eva Paul einfügen Hashorganisation: Ausgangslage h(s) = |s| mod 5

12 Peter Thomas Melanie Ute Kurt Fritz Susanne Eberhard Karl Beate 10Eva Paul Hashorganisation: nach Einfügen von Paul Kurt umbenennen nach Curdt

13 13 Peter Thomas Melanie Ute Fritz Susanne Eberhard Karl BeateCurdt 10Eva Paul Hashorganisation: nach Umbenennen von Kurt in Curdt

14 14 Probleme beim Hashing durch dynamisch sich ändernden Datenbestand: Blocklisten werden immer länger Reorganisation erforderlich

15 15 Erweiterbares Hashing Hashfunktion liefert Binärstring verwende geeigneten Prefix des Binärstring als Adresse

16 16 Beispiel für erweiterbares Hashing MatNrNameHashwert 2125Sokrates Russel Kopernikus Descartes Hashwert = umgekehrte Binärdarstellung von Matrikelnummer Ein Datenblock enthalte zwei Records

17 17 Beispiel für erweiterbares Hashing x d p h(x) 0 (2126, Russel, C4, 232) (2125, Sokrates, C4, 226) (2127, Kopernikus, C3, 310) 1 t = 1 t´= Sokrates Russel Kopernikus Descartes Sokrates, Russel, Kopernikus einfügen Descartes einfügenBucket 1 läuft überSetze globale Tiefe t:=2

18 18 Beispiel für erweiterbares Hashing x d p h(x) 00 (2126, Russel, C4, 232) (2125, Sokrates, C4, 226) (2127, Kopernikus, C3, 310) 01 t´= 2 t´= 1 t = (2129, Descartes, C3, 312) t´= Sokrates Russel Kopernikus Descartes

19 19 Defizite beim Hashing Keine Sortierung Keine Bereichsabfragen

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

21 21 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 v 2 v. Suche in diesem Block das letzte Paar (v 3, a) mit v 3 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

22 22 Manfred einfügen Index-Organisation: Ausgangslage

23 23 Index-Organisation: nach Einfügen von Manfred

24 24 Sekundär-Index Sekundärindex besteht aus Index-File mit Einträgen der Form.

25 25 Sekundär-Index für Gewicht

26 26 Beispiel zur physikalischen Speicherung Gegeben seien Records mit folgenden Angaben: Die Blockgröße betrage 1024 Bytes. AttributBytes AttributBytes Pers-Nr.15 Vorname15 Nachname15 Straße25 PLZ 5 Ort25 Platzbedarf pro Record: 100 Bytes.

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

28 28 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, zu 75% gefüllte Datenblöcke / zu 75% gefüllte Indexblöcke Wieviel Blockzugriffe entstehen im Mittel bei ISAM? log 2 (1.000) Blockzugriffe

29 29 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.

30 30 B*-Baum-Adressierung Ein Knoten wird auf einem Block gespeichert Ein Knoten mit j Nachfolgern (j 2k) speichert j Paare von Schlüsseln und Adressen (s 1, a 1 ),..., (s j, a j ). Es gilt s 1 s 2... s j. 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

31 31 Einfügen in B*Baum eingefügt werden soll:

32 32 Einfügen in B*Baum eingefügt werden soll: 45 Block anfordern Überlaufblock verteilen

33 33 Einfügen in B*Baum eingefügt werden soll: 45 Vorgänger korrigieren

34 34 Einfügen in B*Baum eingefügt wurde:

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

36 36 27

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68 Sequenz eingefügt

69 69 Löschen in B*Baum Entferne 53

70 70 Löschen in B*Baum Entferne 79

71 71 Löschen in B*Baum Entferne 47

72 72 Löschen in B*Baum Entferne 77

73 73 Löschen in B*Baum Entferne 22

74 74 Löschen in B*Baum

75 75 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,

76 76 Platzbedarf B*Baum Wieviel Blöcke belegt der B*Baum ? HöheKnotenZeiger aus Knoten * 39 = *3926*39*39 = drei Ebenen reichen aus Platzbedarf = * Blöcke Wieviel Blockzugriffe sind erforderlich ? 4

77 77 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 = * =

78 78 B*Baum versus Hashing B*BaumHashing VorteileDynamischSchnell Sortierung möglichplatzsparend NachteileSpeicheroverheadkeine Sortierung kompliziertNeuorganisation

79 79 Mehrdimensionale Suchstrukturen Alterzwischen 20 und 30 Einkommenzwischen 2000 und 3000 PLZzwischen und 50000

80 80 Query-Rechteck y2y2 y1y1 y x x1x1 x2x2 E D C B G F HI K A J

81 81 k-d-Baum zur Verwaltung von mehrdimensionalen Datenpunkten Verallgemeinerung des binären Suchbaums mit k-dimensionalem Sortierschlüssel Homogene Variante: Baumknoten enthält Datenrecord + Zeiger Inhomogene Variante: Baumknoten enthält Schlüssel + Zeiger Blätter enthalten Zeiger auf Datenrecord Ebene i modulo k diskriminiert bzgl. Dimension i x y z

82 82 2-d-Baum Im 2-dimensionalen Fall gilt für Knoten mit Schlüssel [x/y]: im linken Sohnim rechten Sohn Auf ungerader Ebenealle Schlüssel xalle Schlüssel > x Auf gerader Ebenealle Schlüssel yalle Schlüssel > y

83 83 2-d-Baum A C B D E F G H

84 84 Beispiel für 2-d-Baum D 6/2H8/5 C 9/4 B14/3 B A 5/6 G1/8 F 12/7 E 7/9 bzgl. y kleiner bzgl.x kleiner bzgl. y kleiner bzgl. y grösser bzgl. y grösser bzgl.x grösser bzgl.x grösser Ebene 0

85 85 Beispiel für 2-d-Baum D 6/2H8/5 C 9/4 B14/3 B A 5/6 G1/8 F 12/7 E 7/9 bzgl. y kleiner bzgl.x kleiner bzgl. y kleiner bzgl. y grösser bzgl. y grösser bzgl.x grösser bzgl.x grösser Insertz.B. füge Record [3/9] I 3/9

86 86 Beispiel für 2-d-Baum D 6/2H8/5 C 9/4 B14/3 B A 5/6 G1/8 F 12/7 E 7/9 bzgl. y kleiner bzgl.x kleiner bzgl. y kleiner bzgl. y grösser bzgl. y grösser bzgl.x grösser bzgl.x grösser Exact Matchz.B. finde Record [15/5]

87 87 Beispiel für 2-d-Baum D 6/2H8/5 C 9/4 B14/3 B A 5/6 G1/8 F 12/7 E 7/9 bzgl. y kleiner bzgl.x kleiner bzgl. y kleiner bzgl. y grösser bzgl. y grösser bzgl.x grösser bzgl.x grösser Partial Matchz.B. finde alle Records [x/y] mit x=7

88 88 Beispiel für 2-d-Baum D 6/2H8/5 C 9/4 B14/3 B A 5/6 G1/8 F 12/7 E 7/9 bzgl. y kleiner bzgl.x kleiner bzgl. y kleiner bzgl. y grösser bzgl. y grösser bzgl.x grösser bzgl.x grösser Range-Queryz.B. finde alle Records [x/y] mit 8 x 13, 5 y 8

89 89 Beispiel für 2-d-Baum D 6/2H8/5 C 9/4 B14/3 B A 5/6 G1/8 F 12/7 E 7/9 bzgl. y kleiner bzgl.x kleiner bzgl. y kleiner bzgl. y grösser bzgl. y grösser bzgl.x grösser bzgl.x grösser Best Matchz.B. finde nächsten Nachbarn zu [7/3]

90 90 2-d-Baum A C B D E F G H

91 91 Inhomogene Variante

92 92 Partitionierungen

93 93 Gitterverfahren mit konstanter Gittergröße

94 94 Grid File Alternative zu fester Gittergröße 1981 vorgestellt von Hinrichs & Nievergelt 2-Platten-Zugriffsgarantie Bei k-dimensionalen Tupeln: k Skalen zum Einstieg ins Grid-Directory (im Hauptspeicher) Grid Directory zum Finden der Bucket-Nr. (Hintergrundspeicher) Bucket für Datensätze (Hintergrundspeicher)

95 95 Grid File im 2-dimensionalen Fall Alle Records der roten Gitterzelle sind im Bucket mit Adresse G[1,2] 0 y[i],i=0,.. max_y y x x x[i],i=0,.. max_x y Region:benachbarte Gitterzellen Gitterzelle: rechteckiger Teilbereich Bucket:speichert Records einer Region

96 96 Bucket Directory Suche Record [35 / 2400] Befrage Skalen asp07nk99jh aasdf0cß03j400d0v 9v8asßfimo98csi98a dxcvß98dspa0s9fxc0 wi00808ß3jsßsa9ßß Lade G[1,2] vom Bucketdirectory Lade Datenblock

97 Datenrecords 4 Datenrecords passen in ein Bucket X-Achse und Y-Achse habe 500 Unterteilungen Einträge im Bucketdirectory 4 Bytes pro Adresse Bytes pro Block 250 Zeiger pro Directory-Block Directory-Blöcke i 249: G[i,j] befindet sich auf Block 2*j als i-te Adresse i > 249: G[i,j] befindet sich auf Block 2*j+1 als (i-250)-te Adresse Beispiel für Bucket Directory G[280,2] auf Block 5 an Position

98 98 Bucket-Überlauf Eine Zelle in Region Mehrere Zellen in Region

99 99 Aufspalten der Regionen Insert A = [5 / 6]

100 100 Aufspalten der Regionen A A Insert B = [14 / 3]

101 101 Aufspalten der Regionen A B A B Insert C = [9 / 4]

102 102 Aufspalten der Regionen A C B B C A Insert D = [6 / 2]

103 103 Aufspalten der Regionen A C B B C A D D Insert E = [7 / 9]

104 104 Aufspalten der Regionen Insert F = [12 / 7]

105 105 Aufspalten der Regionen Insert G = [1 / 8]

106 106 Aufspalten der Regionen B C E A C B F F D G A E D G Insert A = [5 / 6]

107 107 Dynamik des Grid Directory Insert A=[12 / 280] 3 Datenrecords pro Bucket

108 108 Dynamik des Grid Directory A Insert B=[25 / 220]

109 109 Dynamik des Grid Directory A B Insert C=[45 / 270]

110 110 Dynamik des Grid Directory A B C Insert D=[22 / 275]

111 111 Dynamik des Grid Directory A B C D Insert E=[24 / 260]

112 112 Dynamik des Grid Directory C A B D E 250 Insert F=[26 / 280]

113 113 Dynamik des Grid Directory A B C D E F Directory Block vergröbern

114 114 Dynamik des Grid Directory A B C D E F

115 115 Vereinigung von Regionen bei zu geringer Bucketauslastung: Benachbarte Regionen vereinigen Vereinigung muß Rechteck ergeben Vereinigung wird ausgelöst wenn Bucket < 30 % Auslastung wenn vereinigtes Bucket < 70 % Auslastung

116 116 Nearest Neighbor Q P R

117 117 Verwaltung von geometrischen Objekten Grid File unterstützt Range-Query bisher:k Attribute Jetzt:k-dimensionale Punkte

118 118 Verwaltung von Intervallen E A B C D F A [Anfang / Ende] E A B C D F Besser: [Mittelpunkt / halbe Länge]

119 119 Query-Punkt gegen Intervall Punkt p liegt im Intervall mit Mitte m und halber Länge d m-d p m+d m-d m+d m

120 120 Query-Punkt gegen Intervall E A B C D F E A B C D F Punkt p liegt im Intervall mit Mitte m und halber Länge d m-d p m+d p=5 m-d 5 m+d

121 121 Query-Intervall gegen Intervall Intervall mit Mitte s und halber Länge t schneidet Intervall mit Mitte m und halber Länge d m-d s+t und s-t m+d m-dm+d s+ts-t

122 122 Query-Intervall gegen Intervall E A B C D F E A B C D F Intervall mit Mitte s und halber Länge t schneidet Intervall mit Mitte m und halber Länge d m-d s+t und s-t m+d s=10, t=1 m-d 11 und 9 m+d

123 123 Query-Rechteck gegen Rechteck Stelle Rechteck durch vierdimensionalen Punkt dar


Herunterladen ppt "1 Physikalische Datenorganisation RecordDatensatz fester oder variabler Länge mit Feldern bestimmten Typs BlockSpeichereinheit im Hintergrundspeicher (2."

Ähnliche Präsentationen


Google-Anzeigen