Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Mathis Krüger Geändert vor über 10 Jahren
1
Vorlesung Datenbanksysteme WS 2.0 Christoph Koch dbvo@dbai.tuwien.ac.at (Subject: DBVO:...
2
2 Elmasri / Navathe Ramakrishnan / Gehrke
3
3 Architektur eines DBMS DML-CompilerDDL-Compiler Abfrageoptimierung Datenbankmanager Schemaverwaltung Dateiverwaltung LogdateienIndexeDatenbasisData Dictionary Mehrbenutzersynchronisation Fehlerbehandlung Interactive AbfrageAPI/PräcompilerVerwaltungswerkzeug
4
4 Themen Physische Datenorganisation Abfrageoptimierung Transaktionsverwaltung Fehlerbehandlung Mehrbenutzersynchronisation Sicherheit Verteilte Datenbanken
5
5 Buch zur Vorlesung Datenbanksysteme – Eine Einführung Alfons Kemper / André Eickler Oldenbourg Verlag 5. Auflage, 2004 Stoff der Vorlesung: Kapitel 7-12; 16
6
Vorlesung Datenbanksysteme vom 11.10.2004 Physische Datenorganisation Speicherhierarchie Hintergrundspeicher / RAID B-Bäume Hashing R-Bäume
7
7 Überblick: Speicherhierarchie 1-10ns Register 10-100ns Cache 100-1000ns Hauptspeicher 10 ms Plattenspeicher sec Archivspeicher Zugriffslücke 10 5
8
8 Magnetplattenspeicher
9
9
10
10 Lesen von Daten von der Platte Seek Time: Arm positionieren 5ms Latenzzeit: ½ Plattenumdrehung (im Durchschnitt) 10000 Umdrehungen / Minute Ca 3ms Transfer von der Platte zum Hauptspeicher 15 MB/s
11
11 Random versus Chained IO 1000 Blöcke à 4KB sind zu lesen Random I/O Jedesmal Arm positionieren Jedesmal Latenzzeit 1000 * (5 ms + 3 ms) + Transferzeit von 4 MB > 8000 ms + 300ms 8s Chained IO Einmal positionieren, dann von der Platte kratzen 5 ms + 3ms + Transferzeit von 4 MB 8ms + 300 ms 1/3 s Also ist chained IO ein bis zwei Größenordnungen schneller als random IO in Datenbank-Algorithmen unbedingt beachten !
12
12 Disk Arrays RAID-Systeme
13
13
14
14 RAID 0: Striping Lastbalancierung wenn alle Blöcke mit gleicher Häufigkeit gelesen/geschrieben werden Doppelte Bandbreite beim sequentiellen Lesen der Datei bestehend aus den Blöcken ABCD... Aber: Datenverlust wird immer wahrscheinlicher, je mehr Platten man verwendet (Stripingbreite = Anzahl der Platten, hier 2) A C B D ABCD Datei
15
15 RAID 1: Spiegelung (mirroring) Datensicherheit: durch Redundanz aller Daten (Engl. mirror) Doppelter Speicherbedarf Lastbalancierung beim Lesen: z.B. kann Block A von der linken oder der rechten Platte gelesen werden Aber beim Schreiben müssen beide Kopien geschrieben werden Kann aber parallel geschehen Dauert also nicht doppelt so lange wie das Schreiben nur eines Blocks A C B D A C B D
16
16 Kombiniert RAID 0 und RAID 1 Immer noch doppelter Speicherbedarf Zusätzlich zu RAID 1 erzielt man hierbei auch eine höhere Bandbreite beim Lesen der gesamten Datei ABCD.... Wird manchmal auch als RAID 10 bezeichnet RAID 0+1: Striping und Spiegelung A C A C B D B D
17
17 RAID 2: Striping auf Bit-Ebene Anstatt ganzer Blöcke, wie bei RAID 0 und RAID 0+1, wird das Striping auf Bit- (oder Byte-) Ebene durchgeführt Es werden zusätzlich auf einer Platte noch Fehlererkennungs- und Korrekturcodes gespeichert In der Praxis nicht eingesetzt, da Platten sowieso schon Fehlererkennungscodes verwalten 1010 1101 1011 0110 0011 1100.... Datei 111001...010101...101110...011010...
18
18 RAID 3: Striping auf Bit-Ebene, zusätzliche Platte für Paritätsinfo Das Striping wird auf Bit- (oder Byte-) Ebene durchgeführt Es wird auf einer Platte noch die Parität der anderen Platten gespeichert. Parität = bit-weise xor Dadurch ist der Ausfall einer Platte zu kompensieren Das Lesen eines Blocks erfordert den Zugriff auf alle Platten Verschwendung von Schreib/Leseköpfen Alle marschieren synchron 1010 1101 1011 0110 0011 1100.... Datei 111001...010101...101110...011010...011000... Parität
19
19 RAID 3: Plattenausfall 1010 1101 1011 0110 0011 1100.... Datei 111001...010101...101110...011010...011000... Parität 011010... Reparatur
20
20 RAID 4: Striping von Blöcken Bessere Lastbalancierung als bei RAID 3 Flaschenhals bildet die Paritätsplatte Bei jedem Schreiben muss darauf zugegriffen werden Bei Modifikation von Block A zu A wird die Parität P A-D wie folgt neu berechnet: P A-D := P A-D A A D.h. bei einer Änderung von Block A muss der alte Zustand von A und der alte Paritätsblock gelesen werden und der neue Paritätsblock und der neue Block A geschrieben werden AEBF CG DH P A-D P E-H
21
21 RAID 4: Striping von Blöcken Flaschenhals bildet die Paritätsplatte Bei jedem Schreiben muss darauf zugegriffen werden Bei Modifikation von Block A zu A wird die Parität P A-D wie folgt neu berechnet: P A-D := P A-D A A D.h. bei einer Änderung von Block A muss der alte Zustand von A und der alte Paritätsblock gelesen werden und der neue Paritätsblock und der neue Block A geschrieben werden 1010 1101 1011 0110 0011 1100.... Datei 1010......1101.......1011......0110......1010....... Paritäts block
22
22 RAID 5: Striping von Blöcken, Verteilung der Paritätsblöcke Bessere Lastbalancierung als bei RAID 4 die Paritätsplatte bildet jetzt keinen Flaschenhals mehr Wird in der Praxis häufig eingesetzt Guter Ausgleich zwischen Platzbedarf und Leistungsfähigkeit AEBF CG D HP A-D P E-H IMJ O LN K PP I-L P M-P
23
23 Parallelität bei Lese/Schreib- Aufträgen
24
24 verdrängen Hauptspeicher einlagern Platte ~ persistente DB Systempuffer-Verwaltung
25
25 Ein- und Auslagern von Seiten Systempuffer ist in Seitenrahmen gleicher Größe aufgeteilt Ein Rahmen kann eine Seite aufnehmen Überzählige Seiten werden auf die Platte ausgelagert Platte (swap device) Hauptspeicher 04K8K12K 28K 44K 60K 40K 48K 24K20K 16K 32K 36K 56K52K P480 P123 Seitenrahmen Seite
26
B-Bäume Balancierte Mehrwege-Suchbäume Für den Hintergrundspeicher
27
27 S.. Suchschlüssel D.. Weitere Daten V.. Verweise (SeitenNr)
28
28
29
29
30
30 Einfügen eines neuen Objekts (Datensatz) in einen B-Baum
31
31 Sukzessiver Aufbau eines B-Baums vom Grad k=2 101319 7
32
32 Sukzessiver Aufbau eines B-Baums vom Grad k=2 7101319 3
33
33 Sukzessiver Aufbau eines B-Baums vom Grad k=2 7101319 3 ?
34
34 Sukzessiver Aufbau eines B-Baums vom Grad k=2 710 3 1319 ?
35
35 Sukzessiver Aufbau eines B-Baums vom Grad k=2 37 3 1319 ? 10
36
36 Sukzessiver Aufbau eines B-Baums vom Grad k=2 371319 ? 10
37
37 Sukzessiver Aufbau eines B-Baums vom Grad k=2 371319 ? 10 1
38
38 Sukzessiver Aufbau eines B-Baums vom Grad k=2 371319 ? 10 1
39
39 Sukzessiver Aufbau eines B-Baums vom Grad k=2 371319 ? 10 1
40
40 Sukzessiver Aufbau eines B-Baums vom Grad k=2 1371319 ? 10 1
41
41 Sukzessiver Aufbau eines B-Baums vom Grad k=2 1371319 ? 10 2
42
42 Sukzessiver Aufbau eines B-Baums vom Grad k=2 1371319 ? 10 2 2
43
43 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12371319 ? 10 2 2
44
44 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12371319 ? 10 4
45
45 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12371319 ? 10 4 4
46
46 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12371319 ? 10 4 4
47
47 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12371319 ? 10 4 4
48
48 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12371319 ? 310 4 4
49
49 Sukzessiver Aufbau eines B-Baums vom Grad k=2 121319 ? 310 47
50
50 Sukzessiver Aufbau eines B-Baums vom Grad k=2 121319 ? 310 11 47
51
51 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12111319 ? 310 47
52
52 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12111319 ? 310 21 47
53
53 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12111319 ? 310 21 47
54
54 Sukzessiver Aufbau eines B-Baums vom Grad k=2 1211131921 ? 310 12 47
55
55 Sukzessiver Aufbau eines B-Baums vom Grad k=2 1211131921 ? 310 12 47
56
56 Sukzessiver Aufbau eines B-Baums vom Grad k=2 1211131921 ? 310 12 47
57
57 Sukzessiver Aufbau eines B-Baums vom Grad k=2 1211131921 ? 310 12 47
58
58 Sukzessiver Aufbau eines B-Baums vom Grad k=2 1211131921 ? 31013 12 47
59
59 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12111921 ? 31013 12 471112
60
60 Sukzessiver Aufbau eines B-Baums vom Grad k=2 121921 ? 31013 12 471112
61
61 Sukzessiver Aufbau eines B-Baums vom Grad k=2 121921 ? 31013 14 471112
62
62 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12141921 ? 31013 14 471112
63
63 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12141921 ? 31013 15 471112
64
64 Sukzessiver Aufbau eines B-Baums vom Grad k=2 1214151921 ? 31013 20 471112
65
65 Sukzessiver Aufbau eines B-Baums vom Grad k=2 1214151921 ? 31013 20 471112 20
66
66 Sukzessiver Aufbau eines B-Baums vom Grad k=2 1214151921 ? 31013 20 471112 20
67
67 Sukzessiver Aufbau eines B-Baums vom Grad k=2 1214151921 ? 3101319 20 471112 20
68
68 Sukzessiver Aufbau eines B-Baums vom Grad k=2 121415 ? 3101319 20 471112 2021
69
69 Sukzessiver Aufbau eines B-Baums vom Grad k=2 121415 ? 3101319 5 471112 2021
70
70 Sukzessiver Aufbau eines B-Baums vom Grad k=2 121415 ? 3101319 5 471112 2021
71
71 Sukzessiver Aufbau eines B-Baums vom Grad k=2 121415 ? 3101319 5 4571112 2021
72
72 Sukzessiver Aufbau eines B-Baums vom Grad k=2 121415 ? 3101319 6 4571112 2021
73
73 Sukzessiver Aufbau eines B-Baums vom Grad k=2 121415 ? 3101319 6 45671112 2021
74
74 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 3101319 45671112 2021 8
75
75 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 3101319 45671112 2021 8 8
76
76 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 3101319 45671112 2021 8 8
77
77 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 3101319 45671112 2021 8 8
78
78 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 3101319 671112 2021 8 8 45
79
79 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 3101319 781112 2021 6 6 45
80
80 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 3101319 781112 2021 6 45
81
81 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 3101319 781112 2021 6 45
82
82 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 3101319 781112 2021 6 45
83
83 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 3101319 781112 2021 6 45 36
84
84 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 1319 781112 2021 10 45 36
85
85 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 1319 781112 2021 45 36 10
86
86 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 1319 781112 2021 45 36 10
87
87 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 1319 781112 2021 45 36 10 B-Baum mit Minimaler Speicherplatz- ausnutzung
88
88 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 1319 781112 2021 45 36 10 B-Baum mit Minimaler Speicherplatz- ausnutzung
89
89 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 1319 781112 2021 45 36 10 23
90
90 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 1319 781112 202123 45 36 10
91
91 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 1319 781112 202123 45 36 10 14
92
92 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1415 ? 1319 781112 202123 45 36 10 14 Unterlauf
93
93 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 15 ? 1319 781112 202123 45 36 10 Unterlauf
94
94 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1519 ? 1320 781112 2123 45 36 10
95
95 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1519 ? 1320 781112 2123 45 36 10 5
96
96 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1519 ? 1320 781112 2123 45 36 10 5 Unterlauf
97
97 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1519 ? 1320 781112 2123 4 36 10 merge
98
98 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1519 ? 1320 781112 2123 4 36 10 merge
99
99 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1519 ? 1320 1112 2123 4678 3 10 Unterlauf
100
100 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1519 ? 1320 1112 2123 4678 3 10 merge
101
101 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1519 ? 1320 1112 2123 4678 3 10 merge
102
102 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1519 ? 1112 2123 4678 3101320
103
103 Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 1519 ? 1112 2123 4678 3101320 Schrumpfung, Freie Knoten
104
104 Speicherstruktur eines B-Baums auf dem Hintergrundspeicher 4 Speicherblock Nr 4
105
105 Speicherstruktur eines B-Baums auf dem Hintergrundspeicher 3 0 Datei 8 KB-Blöcke 0*8KB 1*8KB 2*8KB 3*8KB 1 1 0 1 0 0 1 1 0 Freispeicher- Verwaltung 4*8KB Block- Nummer
106
106 Zusammenspiel: Hintergrundspeicher -- Hauptspeicher Hintergrundspeicher 4 4 Hauptspeicher- Puffer Zugriffslücke 10 5
107
107 B + -Baum Referenz- schlüssel Such- schlüssel
108
108
109
109
110
110 Mehrere Indexe auf denselben Objekten B-Baum Mit (PersNr, Daten) Einträgen Name, Alter, Gehalt... B-Baum Mit (Alter, ???) Einträgen Alter, PersNr
111
111 Mehrere Indexe auf denselben Objekten B-Baum Mit (PersNr, Daten) Einträgen Name, Alter, Gehalt... B-Baum Mit (Alter, ???) Einträgen Alter, PersNr Wer ist 20 ? 20, 007
112
112 Mehrere Indexe auf denselben Objekten B-Baum Mit (PersNr, Daten) Einträgen Name, Alter, Gehalt... B-Baum Mit (Alter, ???) Einträgen Alter, PersNr Wer ist 20 ? 20, 007007,Bond,20,...
113
113 Eine andere Möglichkeit: Referenzierung über Speicheradressen PersNr Alter 007,... 20,... 007, Bond, 20,...
114
114
115
115 Verschiebung von einer Seite auf eine andere Forward
116
116 Verschiebung von einer Seite auf eine andere Bei der nächsten Verschiebung wird der Forward auf Seite 4711 geändert (kein Forward auf Seite 4812)
117
117 Statische Hashtabellen À priori Allokation des Speichers Nachträgliche Vergrößerung der Hashtabelle ist teuer Hashfunktion h(...) =... mod N Rehashing der Einträge h(...) =... mod M In Datenbankanwendungen viele GB Erweiterbares Hashing Zusätzliche Indirektion über ein Directory Ein zusätzlicher Zugriff auf ein Directory, das den Zeiger (Verweis, BlockNr) des Hash-Bucket enthält Dynamisches Wachsen (und Schrumpfen) ist möglich Der Zugriff auf das Directory erfolgt über einen binären Hashcode
118
118 Statisches Hashing
119
119
120
120 Hashfunktion für erweiterbares Hashing h: Schlüsselmenge {0,1}* Der Bitstring muss lang genug sein, um alle Objekte auf ihre Buckets abbilden zu können Anfangs wird nur ein (kurzer) Präfix des Hashwertes (Bitstrings) benötigt Wenn die Hashtabelle wächst wird aber sukzessive ein längerer Präfix benötigt Beispiel-Hashfunktion: gespiegelte binäre PersNr h(004) = 001000000... (4=0..0100) h(006) = 011000000... (6=0..0110) h(007) = 111000000... (7 =0..0111) h(013) = 101100000... (13 =0..01101) h(018) = 0100100000... (18 =0..010010) h(032) = 000001000... (32 =0..0100000) H(048) = 000011000... (48 =0..0110000)
121
121
122
122
123
123 Wertbasierter Zugriff auf der Grundlage mehrerer Attribute, dies einzeln oder in beliebigen Kombinationen. Typische Anforderungen aus CAD, VLSI-Entwurf, Kartographie,... Anfragen decken den Bereich ab zwischen mehrdimensionalem Punktzugriff (EMQ) und mehrdimensionalen Bereichsanfragen (RQ) Lösung mit eindimensionalen Indexen erfordert konjunktive Zerlegung der Anfrage in Einattributanfragen und Schnittmengenbildung bedingt hohe Speicherredundanz Problemstellung: Mehrdimensionale Nachbarschaftsverhältnisse Mehrdimensionale Datenstrukturen
124
124 Wertebereiche D 0,..., D k-1 : alle D i sind endlich, linear geordnet und besitzen kleinstes (- i ) und größtes ( i ) Element Datenraum D = D 0... D k-1 k-dimensionaler Schlüssel entspricht Punkt im Datenraum p D Grundlagen mehrdimensionaler Datenstrukturen
125
125 1. Exact Match Query spezifiziert Suchwert für jede Dimension D i 2. Partial Match Query spezifiziert Suchwert für einen Teil der Dimensionen 3. Range Query spezifiziert ein Suchintervall [ug i, og i ] für alle Dimensionen 4. Partial Range Query spezifiziert ein Suchintervall für einen Teil der Dimensionen Grundlagen mehrdimensionaler Datenstrukturen
126
126 Mehrdimensionale Zugriffsstrukturen können gemäß der Art der Aufteilung des Datenraums in Gebiete charakterisiert werden: 1. nur atomare Gebiete (beschreibbar durch ein Rechteck) 2. vollständig (die Vereinigung aller Gebiete ergibt den gesamten Datenraum) 3. disjunkt (die Gebiete überlappen nicht) Charakterisierung mehrdimensionaler Datenstrukturen R-Baum: atomar
127
127 R-Baum: Urvater der baum-strukturierten mehrdimensionalen Zugriffsstrukturen
128
128 Gute versus schlechte Partitionierung
129
129 Nächste Phase in der Entstehungsgeschichte des R-Baums
130
130 Nächste Phase
131
131 Datenraum
132
132 Wachsen des Baums: nach oben – wie im B-Baum
133
133 Datenraum
134
134 Datenraum und Speicherstruktur – Überblick
135
135
136
136 Bereichsanfragen auf dem R-Baum
137
137
138
138 Objektballung / Clustering logisch verwandter Daten
139
139
140
140 Clustering von Professoren mit ihren Vorlesungen
141
141 Unterstützung eines Anwendungsverhaltens Select Name From Professoren Where PersNr = 2136 Select Name From Professoren Where Gehalt >= 90000 and Gehalt <= 100000
142
142 Indexe in SQL Create index SemsterInd on Studenten (Semester) drop index SemsterInd
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.