Teil IV Dateiorganisation und Zugriffsstrukturen Dateiorganisation und Zugriffsstrukturen Überblick 1 Klassifikation der Speichertechniken c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–1 Dateiorganisation und Zugriffsstrukturen Überblick 1 Klassifikation der Speichertechniken 2 Statische Verfahren c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–1 Dateiorganisation und Zugriffsstrukturen Überblick 1 Klassifikation der Speichertechniken 2 Statische Verfahren 3 Baumverfahren c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–1 Dateiorganisation und Zugriffsstrukturen Überblick 1 Klassifikation der Speichertechniken 2 Statische Verfahren 3 Baumverfahren 4 Hashverfahren c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–1 Dateiorganisation und Zugriffsstrukturen Überblick 1 Klassifikation der Speichertechniken 2 Statische Verfahren 3 Baumverfahren 4 Hashverfahren 5 Dynamisches Hashen c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–1 Dateiorganisation und Zugriffsstrukturen Überblick 1 Klassifikation der Speichertechniken 2 Statische Verfahren 3 Baumverfahren 4 Hashverfahren 5 Dynamisches Hashen 6 Cluster-Bildung c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–1 Dateiorganisation und Zugriffsstrukturen Überblick 1 Klassifikation der Speichertechniken 2 Statische Verfahren 3 Baumverfahren 4 Hashverfahren 5 Dynamisches Hashen 6 Cluster-Bildung 7 Physische Datendefinition in SQL-Systemen c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–1 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Einordnung in 5-Schichten-Architektur Speichersystem fordert über Systempufferschnittstelle Seiten an interpretiert diese als interne Datensätze interne Realisierung der logischen Datensätze mit Hilfe von Zeigern, speziellen Indexeinträgen und weiteren Hilfsstrukturen Zugriffssystem abstrahiert von der konkreten Realisierung c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–2 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Einordnung /2 Mengenorientierte MOS Schnittstelle Datensystem Satzorientierte SOS Schnittstelle Zugriffssystem Interne ISS Satzschnittstelle Speichersystem SystempufferSPS schnittstelle Pufferverwaltung DS Datei- schnittstelle Betriebssystem GS Geräteschnittstelle Externspeicher c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–3 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Klassifikation der Speichertechniken Kriterien für Zugriffsstrukturen oder Zugriffsverfahren: I I I organisiert interne Relation selbst (Dateiorganisationsform) oder zusätzliche Zugriffsmöglichkeit auf bestehende interne Relation (Zugriffspfad) Art der Zuordnung von gegebenen Attributwerten zu Datensatz-Adressen: Schlüsselvergleich = Zuordnung von Schlsselwert zu Adresse über Hilfsstruktur; Schlüsseltransformation = Berechnung der Adresse aus Schlüsselwert (z.B. über Hashfunktion) Arten von Anfragen, die durch Dateiorganisationsformen und Zugriffspfade effizient unterstützt werden können c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–4 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Klassifikation der Speichertechniken /2 Zugriffsverfahren Zugriffspfad Sekundärindex nicht geclustert dicht besetzt Dateiorganisation ohne Index Primärindex nicht geclustert geclustert dicht besetzt c Sattler / Saake dünn besetzt Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–5 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Klassifikation /3 Dünn- vs. dichtbesetzter Index dünnbesetzter Index: nicht für jeden Zugriffsattributwert K ein Eintrag in Indexdatei sondern z.B. nur für Seitenanführer einer sortieren Relation dichtbesetzter Index: für jeden Datensatz der internen Relation ein Eintrag in Indexdatei Geclusterter vs. nicht-geclusterter Index geclusterter Index: in der gleichen Form sortiert wie interne Relation nicht-geclusterter Index: anders organisiert als interne Relation Primärindex oft dünnbesetzt und geclustert jeder dünnbesetzte Index ist auch geclusterter Index, aber nicht umgekehrt Sekundärindex kann nur dichtbesetzter, nicht-geclusterter Index sein (auch: invertierte Datei) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–6 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Geclusterter vs. nicht-geclusterter Index mehrstufiger Index ... ... geclusteter Index Hauptdatei ... ... mehrstufiger Index nichtgeclusterter Index ... ... Hauptdatei ... c Sattler / Saake Datenbank-Implementierungstechniken ... Letzte Änderung: 9. Mai 2017 4–7 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Statische vs. dynamische Struktur statische Zugriffsstruktur: optimal nur bei bestimmter (fester) Anzahl von verwaltenden Datensätzen dynamische Zugriffsstruktur: unabhängig von der Anzahl der Datensätze optimal I I dynamische Adresstransformationsverfahren verändern dynamisch Bildbereich der Transformation dynamische Indexverfahren verändern dynamisch Anzahl der Indexstufen ⇒ in DBS üblich c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–8 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Statische Verfahren Heap, indexsequenziell, indiziert-nichtsequenziell oft grundlegende Speichertechnik in RDBS direkte Organisationsformen: keine Hilfsstruktur, keine Adressberechnung (Heap, sequenziell) statische Indexverfahren für Primärindex und Sekundärindex dateibasierte Indexstrukturen unsortiert sortiert Heap ohne Index mit Index sequenzielle Datei c Sattler / Saake dünn besetzt dicht besetzt indexsequenzielle Datei indexiert-nichtsequenzielle Datei Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–9 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Heap-Organisation völlig unsortiert speichern physische Reihenfolge der Datensätze ist zeitliche Reihenfolge der Aufnahme von Datensätzen p42 p47 8832 Tamara Jagellowsk ... 11.11.2009 5588 Gunter Saake ... 5.10.1966 4711 Kai-Uwe Sattler ... 1.4.1970 4242 Annie De Monti ... 3.5.1999 6660 Erwin Maier ... 1.5.1978 6644 Andreas Heuer ... 11.12.1988 9912 Max Mustermann ... 1.1.1949 frei c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–10 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Heap: Operationen insert: Zugriff auf letzte Seite der Datei. Genügend freier Platz ⇒ Satz anhängen. Sonst nächste freie Seite holen delete: lookup, dann Löschbit auf 0 gesetzt lookup: sequenzielles Durchsuchen der Gesamtdatei, maximaler Aufwand (Heap-Datei meist zusammen mit Sekundärindex eingesetzt; oder für sehr kleine Relationen) Komplexitäten: I I Neuaufnahme von Daten O(1) Suchen O(n) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–11 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Sequenzielle Speicherung sortiertes Speichern der Datensätze p42 p47 4242 Annie De Monti ... 4711 Kai-Uwe Sattler ... 3.5.1999 1.4.1970 5588 Gunter Saake ... 5.10.1966 6644 Andreas Heuer ... 11.12.1988 6660 Erwin Maier ... 1.5.1978 8832 Tamara Jagellowsk ... 11.11.2009 9912 Max Mustermann ... 1.1.1949 frei c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–12 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Sequenzielle Datei: Operationen insert: Seite suchen, Datensatz einsortieren ⇒ beim Anlegen oder sequenziellen Füllen einer Datei jede Seite nur bis zu gewissem Grad (etwa 66%) füllen delete: Aufwand bleibt Folgende Dateiorganisationsformen: I I I schnelleres lookup mehr Platzbedarf (durch Hilfsstrukturen wie Indexdateien) mehr Zeitbedarf bei insert und delete klassische Indexform: indexsequenzielle Dateiorganisation c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–13 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Indexsequenzielle Dateiorganisation Kombination von sequenzieller Hauptdatei und Indexdatei: indexsequenzielle Dateiorganisationsform Indexdatei kann geclusterter, dünnbesetzter Index sein mindestens zweistufiger Baum I I Blattebene ist Hauptdatei (Datensätze) jede andere Stufe ist Indexdatei c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–14 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Indexsequenzielle Dateiorganisation /2 p42 p2 4242 42 4242 Annie De Monti ... 6660 47 4711 Kai-Uwe Sattler ... 3.5.1999 1.4.1970 5588 Gunter Saake ... 5.10.1966 6644 Andreas Heuer ... 11.12.1988 p47 6660 Erwin Maier ... 1.5.1978 8832 Tamara Jagellowsk ... 11.11.2009 9912 Max Mustermann ... 1.1.1949 frei c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–15 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Aufbau der Indexdatei Datensätze in Indexdatei: (Primärschlüsselwert, Seitennummer) zu jeder Seite der Hauptdatei genau ein Index-Datensatz in Indexdatei Problem: „Wurzel“ des Baumes bei einem einstufigen Index nicht nur eine Seite c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–16 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Aufbau der Indexdatei /2 p2 p42 2344 99 4242 Annie De Monti ... 4242 42 4711 Kai-Uwe Sattler ... 1.4.1970 6660 47 5588 Gunter Saake ... 5.10.1966 6644 Andreas Heuer ... 11.12.1988 p97 3.5.1999 p47 9999 13 6660 Erwin Maier ... 1.5.1978 14001 43 8832 Tamara Jagellowsk ... 11.11.2009 9912 Max Mustermann ... 1.1.1949 frei p13 9999 Hans Guck ... 3.5.1978 11234 Bibi Berg ... 11.11.2008 13444 Bob Meister ... 1.1.1969 frei c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–17 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Mehrstufiger Index Optional: Indexdatei wieder indexsequenziell verwalten Idealerweise: Index höchster Stufe nur noch eine Seite p2 p117 Indexdatei Stufe 2 c Sattler / Saake 2344 2 2344 99 9999 97 4242 42 6660 47 p97 9999 13 14001 43 Datenbank-Implementierungstechniken Indexdatei Stufe 1 Letzte Änderung: 9. Mai 2017 4–18 Dateiorganisation und Zugriffsstrukturen Statische Verfahren lookup bei indexsequenziellen Dateien lookup-Operation sucht Datensatz zum Zugriffsattributwert w Indexdatei sequenziell durchlaufen, dabei (v1 , s) im Index gesucht mit v1 ≤ w: I I (v1 , s) ist letzter Satz der Indexdatei, dann kann Datensatz zu w höchstens auf dieser Seite gespeichert sein (wenn er existiert) nächster Satz (v2 , s0 ) im Index hat v2 > w, also muß Datensatz zu w, wenn vorhanden, auf Seite s gespeichert sein (v1 , s) überdeckt Zugriffsattributwert w c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–19 Dateiorganisation und Zugriffsstrukturen Statische Verfahren insert bei indexsequenziellen Dateien insert: zunächst mit lookup Seite finden Falls Platz, Satz sortiert in gefundener Seite speichern; Index anpassen, falls neuer Satz der erste Satz in der Seite Falls kein Platz, neue Seite von Freispeicherverwaltung holen; Sätze der „zu vollen“ Seite gleichmäßig auf alte und neue Seite verteilen; für neue Seite Indexeintrag anlegen Alternativ neuen Datensatz auf Überlaufseite zur gefundenen Seite c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–20 Dateiorganisation und Zugriffsstrukturen Statische Verfahren delete bei indexsequenziellen Dateien delete: zunächst mit lookup Seite finden Satz auf Seite löschen (Löschbit auf 0) erster Satz auf Seite: Index anpassen Falls Seite nach Löschen leer: Index anpassen, Seite an Freispeicherverwaltung zurück c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–21 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Probleme indexsequenzieller Dateien stark wachsende Dateien: Zahl der linear verketteten Indexseiten wächst; automatische Anpassung der Stufenanzahl nicht vorgesehen stark schrumpfende Dateien: nur zögernde Verringerung der Index- und Hauptdatei-Seiten unausgeglichene Seiten in der Hauptdatei (unnötig hoher Speicherplatzbedarf, zu lange Zugriffszeit) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–22 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Indiziert-nichtsequenzieller Zugriffspfad zur Unterstützung von Sekundärschlüsseln mehrere Zugriffpfade dieser Form pro Datei möglich einstufig oder mehrstufig: höhere Indexstufen wieder indexsequenziell organisiert c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–23 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Aufbau der Indexdatei Sekundärindex, dichtbesetzter und nicht-geclusteter Index zu jedem Satz der Hauptdatei Satz (w, s) in der Indexdatei w Sekundärschlüsselwert, s zugeordnete Seite I I entweder für ein w mehrere Sätze in die Indexdatei aufnehmen oder für ein w Liste von Adresse in der Hauptdatei angeben c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–24 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Aufbau der Indexdatei /2 p2 p42 Andreas 42 4242 Max De Monti ... Annie 47 4711 Kai-Uwe Sattler ... 1.4.1970 Gunter 42 5588 Gunter Saake ... 5.10.1966 Kai-Uwe 42 6644 Andreas Heuer ... 11.12.1988 p97 3.5.1999 p47 42 6660 Annie Maier ... 1.5.1978 Max 47 8832 Tamara Jagellowsk ... 11.11.2009 Tamara 47 9912 Max Mustermann ... 1.1.1949 Max frei c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–25 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Aufbau der Indexdatei /3 p2 p42 Andreas 42 4242 Max De Monti ... Annie 47 4711 Kai-Uwe Sattler ... 1.4.1970 Gunter 42 5588 Gunter Saake ... 5.10.1966 Kai-Uwe 42 6644 Andreas Heuer ... 11.12.1988 p97 3.5.1999 p47 Max 42, 47 6660 Annie Maier ... 1.5.1978 47 8832 Tamara Jagellowsk ... 11.11.2009 9912 Max Mustermann ... 1.1.1949 Tamara frei c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–26 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Operationen lookup: w kann mehrfach auftreten, Überdeckungstechnik nicht benötigt insert: Anpassen der Indexdateien delete: Indexeintrag entfernen c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–27 Dateiorganisation und Zugriffsstrukturen Baumverfahren Baumverfahren Stufenanzahl dynamisch verändern wichtigste Baumverfahren: B-Bäume und ihre Varianten B-Baum-Varianten sind noch „allgegenwärtiger“ in heutigen Datenbanksystemen als SQL SQL nur in der relationalen und objektrelationalen Datenbanktechnologie verbreitet; B-Bäume überall als Grundtechnik eingesetzt B-Bäume Daten in den Knoten Daten in den Blättern B-Baum TID-B+-Baum c Sattler / Saake Inline-B+-Baum Präfix-B+-Baum Datenbank-Implementierungstechniken BLOB-B+-Baum Letzte Änderung: 9. Mai 2017 4–28 Dateiorganisation und Zugriffsstrukturen Baumverfahren B-Bäume Ausgangspunkt: ausgeglichener, balancierter Suchbaum Ausgeglichen oder balanciert: alle Pfade von der Wurzel zu den Blättern des Baumes gleich lang Hauptspeicher-Implementierungsstruktur: binäre Suchbäume, beispielsweise AVL-Bäume von Adelson-Velskii und Landis Datenbankbereich: Knoten der Suchbäume zugeschnitten auf Seitenstruktur des Datenbanksystems mehrere Zugriffsattributwerte auf einer Seite Mehrwegebäume c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–29 Dateiorganisation und Zugriffsstrukturen Baumverfahren Prinzip des B-Baumes B-Baum von Bayer (B für balanciert, breit, buschig, Bayer, NICHT: binär) dynamischer, balancierter Indexbaum, bei dem jeder Indexeintrag auf eine Seite der Hauptdatei zeigt Mehrwegebaum völlig ausgeglichen, wenn 1 alle Wege von Wurzel bis zu Blättern gleich lang 2 jeder Knoten gleich viele Indexeinträge vollständiges Ausgleichen zu teuer, deshalb B-Baum-Kriterium: Jede Seite außer der Wurzelseite enthält zwischen m und 2m Einträge. c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–30 Dateiorganisation und Zugriffsstrukturen Baumverfahren Definition B-Baum Ordnung eines B-Baumes ist minimale Anzahl der Einträge auf den Indexseiten außer der Wurzelseite Bsp.: B-Baum der Ordnung 8 fasst auf jeder inneren Indexseite zwischen 8 und 16 Einträgen Def.: Ein Indexbaum ist ein B-Baum der Ordnung m, wenn er die folgenden Eigenschaften erfüllt: 1 2 3 4 Jede Seite enthält höchstens 2m Elemente. Jede Seite, außer der Wurzelseite, enthält mindestens m Elemente. Jede Seite ist entweder eine Blattseite ohne Nachfolger oder hat i + 1 Nachfolger, falls i die Anzahl ihrer Elemente ist. Alle Blattseiten liegen auf der gleichen Stufe. c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–31 Dateiorganisation und Zugriffsstrukturen Baumverfahren Eigenschaften des B-Baumes n Datensätze in der Hauptdatei ⇒ in logm (n) Seitenzugriffen von der Wurzel zum Blatt I I I Durch Balancierungskriterium wird Eigenschaft nahe an der vollständigen Ausgeglichenheit erreicht (1. Kriterium vollständig erfüllt, 2. Kriterium näherungsweise) Kriterium garantiert 50% Speicherplatzausnutzung einfache, schnelle Algorithmen zum Suchen, Einfügen und Löschen von Datensätzen (Komplexität von O(logm (n))) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–32 Dateiorganisation und Zugriffsstrukturen Baumverfahren Suchen in B-Bäumen lookup wie in statischen Indexverfahren Startend auf Wurzelseite Eintrag im B-Baum ermitteln, der den gesuchten Zugriffsattributwert w überdeckt ⇒ Zeiger verfolgen, Seite nächster Stufe laden Suchen: 38, 20, 6 25 10 2 5 7 20 8 13 30 22 14 c Sattler / Saake 15 24 16 32 26 27 28 Datenbank-Implementierungstechniken 35 40 38 41 42 45 Letzte Änderung: 9. Mai 2017 46 4–33 Dateiorganisation und Zugriffsstrukturen Baumverfahren Einfügen in B-Bäumen Einfügen eines Wertes w I I I mit lookup entsprechende Blattseite suchen passende Seite n < 2m Elemente, w einsortieren passende Seite n = 2m Elemente, neue Seite erzeugen, F F F I ersten m Werte auf Originalseite letzten m Werte auf neue Seite mittleres Element auf entsprechende Indexseite nach oben eventuell dieser Prozess rekursiv bis zur Wurzel c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–34 Dateiorganisation und Zugriffsstrukturen Baumverfahren Einfügen in einen B-Baum: Beispiel 1 5 1 1 Split 1 6 c Sattler / Saake 5 6 1 2 5 2 5 7 2 1 2 5 2 1 Datenbank-Implementierungstechniken 5 6 7 Letzte Änderung: 9. Mai 2017 4–35 Dateiorganisation und Zugriffsstrukturen Baumverfahren Einfügen in einen B-Baum: Beispiel /2 Split 2 4 6 1 7 5 8 1 2 6 4 5 1 2 6 4 5 3 7 8 1 7 2 3 6 4 Split Split 2 4 7 5 4 6 2 1 3 5 7 6 8 1 c Sattler / Saake 8 Datenbank-Implementierungstechniken 3 5 7 8 Letzte Änderung: 9. Mai 2017 4–36 Dateiorganisation und Zugriffsstrukturen Baumverfahren Löschen in B-Bäumen bei weniger als m Elementen auf Seite: Unterlauf Löschen eines Wertes w: Bsp.: 24; 28, 38, 35 I I I mit lookup entsprechende Seite suchen w auf Blattseite gespeichert ⇒ Wert löschen, eventuell Unterlauf behandeln w nicht auf Blattseite gespeichert ⇒ Wert löschen, durch lexikographisch nächstkleineres Element von einer Blattseite ersetzen, eventuell auf Blattseite Unterlauf behandeln Unterlaufbehandlung I I Ausgleichen mit der benachbarten Seite (benachbarte Seite n Elemente mit n > m) oder Zusammenlegen zweier Seiten zu einer (Nachbarseite n = m Elemente), das „mittlere“ Element von Indexseite darüber dazu, auf Indexseite eventuell Unterlauf behandeln c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–37 Dateiorganisation und Zugriffsstrukturen Baumverfahren Einfügen und Löschungen im B-Baum Einfügen des Elementes 22; Löschen von 22 20 7 10 15 18 26 20 7 10 c Sattler / Saake 15 18 30 35 40 30 22 26 Datenbank-Implementierungstechniken 35 40 Letzte Änderung: 9. Mai 2017 4–38 Dateiorganisation und Zugriffsstrukturen Baumverfahren Komplexität der Operationen Aufwand beim Einfügen, Suchen und Löschen im B-Baum immer O(logm (n)) Operationen entspricht genau der „Höhe“ des Baumes Konkret: Seiten der Größe 4 KB, Zugriffsattributwert 32 Bytes, 8-Byte-Zeiger: zwischen 50 und 100 Indexeinträge pro Seite; Ordnung dieses B-Baumes 50 1.000.000 Datensätze: log50 (1.000.000) = 4 Seitenzugriffe im schlechtesten Fall Wurzelseite jedes B-Baumes normalerweise im Puffer: 3 Seitenzugriffe c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–39 Dateiorganisation und Zugriffsstrukturen Baumverfahren Varianten B+ -Bäume: nur Blattebene enthält Daten B∗ -Bäume: Baum ist hohl Aufteilen von Seiten vermeiden durch „Shuffle“ Präfix-B-Bäume: Zeichenketten als Zugriffsattributwerte, nur Präfix indexieren c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–40 Dateiorganisation und Zugriffsstrukturen Baumverfahren B+ -Baum: Motivation B-Baum: Wie/wo werden Nicht-Schlüsseldaten (Tupel, TIDs) gespeichert? I I Zusammen mit Schlüsseln in allen Knoten? Problem beim Traversieren des Baumes, z.B. bei Bereichsanfragen rangeSearch(7,35) 25 10 2 5 7 20 8 13 30 22 14 c Sattler / Saake 15 24 16 32 26 27 28 Datenbank-Implementierungstechniken 35 40 38 41 42 45 Letzte Änderung: 9. Mai 2017 46 4–41 Dateiorganisation und Zugriffsstrukturen Baumverfahren B+ -Baum in der Praxis am häufigsten eingesetzte Variante des B-Baumes: I I effizientere Änderungsoperationen, insb. Löschen Verringerung der Baumhöhe Änderungen gegenüber B-Baum I I in inneren Knoten nur noch Zugriffsattributwert und Zeiger auf nachfolgenden Seite der nächsten Stufe; nur Blattknoten enthalten neben Zugriffsattributwert die Daten (Datensätze bzw. Verweise auf Datensätze in der Hauptdatei) Knoten der Blattebene sind untereinander verkettet für effiziente Unterstützung von Bereichsanfragen c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–42 Dateiorganisation und Zugriffsstrukturen Baumverfahren Ordnung; Operationen Ordnung für B+ -Baum: (x, y ), x Mindestbelegung der Indexseiten, y Mindestbelegung der Blattseiten delete gegenüber B-Baum effizienter („Ausleihen“ eines Elementes von der Blattseite entfällt) Zugriffsattributwerte in inneren Knoten können sogar stehenbleiben häufig als Primärindex eingesetzt B+ -Baum ist dynamische, mehrstufige, indexsequenziellen Datei c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–43 Dateiorganisation und Zugriffsstrukturen Baumverfahren B+ -Baum: Blattebene mit Verweisen 23 3 7 13 42 67 23 99 35 40 Blattebene 7 Ann Maier 3 Tom Tigger 35 May Flower 40 Dirk Mejer 13 Tim Tahler 23 Maik Muggel c Sattler / Saake Datenbank-Implementierungstechniken Hauptdatei Letzte Änderung: 9. Mai 2017 4–44 Dateiorganisation und Zugriffsstrukturen Baumverfahren B+ -Baum: Datenstrukturen BPlusBranchNode = record of nkeys: int; ptrs: array [0 .. nkeys ] of PageNum; keys: array [1 .. nkeys ] of KeyType; level: int; /* Level= 1 zeigt an, dass die ptrs auf Blätter zeigen end; BPlusLeafNode = record of nkeys: int; keys: array [1 .. nkeys ] of KeyType; payload: array [1 .. nkeys ] of LoadType ; nextleaf: PageNum; end; c Sattler / Saake Datenbank-Implementierungstechniken */ /* Daten bzw. TIDs */ Letzte Änderung: 9. Mai 2017 4–45 Dateiorganisation und Zugriffsstrukturen Baumverfahren Operationen im B+ -Baum lookup: wie im B-Baum jedoch immer bis zur Blattebene search(u, o): Lookup für unteren Wert u, Traversieren auf der Blattebene bis zum oberen Wert o insert: ähnlich zum B-Baum, im Fall des Split bei Überlaufbehandlung wird nur ein Separatorschlüssel im Elternknoten eingefügt (z.B. Kopie des kleinsten Schlüsselwertes des „rechten“ Kindknotens oder geeigneter Wert zwischen beiden Knoten) delete: ähnlich zum B-Baum, jedoch I I I Löschen der Daten zunächst nur auf Blattebene bei Unterlauf: entweder Ausgleich mit Nachbarknoten oder Vereinigen mit Nachbarknoten; ggf. Anpassen (Ausgleich) oder Löschen (Vereinigen) des Separatorschlüssels alternativ: Unterlauf akzeptieren und durch spätere inserts oder Reorganisation auflösen c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–46 Dateiorganisation und Zugriffsstrukturen Baumverfahren Weitere Entwurfsentscheidungen für B+ -Baum Schlüsselsuche im Knoten: sequenzielle Suche vs. binäre Suche vs. Interpolation Search Knotengröße: Maximieren der Anzahl der Vergleiche (Knotennutzen) pro I/O-Zeiteinheit Seitengröße Sätze Knoten- I/O-Zeit Nutzen (KB) / Seite nutzen (ms) / Zeit 4 143 ≈7 5,020 1,427 16 573 ≈9 5,080 1,804 64 2.294 ≈11 5,320 2,098 128 4.588 ≈12 5,640 2,157 256 9.175 ≈13 6,280 2,096 1.024 36.700 ≈15 10,120 1,498 4.096 146.801 ≈17 25,480 0,674 Literatur: G. Graefe: Modern B-Tree Techniques, Foundations and Trends in Databases, 2010. c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–47 Dateiorganisation und Zugriffsstrukturen Baumverfahren Weitere Entwurfsentscheidungen für B+ -Baum /2 Knotengröße: bei großen Puffern kann großer Teil der inneren Knoten im Puffer gehalten werden größere Knoten (im MB-Bereich) sinnvoll Verzögern des Splits bei Überlaufbehandlung: Ausgleichen mit Nachbarknoten soweit möglich; verbessert Auslastung der Knoten zusätzliche Verweise zwischen Knoten I I z.B. zwischen inneren Knoten der gleichen Ebene, zu Elternknoten, etc. ermöglichen Konsistenzchecks, aber erschweren Sperren für Nebenläufigkeitskontrolle Konsistenzprüfung während der Traversierung I mögliche Inkonsistenzen durch Speicherfehler, konkurrierende Änderungen + Implementierungsfehler, . . . Cache-Optimierung: Knotenstruktur, Kompression (Präfix-/Suffix Truncation) Pointer Swizzling: zur Ersetzung der logischen Seitennummern durch physische Adressen c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–48 Architektur von DBMS Architekturen konkreter DBMS Präfix-B-Baum B-Baum über Zeichenkettenattribut I I lange Schlüssel in inneren Knoten hoher Speicherplatzbedarf vollständige Schlüssel eigentlich nicht notwendig, da nur „Wegweiser“ Idee: Verwaltung von Trennwerten I I Präfix-B-Baum in inneren Knoten nur Trennwerte, die lexikographisch zwischen den Werten liegen möglichst kurze Trennwerte, z.B. kürzester eindeutiger Präfix Tho Sara Soren Taddäus Theo Thomas Tom Zack aber: Beispiel „Vandenberg“ und „Vandenbergh“ c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–49 Architektur von DBMS Architekturen konkreter DBMS Mehr-Attribut-B-Baum B-Baum ist eindimensionale Indexstruktur, jedoch können mehrere Attribute als kompositer Schlüssel indexiert werden Beispiel create index NameIdx on KUNDE(Name, Vorname) Datenstruktur Meier§Klaus Meier§Alex Meier§Anne Meier§Heinz Meier§Karl Meier§Nino Meister§Anne Meister§Karl Pohl§Bernd allerdings: Attribute werden bei partial-match-Anfragen nicht gleich behandelt! c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–50 Architektur von DBMS Hashverfahren Hashverfahren Schlüsseltransformation und Überlaufbehandlung DB-Technik: Bildbereich entspricht Seiten-Adressraum Dynamik: dynamische Hashfunktionen oder Re-Hashen c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–51 Architektur von DBMS Hashverfahren Grundprinzipien Basis-Hashfunktion: h(k ) = k mod m m möglichst Primzahl Überlauf-Behandlung I I I I Überlaufseiten als verkettete Liste lineares Sondieren quadratisches Sondieren doppeltes Hashen c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–52 Architektur von DBMS Hashverfahren Hashverfahren für Datenbanken Tamara 0 h 1 2 Arnie Gunter Jerry Regis Kay Kai-Uwe Andreas Jerrie Kai Zuse 3 4 c Sattler / Saake Gunther Hastur Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–53 Architektur von DBMS Hashverfahren Operationen und Zeitkomplexität lookup, modify, insert, delete lookup benötigt maximal 1 + #B(h(w)) Seitenzugriffe #B(h(w)) Anzahl der Seiten (inklusive der Überlaufseiten) des Buckets für Hash-Wert h(w) Untere Schranke 2 (Zugriff auf Hashverzeichnis plus Zugriff auf erste Seite) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–54 Architektur von DBMS Hashverfahren Statisches Hashen: Probleme mangelnde Dynamik Vergrößerung des Bildbereichs erfordert komplettes Neu-Hashen Wahl der Hashfunktion entscheidend; Bsp.: Hash-Index aus 100 Buckets, Studenten über 6-stellige MATRNR (wird fortlaufend vergeben) hashen I I ersten beiden Stellen: Datensätze auf wenigen Seiten quasi sequenziell abgespeichert letzten beiden Stellen: verteilen die Datensätze gleichmäßig auf alle Seiten Sortiertes Ausgeben einer Relation schlecht c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–55 Architektur von DBMS Dynamisches Hashen Statisches vs. Dynamisches Hashen statische Hash-Verfahren I Neu-Hashen bei steigender Auslastung dynamische Hash-Verfahren I Hash-Verfahren mit dynamisch vergrösserbarem Bildbereich F I meist Verdopplung des Bildbereichs... oft in Verbindung mit zusätzlichem Index zur Adressierung von Blöcken lineares Hashen als Beispiel c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–56 Architektur von DBMS Dynamisches Hashen Lineares Hashen Folge von Hash-Funktionen, die wie folgt charakterisiert sind: I I hi : dom(Primärschlüssel) → {0, . . . , 2i × N} ist eine Folge von Hash-Funktionen mit i ∈ {0, 1, 2, . . .} und N als Anfangsgröße des Hash-Verzeichnisses Wert von i wird auch als Level der Hash-Funktion bezeichnet dom(Primärschlüssel) wird im folgenden als dom(Prim) abgekürzt c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–57 Architektur von DBMS Dynamisches Hashen Lineares Hashen /2 Für diese Hash-Funktionen gelten die folgenden Bedingungen: I I hi+1 (w) = hi (w) für etwa die Hälfte aller w ∈ dom(Prim) hi+1 (w) = hi (w) + 2i × N für die andere Hälfte Bedingungen sind zum Beispiel erfüllt, wenn hi (w) als w mod (2i × N) gewählt wird I Darstellung durch Bit-Strings, Hinzunahme eines Bits verdoppelt Bildbereich c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–58 Architektur von DBMS Dynamisches Hashen Prinzip lineares Hashen für ein w höchstens zwei Hash-Funktionen zuständig, deren Level nur um 1 differiert, Entscheidung zwischen diesen beiden durch Split-Zeiger I I sp Split-Zeiger (gibt an, welche Seite als nächstes geteilt wird) lv Level (gibt an, welche Hash-Funktionen benutzt werden) Aus Split-Zeiger und Level läßt sich die Gesamtanzahl Anz der belegten Seiten wie folgt berechnen: Anz = 2lv + sp Beide Werte werden am Anfang mit 0 initialisiert. c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–59 Architektur von DBMS Dynamisches Hashen Prinzip lineares Hashen /2 lv = 2 sp = 1 Seitennr. h(w) 0 000 1 01 10101010 10110101 2 10 01010101 01011010 3 11 11111111 11111110 4 100 c Sattler / Saake Seiten Überlaufseiten 00011011 10011001 11111101 00100000 Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–60 Architektur von DBMS Dynamisches Hashen Lookup s := hlv (w); if s < sp then s := hlv +1 (w); zuerst Hash-Wert mit der „kleineren“ Hash-Funktion bestimmen liegt dieser unter dem Wert des Split-Zeigers ⇒ größere Hash-Funktion verwenden c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–61 Architektur von DBMS Dynamisches Hashen Splitten einer Seite 1 2 3 Die Sätze der Seite (Bucket), auf die sp zeigt, werden mittels hlv +1 neu verteilt (ca. die Hälfte der Sätze wird auf Seite (Bucket) unter Hash-Nummer 2lv ∗ N + sp verschoben) Der Split-Zeiger wird weitergesetzt: sp := sp + 1; Nach Abarbeiten eines Levels wird wieder bei Seite 0 begonnen; der Level wird um 1 erhöht: if sp = 2lv ∗ N then begin lv := lv + 1; sp := 0 end; c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–62 Architektur von DBMS Dynamisches Hashen Beispiel nach Split lv = 2 sp = 2 Seitennr. h(w) 0 000 1 001 2 10 01010101 01011010 3 11 11111111 11111110 4 100 5 101 c Sattler / Saake Seiten Überlaufseiten 00011011 10011001 11111101 00100000 10101010 10110101 Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–63 Architektur von DBMS Dynamisches Hashen Problem lineares Hashen lv = 3 sp = 0 c Sattler / Saake Seitennr. h(w) 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 Seiten Überlaufseiten 00011011 10011001 01010101 01011010 00100000 10101010 10110101 11111111 11111110 Datenbank-Implementierungstechniken 11111101 Letzte Änderung: 9. Mai 2017 4–64 Architektur von DBMS Dynamisches Hashen Erweiterbares Hashen Problem: Split erfolgt an fester Position, nicht dort wo Seiten überlaufen Idee: binärer Trie zum Zugriff auf Indexseiten Blätter unterschiedlicher Tiefe I I Indexseiten haben Tiefenwert Split erfolgt bei Überlauf aber: Speicherung nicht als Trie, sondern als Array I entspricht vollständigem Trie mit maximaler Tiefe F “shared” Seiten als Blätter I Array der Grösse 2d für maximale Tiefe d I bei Überlauf: Indexgrösse muss möglicherweise verdoppelt werden! F erfordert nun nur einen Speicherzugriff! c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–65 Architektur von DBMS Dynamisches Hashen Erweiterbares Hashen /2 Ausgangslage: I Einfügen von 00111111 würde Überlauf bei erreichter maximaler Tiefe erzeugen Tiefe d=2 Index 00 01 10 11 c Sattler / Saake Seiten 00011011 00100000 2 01010101 01111010 2 10101010 10110101 2 11111111 11111110 2 Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–66 Architektur von DBMS Dynamisches Hashen Erweiterbares Hashen /3 Verdopplung der Indexgrösse Tiefe Index d=3 000 001 010 011 100 101 110 111 c Sattler / Saake Seiten 00011011 00100000 2 01010101 01111010 2 10101010 10110101 2 11111111 11111110 2 Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–67 Architektur von DBMS Dynamisches Hashen Erweiterbares Hashen /4 nun möglich: Split der Seite Tiefe d=3 Index 000 001 010 011 100 101 110 111 c Sattler / Saake Seiten 00011011 00100000 2 01010101 01000000 3 10101010 10110101 2 11111111 11111110 2 01111010 3 Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–68 Architektur von DBMS Dynamisches Hashen Spiral-Hashen Problem: zyklisch erhöhte Wahrscheinlichkeit des Splittens Lösung: unterschiedliche Dichte der Hashwerte I I Interpretation der Bit-Strings als binäre Nachkommadarstellung einer Zahl zwischen 0.0 und 1.0 Funktion von [0.0, 1.0] → [0.0, 1.0] so dass Dichte gleichmässig verteilter Werte nahe 1.0 doppelt so gross ist wie nahe 0.0 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–69 Architektur von DBMS Dynamisches Hashen Spiral-Hashen /2 Umverteilung mittels Exponentialfunktion Funktion exp(n) exp(n) = 2n − 1 erfüllt die Bedingungen I insbesondere gilt 20 − 1 = 0 und 21 − 1 = 1 Hashfunktion exhash exhash(k ) = exp(h(k )) = 2h(k ) − 1 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–70 Architektur von DBMS Dynamisches Hashen Spiral-Hashen /3 Wirkung der verwendeten Hashfunktion im Intervall 0.0 bis 1.0 n 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 c Sattler / Saake 2n − 1 0.0 0.0717735 0.1486984 0.2311444 0.3195079 0.4142136 0.5157166 0.6245048 0.7411011 0.866066 1.0 Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–71 Architektur von DBMS Dynamisches Hashen Spiral-Hashen /4 Spiralförmiges Ausbreiten I Ausgangslage: 4 Seiten der Tiefe 2 c Sattler / Saake 11 00 10 01 Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–72 Architektur von DBMS Dynamisches Hashen Spiral-Hashen /5 Spiralförmiges Ausbreiten I I Split der Seite mit der höchsten Dichte Ergebnis: 5 Seiten, davon 3 der Tiefe 2 und 2 der Tiefe 3 11 000 001 10 c Sattler / Saake 01 Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–73 Architektur von DBMS Cluster-Bildung Cluster-Bildung gemeinsame Speicherung von Datensätzen auf Seiten wichtige Spezialfälle: I Ballung nach Schlüsselattributen F I Bereichsanfragen und Gruppierungen unterstützen: Datensätze in der Sortierreihenfolge zusammenhängend auf Seiten speichern ⇒ index-organisierte Tabellen oder geclusterten, dichtbesetzte Primärindexe Ballung basierend auf Fremdschlüsselattributen Gruppen von Datensätzen, die einen Attributwert gemeinsam haben, werden auf Seiten geballt (Verbundanfragen) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–74 Architektur von DBMS Cluster-Bildung Indexorganisierte Tabellen Tupel direkt im Index aufnehmen allerdings dann durch häufigen Split TID unsinnig weiterer Sekundärindex kann durch fehlenden TID dann aber nicht angelegt werden (Ausnahme: Oracle mit „logischen“ TIDs) etwa kein unique möglich c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–75 Architektur von DBMS Cluster-Bildung Cluster für Verbundanfragen Verbundattribut: Cluster-Schlüssel BestellNr 100 Bestelldatum Kunde Lieferdatum 15.04.98 Orion Enterprises 01.01.2001 BestellNr 123 Bestelldatum Kunde Lieferdatum 05.10.98 Kirk Enterpr. 31.12.1999 Position Teil Anzahl Preis Position Teil Anzahl Preis 1 Aluminiumtorso 2 3145,67 1 Beamer 1 13145,67 2 Antenne 2 32,50 2 Energiekristall 2 32,99 3 Overkill 1 1313,45 3 Phaser 5 1313,45 4 Nieten 1000 0,50 4 Nieten 2000 1,00 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–76 Architektur von DBMS Cluster-Bildung Definition von Clustern create cluster BESTELL_CLUSTER (BestellNr int) pctused 80 pctfree 5; create table BESTELLUNG ( BestellNr int primary key, ...) cluster BESTELL_CLUSTER (BestellNr); create table BESTELL_POSITION ( Position int, BestellNr int references BESTELLUNG, ... constraint BestellPosKey primary key (Position, BestellNr) ) cluster BESTELL_CLUSTER (BestellNr); c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–77 Architektur von DBMS Cluster-Bildung Organisation von Clustern Indexierte Cluster nutzen einen in Sortierreihenfolge aufgebauten Index (z.B. B+ -Baum) über den Cluster-Schlüssel zum Zugriff auf die Cluster Hash-Cluster bestimmen den passenden Cluster mit Hilfe einer Hashfunktion Indexe für Cluster entsprechen normalen Indexen für den Cluster-Schlüssel statt Tupelidentifikatoren Einsatz von Cluster-Identifikatoren oder direkte Speicheradressen (bei Hashverfahren) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–78 Architektur von DBMS Cluster-Bildung Indexierte Cluster Verwaltung der Daten in Sortierreihenfolge über Index (B-Baum) Speicherung von Cluster-Identifikatoren anstelle von TIDs create index BESTELL_CLUSTER_IDX on cluster BESTELL_CLUSTER c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–79 Architektur von DBMS Cluster-Bildung Hash-Cluster Identifikation des betroffenen Clusters über Hashfunktion (Cluster-Schlüssel → Blockadresse) create cluster BESTELL_CLUSTER ( BestellNr int) pctused 80 pctfree 5 size 2k hash is BestellNr hashkeys 100000; c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–80 Architektur von DBMS Physische Datendefinition in SQL-Systemen Oracle: Datenorganisation Standard-Index: B + -Baum Indexorganisierte Tabellen: speichern Tupel direkt in den Blättern eines B + -Baums Clusterung mehrerer Relationen möglich; Cluster-Indexe als B + -Baum oder als Hash-Index Bitmap-Indexe: speichern Bit-Matrizen für Aufzählungsattribute (siehe Data Warehouses); auch als Verbund-Indexe Reverse Indexe: interpretieren die Bytes des Primärschlüssels in umgekehrter Reihenfolge und brechen damit die Speicherung in Sortierreihenfolge auf Funktions-basierte Indexe c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–81 Architektur von DBMS Physische Datendefinition in SQL-Systemen Oracle: Datendefinition Parameter für Tabellendefinition create table tabelle ( ...) pctfree 10 pctused 40 storage ( initial 10MB, next 2MB, minextents 1, maxextents 20, pctincrease 0, freelists 3 ) tablespace USER_TBLSPACE; c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–82 Architektur von DBMS Physische Datendefinition in SQL-Systemen Oracle: Datendefinition /2 initial, next: Größe des ersten bzw. der weiteren Extents (Default: 5 Blöcke) minextents, maxextents: Anzahl der mind. bzw. max. zu allokierenden Extents pctincrease: prozentuale Vergrößerung der nachfolgenden Extents (0: gleich große Extents) freelists: Anzahl der Freispeicherlisten (insb. für paralleles Einfügen) tablespace: Zuordnung zum Tablespace c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–83 Architektur von DBMS Physische Datendefinition in SQL-Systemen Oracle: Datendefinition /3 pctfree: Datenblockanteil, der nicht für insert-Operationen genutzt werden soll (Reservebereich für update); Default 10 pctused: Grenze, bei der ein zuvor bis zu pctfree gefüllter Block wieder für insert genutzt werden darf ; Default 40 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–84 Architektur von DBMS Physische Datendefinition in SQL-Systemen Oracle: Datendefinition /4 Free-Liste PCTFREE Kopf Kopf Kopf Kopf Kopf Kopf Kopf Kopf Freibereich Freibereich Freibereich Freibereich Freibereich PCTUSED Freibereich Freibereich Freibereich Datenbereich Datenbereich Datenbereich Datenbereich Datenbereich für INSERT verfügbare DB-Blöcke c Sattler / Saake gefüllte DB-Blöcke Datenbank-Implementierungstechniken ungenutzte DB-Blöcke Letzte Änderung: 9. Mai 2017 4–85 Architektur von DBMS Physische Datendefinition in SQL-Systemen Oracle: Datendefinition /5 Index-organisierte Tabellen create table tabelle ( ...) organization index tablespace USER_TBLSPACE, pctthreshold 20 overflow tablespace OVER_TBLSPACE; I I pctthreshold: Threshold für Speicherung von nicht-indexierten Attributen im Überlaufbereich (Wert: 1-50) optional including: Festlegung der im Index aufzunehmenden Attribute (alle weiteren → Überlaufbereich) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–86 Architektur von DBMS Physische Datendefinition in SQL-Systemen SQL Server: Indexdefinition create [ unique ] [ clustered | nonclustered ] index name on table-name ( ...) [ with fillfactor = value, pad_index, ...] nicht-geclusterter Index: nur Rowids in Blattseiten geclusterter Index: Datensätze auf Blattseiten fillfactor: frei zu haltender Platz für Blattseiten beim Aufbau (pad_index auch für mittlere Seiten) weitere spezielle Indexstrukturen: I I Indexe auf berechneten Spalten indexierte Sichten (geclusterter Index auf Sicht) ≡ materialisierte Sicht c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–87 Architektur von DBMS Physische Datendefinition in SQL-Systemen Zusammenfassung Dateiorganisation vs. Zugriffsverfahren indexsequenzielle Organisation B- Baum und Varianten Hashverfahren Clusterbildung Literatur: „Datenbanken: Implementierungstechniken“, Kapitel 4 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 9. Mai 2017 4–88