Physische Datenorganisation Kapitel 10 Physische Datenorganisation
Lernziele Speicherhierarchie Hintergrundspeicher / RAID Organisation von B-Bäumen, B+ Bäumen.. Hashing Organisation von mehrdimensionalen Datenstrukturen Datenbanken, SS 12 Kapitel 9: Datenorganisation
Lesen von Daten von der Festplatte 1. Seek Time: Arm positionieren auf entsprechende Spur 5ms 2. Latenzzeit: ½ Plattenumdrehung (im Durchschnitt) Rotation der Platte bis Kopf über zu lesender/schreibender Stelle steht 10000 Umdrehungen / Minute Ca 3ms 3. Lesezeit: Lesen des Blocks 4. Transfer von der Platte zum Hauptspeicher 100 Mb /s 15 MB/s Datenbanken, SS 12 Kapitel 9: Datenorganisation
Random versus Chained IO 1000 Blöcke à 4KB sind zu lesen Random I/O: „jedesmal zum Pluto fliegen“ Jedesmal Arm positionieren Jedesmal Latenzzeit 1000 * (5 ms + 3 ms) + Transferzeit von 4 MB > 8000 ms + 300ms 8s Chained IO: „Rakete zum Pluto soll möglichst voll beladen sein“ 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 ! Datenbanken, SS 12 Kapitel 9: Datenorganisation
Zugriff: Physikalische Speicherung der Daten Datenbank-Seite (32-64 Kb) Cache Header Meyer 123 ... Schneider 145 ... Müller 129 ... -- Forwarding-RID Slot-Array Extent Table Datenbanken, SS 12 Kapitel 9: Datenorganisation
Einfacher Index: Binäre Suchbaum Schlüssel (mit den ihnen zugeordneten Daten) bilden die Knoten eines binären Baums mit der Invariante: für jeden Knoten t mit Schlüssel t.key und alle Knoten l im linken Teilbaum von t, t.left, und alle Knoten r im rechten Teilbaum von t gilt: l.key t.key r.key Suchen eines Schlüssels k: Traversieren des Pfades von der Wurzel bis zu k bzw. einem Blatt Einfügen eines Schlüssels k: Suchen von k und Anfügen eines neuen Blatts Löschen eines Schlüssel k: Ersetzen von k durch das „rechteste“ Blatt links von k Worst-Case-Suchzeit für n Schlüssel: O(n) bei geeigneten Rebalancierungsalgorithmen (AVL-Bäume, Rot-Schwarz-Bäume, usw.): O(log n) Datenbanken, SS 12 Kapitel 9: Datenorganisation
Beispiel für einen binären Suchbaum London, Paris, Madrid, Kopenhagen, Lissabon, Zürich, Frankfurt, Wien, Amsterdam, Florenz London Kopenhagen Paris Frankfurt Lissabon Madrid Zürich Amsterdam Wien Florenz Datenbanken, SS 12 Kapitel 9: Datenorganisation
Datenbanken, SS 12 Kapitel 9: Datenorganisation
S.. Suchschlüssel D.. Weitere Daten V.. Verweise (SeitenNr) Datenbanken, SS 12 Kapitel 9: Datenorganisation
Datenbanken, SS 12 Kapitel 9: Datenorganisation
Einfügen eines neuen Objekts (Datensatz) in einen B-Baum Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 7 10 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 3 7 10 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 ? 3 7 10 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 ? 3 7 10 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 ? 3 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 ? 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 1 10 ? 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 1 10 ? 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 ? 1 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 ? 1 1 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 ? 1 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 ? 2 1 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 ? 2 1 2 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 4 10 ? 1 2 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 4 10 ? 4 1 2 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 4 10 ? 4 1 2 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 4 10 ? 4 1 2 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 4 3 ? 10 4 1 2 3 7 13 19 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 3 ? 10 1 2 13 19 4 7 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 11 3 ? 10 1 2 13 19 4 7 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 3 ? 10 1 2 11 13 19 4 7 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 21 3 ? 10 1 2 11 13 19 4 7 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 21 3 ? 10 1 2 11 13 19 4 7 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 3 ? 10 1 2 11 13 19 21 4 7 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 3 ? 10 1 2 11 13 19 21 12 4 7 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 3 ? 10 1 2 11 13 19 21 12 4 7 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 3 ? 10 1 2 11 13 19 21 12 4 7 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 3 ? 10 13 1 2 11 13 19 21 12 4 7 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 3 ? 10 13 1 2 11 19 21 4 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 12 3 ? 10 13 1 2 19 21 4 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 14 3 ? 10 13 1 2 19 21 4 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 14 3 ? 10 13 1 2 14 19 21 4 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 15 3 ? 10 13 1 2 14 19 21 4 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 20 3 ? 10 13 1 2 14 15 19 21 4 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 20 3 ? 10 13 20 1 2 14 15 19 21 4 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 20 3 ? 10 13 20 1 2 14 15 19 21 4 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 20 3 ? 10 13 19 20 1 2 14 15 19 21 4 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 20 3 ? 10 13 19 20 21 1 2 14 15 4 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 5 3 ? 10 13 19 20 21 1 2 14 15 4 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 5 3 ? 10 13 19 20 21 1 2 14 15 4 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 5 3 ? 10 13 19 20 21 1 2 14 15 4 5 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 6 3 ? 10 13 19 20 21 1 2 14 15 4 5 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 6 3 ? 10 13 19 20 21 1 2 14 15 4 5 6 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 8 3 ? 10 13 19 1 2 20 21 14 15 4 5 6 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 8 3 ? 10 13 19 1 2 20 21 14 15 8 4 5 6 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 8 3 ? 10 13 19 1 2 20 21 14 15 8 4 5 6 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 8 3 ? 10 13 19 1 2 20 21 14 15 8 4 5 6 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 8 3 ? 10 13 19 1 2 20 21 4 5 14 15 8 6 7 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 6 3 ? 10 13 19 1 2 20 21 4 5 6 14 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 6 3 ? 10 13 19 1 2 20 21 4 5 14 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 6 3 ? 10 13 19 1 2 20 21 4 5 14 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 6 3 ? 10 13 19 1 2 20 21 4 5 14 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 6 3 6 3 ? 10 13 19 1 2 20 21 4 5 14 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 3 6 13 ? 19 1 2 20 21 4 5 14 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 3 6 13 ? 19 1 2 20 21 4 5 14 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 10 3 6 13 ? 19 1 2 20 21 4 5 14 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 B-Baum mit Minimaler Speicherplatz- ausnutzung 10 3 6 13 ? 19 1 2 20 21 4 5 14 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 23 10 3 6 13 ? 19 1 2 20 21 4 5 14 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 3 6 13 ? 19 1 2 20 21 23 4 5 14 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 14 10 3 6 13 ? 19 1 2 20 21 23 4 5 14 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 14 10 Unterlauf 3 6 13 ? 19 1 2 20 21 23 4 5 14 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 Unterlauf 3 6 13 ? 19 1 2 20 21 23 4 5 15 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 3 6 13 ? 20 1 2 21 23 4 5 15 19 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 5 10 3 6 13 ? 20 1 2 21 23 4 5 15 19 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 5 10 3 6 13 ? 20 1 2 21 23 4 5 15 19 Unterlauf 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 3 6 13 ? 20 1 2 21 23 4 15 19 merge 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 3 6 13 ? 20 1 2 21 23 4 15 19 merge 7 8 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 Unterlauf 3 13 ? 20 1 2 21 23 4 6 7 8 15 19 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 merge 3 13 ? 20 1 2 21 23 4 6 7 8 15 19 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 10 merge 3 13 ? 20 1 2 21 23 4 6 7 8 15 19 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 3 10 13 20 ? 1 2 21 23 4 6 7 8 15 19 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Sukzessiver Aufbau eines B-Baums vom Grad k=2 Schrumpfung, Freie Knoten 3 10 13 20 ? 1 2 21 23 4 6 7 8 15 19 11 12 Datenbanken, SS 12 Kapitel 9: Datenorganisation
B-Baum (Eigenschaften) Die Höhe h ist bei Grad t und n Einträgen Daher dauert die Suche O(log n) Beim Einfügen kommt evtl. ein split dazu O(1) Beim Löschen ein evtl. merge O(1) Alle Operationen dauern O(log n) Allerdings können so nur Zahlen gespeichert werden. Datenbanken, SS 12 Kapitel 9: Datenorganisation
B+-Baum Referenz- schlüssel Such- schlüssel Datenbanken, SS 12 Kapitel 9: Datenorganisation
Datenbanken, SS 12 Kapitel 9: Datenorganisation
Datenbanken, SS 12 Kapitel 9: Datenorganisation
Bäume: logk(n) viele Seitenzugriffe .. Hashing: Fast eindeutige Zuordnung von Datum zu Bucket (Behälter) h: S → B S Schlüssel (in diesem Kontext hier: nicht notwendigerweise Schlüssel im Sinne eines logischen Schema) B: Nummerierung von n Behältern Zugriff innerhalb von 1-2 Schritten Charakteristiken der gesuchten Hash-Funktion Fester vs flexibler Wertebereich Gute Verteilung über den Wertebereich, auch bei schlechter Verteilung der Datencharakteristiken über den Eingabebereich Datenbanken, SS 12 Kapitel 9: Datenorganisation
Hashing Anforderungen an h: Beispiele für brauchbare Hash-Funktionen Abbildung h: D [0..m-1], genannt Hash-Funktion, von Schlüsseln x1, ..., xn aus Domain D (z.B. Strings) auf Positionen h(x1), ..., h(xn) in Array a[0..m-1], genannt Hash-Tabelle (mit n < m) Speicherung von Schlüssel xi in a[h(xi)] Anforderungen an h: sehr effiziente Berechenbarkeit zufällige „Streuung“ (Randomisierung) von x1, ..., xn auf [0..m-1] Urbilder von j1, j2 Î [0..m-1] annähernd gleich groß für alle j1, j2 und alle möglichen x1, ..., xn für geordnete Schlüssel x1 < x2 < ... < xn sollte die Ordnung von h(x1), h(x2), ..., h(xn) eine zufällige Permutation sein Beispiele für brauchbare Hash-Funktionen h(x) = (ax + b) mod m für Integers x mit Konstanten a, b h(x) = (mittlere k Ziffern von x2) mod m für k-stellige Integers x h(x) = (ord(c1)+...+ord(ck)) mod m für Strings c1c2...ck Î å k mit ord: S Î [1..| å |] Datenbanken, SS 12 Kapitel 9: Datenorganisation
Statisches Hashing Datenbanken, SS 12 Kapitel 9: Datenorganisation
Datenbanken, SS 12 Kapitel 9: Datenorganisation
Datenbanken, SS 12 Kapitel 9: Datenorganisation
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) Datenbanken, SS 12 Kapitel 9: Datenorganisation
Datenbanken, SS 12 Kapitel 9: Datenorganisation
4 7 13 6 18 32 48 Datenbanken, SS 12 Kapitel 9: Datenorganisation
7 13 4 6 18 32 48 Datenbanken, SS 12 Kapitel 9: Datenorganisation
SQL: Create Index Grobsyntax: Beispiele: CREATE [UNIQUE] INDEX Indexname ON Tabellenname (Attribut1, Attribut2 ..) DROP INDEX Indexname Primary Key hat immer einen Index (muss nicht explizit indexiert werden) .. Oracle: default-Indextyp ist ein B+ Baum Beispiele: CREATE INDEX Studenten_idx1 ON Studenten(Semester) DROP INDEX Studenten_idx1 Datenbanken, SS 12 Kapitel 9: Datenorganisation
Objektballung / Clustering clustered key PersNr / gelesenVon 2125 Name Rang … Sokrates C4 Titel VorlNr Ethik 5041 2126 Russel …. Vorlesungen VorlNr Titel SWS gelesenVon 5001 Grundzüge 4 2137 5041 Ethik 2125 5043 Erkenntnistheorie 3 2126 … Professoren PersNr Name Rang Raum 2125 Sokrates C4 226 2126 Russel 232 … Datenbanken, SS 12 Kapitel 9: Datenorganisation
Datenbanken, SS 12 Kapitel 9: Datenorganisation
Oracle Clusters und Indexierung Mit einem B+ Baum: CREATE CLUSTER cluster name ( attribute type, ... ); CREATE INDEX index name ON cluster name; CREATE TABLE table name ( usual parameters) CLUSTER cluster name ( attribute name ); Mit Hashing: CREATE CLUSTER cluster name ( attribute type, ... ) [HASH IS hashfunktion] HASHKEYS anzahl; Datenbanken, SS 12 Kapitel 9: Datenorganisation
Oracle Clusters: Beispiel CREATE CLUSTER ProfessorenVorlesungen (PersNo NUMBER) HASH IS PersNo HASHKEYS 150; CREATE TABLE Vorlesungen (GelesenVon NUMBER, ... ) CLUSTER ProfessorenVorlesungen (GelesenVon); Datenbanken, SS 12 Kapitel 9: Datenorganisation