Physische Datenorganisation Th Themenbereiche: b i h • Speicherhierarchie • Hintergrundspeicher / RAID • Speicherstrukturen • ISAM • B-Bäume B Bäume • Hashing • Clustering Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Überblick: Speicherhierarchie Register (L1/L2/L3) Cache Hauptspeicher Plattenspeicher Archivspeicher p Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Überblick: Speicherhierarchie 1 K (Kilo) = 103 1 M (Mega) = 106 1 G ((Giga) g ) = 109 1 T (Tera) = 1012 1 P (Peta) = 1015 1 – 8 Byte/Register C Compiler il Register Cache Hauptspeicher Ungefähre Größenordnungen, veraltet schnell! 8 – 128 Byte/Cache y Cache-Controller hoher GB-Bereich, GB Bereich 4 – 64 KB Blockgröße Betriebssystem Plattenspeicher im Bereich TB Benutzer Archivspeicher p im Bereich PB Benutzer Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Überblick: Speicherhierarchie (Flash-Speicher (Flash Speicher 100 μs) 1-10ns Register 10-100ns Cache 100-1000ns Hauptspeicher 10 ms Plattenspeicher p 1 n (nano) = 10-9 1 μ (micro) = 10-6 1 m (milli) = 10-3 Zugriffslücke ca. 105 sec Archivspeicher Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Überblick: Speicherhierarchie Kopf (1min) Raum (10 min) München (1.5h) (Mars (2 Monate)) Pluto (2 Jahre) Andromeda (2000 Jahre) 1-10ns Register 10-100ns Cache 100-1000ns Hauptspeicher 10 ms Plattenspeicher sec Archivspeicher Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Magnetplattenspeicher Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 6 09.12.2014 Lesen von Daten von der Platte Seek Time: Arm/Kopf positionieren Latenzzeit: Rotation zum Anfang des Blocks ½ Plattenumdrehung (im Durchschnitt) Lesezeit: L it Transfer T f von der d Platte Pl tt zum Hauptspeicher Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Random versus Chained IO Random I/O Jedesmal Arm positionieren Jedesmal Latenzzeit Chained IO Einmal positionieren, dann „von der Platte kratzen“ Chained IO ist ein bis zwei Größenordnungen schneller als random IO in Datenbank-Algorithmen beachten ! Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Systempuffer-Verwaltung einlagern Hauptspeicher verdrängen Platte ~ persistente DB Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Ein und Auslagern von Seiten Ein Systempuffer ist in Seitenrahmen gleicher Größe aufgeteilt Ein Rahmen kann eine Seite aufnehmen „Überzählige“ Seiten werden auf die Platte ausgelagert Hauptspeicher 0 4K 16K 20K 32K 36K 48K 52K 8K 24K 40K 56K 12K 28K Platte(swap device) P123 P480 44K 60K Seitenrahmen Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 Seite 09.12.2014 Adressierung von Tupeln auf d dem Hintergrundspeicher Hi t d i h Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Verschiebung innerhalb einer i Seite S it Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Verschiebung von einer Seite auf eine andere Forward Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 13 09.12.2014 Verschiebung von einer S it auff eine Seite i andere d Bei der nächsten Verschiebung wird d „Forward“ der d auff Seite 4711 geändert (kein Forward auf Seite 4812) Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Datentransfer Einfache Anfragebeantwortung: Tupel aller beteiligten Relationen nacheinander in den Hauptspeicher holen die teuerste Art Bei näherer Betrachtung stellt man folgendes fest: • Oft erfüllt füllt nur ein i B Bruchteil ht il d der Tupel T l die di Anfragebedingungen • Anfragen A f h b oft haben ft äh ähnliche li h Prädikate P ädik t • Festplatten erlauben wahlfreien Zugriff Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Indexstrukturen • Indexstrukturen nutzen diese Eigenschaften von Anfragen aus, um das transferierte Datenvolumen klein zu halten • Sie erlauben schnellen assoziativen Zugriff auf die Daten • Nur der Teil der Daten, der zur Beantwortung der Anfrage wirklich gebraucht wird, wird in den Hauptspeicher geholt • Zwei bedeutende Indexierungsansätze o Hierarchisch (Bäume) o Partitionierung g ((Hashing) g) Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Hierarchische Indexe Wir betrachten zwei hierarchische Indexstrukturen: • ISAM (Index-Sequential Access Method) • B-Bäume • ISAM war Vorgänger von B-Bäumen • Hauptidee ist die Tupel auf dem indexierten Attribut zu sortieren und eine Indexdatei darüber anzulegen • Ähnlich wie ein Daumenindex an der Seite eines Buches, durch den man schnell durchblättern kann Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Beispiel Indexseiten 5 … 9 S ti t Sortiert 1 2 3 Seite 1 4 5 6 7 8 … Seite 2 Seite n Datenseiten Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Beispiel cont. cont • Student mit Matrikelnummer 13542 wird gesucht g • Während Anfragebearbeitung geht man durch die passt Indexseiten und sucht die Stelle,, an der 13542 p • Von dort aus wird die referenzierte Datenseite geholt • Vorteil: Anzahl der Indexseiten ist normalerweise sehr viel kleiner als die Anzahl der Datenseiten, d.h. es wird I/O gespart g p • Es können auch Bereichsanfragen beantwortet werden ((z.B. bei einer Suche nach allen MatrNr zwischen 765 und 1232: zuerst die erste passende Datenseite finden und von dort aus sequentiell durch di D die Datenseiten t it bis bi MatrNr M t N 1232 llaufen) f ) Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Probleme mit ISAM • Obwohl Suche auf ISAM einfach und schnell ist ist, kann die Instandhaltung des Indexes teuer werden • Wenn ein Tupel auf eine gefüllte Datenseite eingefügt werden soll, muss Platz geschaffen werden: die Datenseite wird auf zwei Seiten aufgeteilt (wir müssen Sortierung beibehalten) g wiederum einen neuen Eintrag g auf • Das erzeugt einer Indexseite • Wenn auf der Indexseite auch kein Platz mehr ist,, müssen die Einträge verschoben werden, um Platz zu schaffen Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Weitere Probleme • Obwohl die Anzahl der Indexseiten kleiner als die Anzahl der Datenseiten, kann Durchlauf der Indexseiten trotzdem lange dauern • Idee: warum richtet man nicht Indexseiten für die Indexseiten ein? • Das ist im Prinzip die Idee eines B-Baums Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Idee Indexseiten 45 Indexseiten … 9 29 35 S ti t Sortiert 1 2 3 Seite 1 4 15 17 20 … Seite 2 Seite n Datenseiten Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 B Bäume B-Bäume Bäume iin d Bä der IInformatik f tik … haben Knoten … haben Kanten … haben eine Wurzel (oben!) … haben Blätter (unten!) … sind balanciert oder nicht (dann eher Kette) Wurzel Schematische Darstellung balancierter Baum: Blätter Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 23 09.12.2014 Eigenschaften B-Baum B Baum Ei B Ein B-Baum B vom Grad G dih hatt ffolgende l d Ei Eigenschaften: h ft • Jeder Pfad von der Wurzel zu einem Blatt hat die gleiche Länge • Jeder Knoten (außer der Wurzel) hat mindestens i und höchstens 2i • Einträge (in obigem Beispiel i = 2) • Die Di Einträge Ei t ä iin jjedem d K Knoten t sind i d sortiert ti t • Jeder Knoten (außer Blätter) mit n Einträgen hat n + 1 Kinder Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 24 09.12.2014 Eigenschaften B-Baum B Baum • S Seien i p0, 0 k1, k1 p1, 1 k2, k2 . . . kn, k pn die di Einträge Ei t ä iin einem i Knoten (pj sind Zeiger, kj Schlüssel) Dann gilt folgendes: o Der Unterbaum der von p0 referenziert wird, enthält nur Schüssel kleiner als k1 o pj zeigt auf einen Unterbaum mit Schlüsseln zwischen kj und kj+1 o Der D Unterbaum U t b d der von pn referenziert f i t wird, i d enthält thält nur Schlüssel größer als kn Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 25 09.12.2014 Einfügealgorithmus 1 Fi 1. Finde d den d richtigen i hti Blattknoten, Bl ttk t um den d neuen Schlüssel S hlü l einzufügen 2 Füge Schlüssel dort ein 2. 3. Falls kein Platz mehr da i. Teile Knoten und ziehe Median heraus ii. Füge alle Knoten kleiner als Median in linken Knoten, alle größer als Median in rechten Knoten iii Füge iii. Fü Median M di iin Elt Elternknoten k t ein i und d passe Z Zeiger i an 4. Falls kein Platz in Elternknoten i Falls Wurzelknoten, i. Wurzelknoten kreiere neuen Wurzelknoten und füge Median ein, passe Zeiger an ii. Ansonsten, wiederhole 3. mit Elternknoten Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 26 09.12.2014 Löschalgorithmus • In einem Blattknoten kann ein Schlüssel einfach gelöscht werden • In einem inneren Knoten muss Verbindung zu den Kindern bestehen bleiben Deshalb wird der nächstgrößere ß (oder ( nächstkleinere)) Schlüssel gesucht (in entsprechendem Kindknoten) Dieser Schlüssel wird an die Stelle des gelöschten Schlüssels geschrieben Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 27 09.12.2014 Löschalgorithmus cont. cont • Nach Löschen eines Schlüssels kann ein Knoten unterbelegt g sein ((weniger g als i Einträge g haben)) • Dann wird dieser Knoten mit einem Nachbarknoten verschmolzen • Das kann eine Unterbelegung im Elternknoten hervorrufen, f d.h. Elternknoten muss ebenfalls verschmolzen werden • Da dieses Verfahren relativ aufwändig ist und Datenbanken eher wachsen als schrumpfen, wird diese Verschmelzung oft nicht realisiert Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 28 09.12.2014 D.. Weitere Daten S.. Suchschlüssel V.. Verweise (SeitenNr) Beispielbaum Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Sukzessiver Aufbau eines BB Baums vom G Grad d k=2 k 2 Siehe http://wwwdb in tum de/research/publications/books/DBMSeinf/EIS db.in.tum.de/research/publications/books/DBMSeinf/EIS, Kapitel 7, ab Folie 51 Im Internet gibt es eine Reihe von Animationsprogrammen für B-Bäume – ohne Gewähr! z.B. http://slady.net/java/bt/ sieht ganz gut aus oder auch http://people ksp sk/~kuko/bak/ (auch andere http://people.ksp.sk/~kuko/bak/ Suchbäume) Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 B+ Bäume B+-Bäume • Performanz eines B-Baums ist stark abhängig von der Höhe des Baumes ab möglichst hoher Verzweigungsgrad der inneren Knoten • Abspeichern von Daten in inneren Knoten reduziert den Verzweigungsgrad • B+-Bäume speichern nur Referenzschlüssel in inneren Knoten, die Daten selbst werden in Blattknoten gespeichert • Meistens sind die Blattknoten noch verkettet, um schnelle sequentielle Suche zu ermöglichen Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Struktur B+ B+-Baum Baum Index 45 9 29 35 1 D1 2 D2 Seite 1 Indexseiten … 15 D15 17 D17 20 D20 … Seite 2 Seite n Datenseiten,, sortiert,, doppelt verkettet Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Präfix B+ B+-Bäume Bäume • Weitere Verbesserung ist der Einsatz von Referenzschlüsselpräfixen, z.B. bei langen Zeichenketten • Es muss nur irgendein Referenzschlüssel gefunden werden, der linken vom rechten Teilbaum trennt: Müller-Pfefferkorn Müller Pfefferkorn <= P < Schmidtchen Systemprogramm <= ? < Systemprogrammierer Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Mehrere Indexe auf den selben Daten Primärindex - Sekundärindexe MatrNr 25403 29120 29555 27550 Studenten Name Jonas Theophrastos Feuerbach Schopenhauer Semester 12 2 2 6 Wann • Index auf MatrNr? • Index auf Name? • Index auf Semester? Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 Sekundärindexe Primär-Index 45 9 1 D1 Indexseiten … 29 35 2 D2 Seite 1 17 D17 15 D15 20 D20 Datenseiten, sortiert, doppelt verkettet … Seite n Seite 2 … Indexseiten Sekundär-Index Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014 DDL: Kreiere Index CREATE [UNIQUE] INDEX index_name ON table_name (column_name1 [, column_name2, …]) Beispiel: CREATE INDEX gewicht_ziel ON Gepaeckstueck (Gewicht, (Gewicht Ziel) Datenbanksysteme für Hörer anderer Fachrichtungen WS 2014/2015 09.12.2014