Teil IV Dateiorganisation und Zugriffsstrukturen Dateiorganisation und Zugriffsstrukturen Überblick 1 Klassifikation der Speichertechniken c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–1 Dateiorganisation und Zugriffsstrukturen Überblick 1 Klassifikation der Speichertechniken 2 Statische Verfahren c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–1 Dateiorganisation und Zugriffsstrukturen Überblick 1 Klassifikation der Speichertechniken 2 Statische Verfahren 3 Baumverfahren c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 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: 13. April 2017 4–1 Dateiorganisation und Zugriffsstrukturen Überblick 1 Klassifikation der Speichertechniken 2 Statische Verfahren 3 Baumverfahren 4 Hashverfahren 5 Cluster-Bildung c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–1 Dateiorganisation und Zugriffsstrukturen Überblick 1 Klassifikation der Speichertechniken 2 Statische Verfahren 3 Baumverfahren 4 Hashverfahren 5 Cluster-Bildung 6 Physische Datendefinition in SQL-Systemen c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 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: 13. April 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: 13. April 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 Arten von Anfragen, die durch Dateiorganisationsformen und Zugriffspfade effizient unterstützt werden können c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 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: 13. April 2017 4–5 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Dateiorganisation vs. Zugriffspfad Dateiorganisationsform: Form der Speicherung der internen Relation I I I I unsortierte Speicherung von internen Tupeln: Heap-Organisation sortierte Speicherung von internen Tupeln: sequenzielle Organisation gestreute Speicherung von internen Tupeln: Hash-Organisation Speicherung von internen Tupeln in mehrdimensionalen Räumen: mehrdimensionale Dateiorganisationsformen üblich: Sortierung oder Hashfunktion über Primärschlüssel sortierte Speicherung plus zusätzlicher Primärindex über Sortierattributen: index-sequenzielle Organisationsform c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–6 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Dateiorganisation vs. Zugriffspfad /2 Zugriffspfad: über grundlegende Dateiorganisationsform hinausgehende Zugriffsstruktur, etwa Indexdatei I I K ↑: I I I Einträge (K , K ↑): K der Wert eines Primär- oder Sekundärschlüssels, K ↑ Datensatz oder Verweis auf Datensatz K : Suchschlüssel, genauer: Zugriffsattribute und Zugriffsattributwerte ist Datensatz selbst: Zugriffspfad wird Dateiorganisationsform ist Adresse eines internen Tupels: Primärschlüssel; Sekundärschlüssel mit (K , K ↑1 ), . . . , (K , K ↑n ) für denselben Zugriffsattributwert K ist Liste von Tupeladressen: Sekundärschlüssel; nachteilig ist variable Länge der Indexeinträge c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–7 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Klassifikation [Härder Rahm 2001] Zugriffsverfahren Schlüsselvergleich fortlaufender Vergleich physisch fortlaufend sequenz. Listen logisch fortlaufend verkettete Listen sequenziell Schlüsseltransformation baumstrukturierter Vergleich ganzer Schlüssel binäre Suchbäume Teilschlüssel Mehrwegebäume statisch Kollisionsfrei Digitalbäume baumstrukturiert dynamisch Überlaufbereich statische Bereiche dynamische Erweiterung dynamische Bereiche gestreut Dateiorganisation c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–8 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Dünn- vs. dichtbesetzter Index dünnbesetzter Index: nicht für jeden Zugriffsattributwert K ein Eintrag in Indexdatei I I interne Relation sortiert nach Zugriffsattributen: im Index reicht ein Eintrag pro Seite ⇒ Index verweist mit (K1 , K1 ↑) auf Seitenanführer, nächste Indexeintrag (K2 , K2 ↑) Datensatz mit Zugriffsattributwert K? mit K1 ≤ K? < K2 ist auf Seite von K1 ↑ zu finden indexsequenzielle Datei: sortierte Datei mit dünnbesetztem Index als Primärindex dichtbesetzter Index: für jeden Datensatz der internen Relation ein Eintrag in Indexdatei Primärindex kann dichtbesetzter Index sein, wenn Dateiorganisationsform Heap-Datei, aber auch bei Sortierung (geclusterter Index) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–9 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Geclusterter vs. nicht-geclusterter Index geclusterter Index: in der gleichen Form sortiert wie interne Relation I Bsp.: interne Relation KUNDEN nach Kundennummern sortiert ⇒ Indexdatei über dem Attribut KNr üblicherweise geclustert nicht-geclusterter Index: anders organisiert als interne Relation I Bsp.: über Name ein Sekundärindex, Datei selbst nach KNr sortiert 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: 13. April 2017 4–10 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Geclusterter vs. nicht-geclusterter Index /2 mehrstufiger Index ... ... geclusteter Index Hauptdatei ... ... mehrstufiger Index nichtgeclusterter Index ... ... Hauptdatei ... c Sattler / Saake Datenbank-Implementierungstechniken ... Letzte Änderung: 13. April 2017 4–11 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Schlüsselvergleich vs. -transformation Schlüsselvergleich: Zuordnung von Primär- oder Sekundärschlüsselwerten zu Adressen in Hilfsstruktur wie Indexdatei I Bsp.: indexsequenzielle Organisation, B-Baum, KdB-Baum, . . . Schlüsseltransformation: berechnet Tupeladresse aufgrund Formel aus Primär- oder Sekundärschlüsselwerten (statt Indexeinträgen nur Berechnungsvorschrift gespeichert) I Bsp.: Hashverfahren c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–12 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: 13. April 2017 4–13 Dateiorganisation und Zugriffsstrukturen Klassifikation der Speichertechniken Anforderung an Speichertechniken dynamisches Verhalten Effizienz beim Einzelzugriff (Schlüsselsuche beim Primärindex) Effizienz beim Mehrfachzugriff (Schlüsselsuche beim Sekundärindex) Ausnutzung für sequentiellen Durchlauf (Sortierung, geclusterter Index) Clustering Anfragetypen: exact-match, partial-match, range queries (Bereichsanfragen) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–14 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: 13. April 2017 4–15 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: 13. April 2017 4–16 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Heap-Organisation: Datenstruktur Heap = record of firstpage: HeapPage ; /* erste Seite des Heaps lastpage: HeapPage ; /* letzte Seite des Heaps end; HeapPage = record of nextpage: HeapPage ; /* nächste Heap-Seite nrows: int ; /* Anzahl der Datensätze payload: array [1 .. nrows ] of LoadType ; /* Datensätze end; c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 */ */ */ */ */ 4–17 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: 13. April 2017 4–18 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Heap-Operationen: insertHeap Input: Datensatz newRow Data: Heap-Datei heap current ← heap.lastpage; if current.nrows = max_nrows then /* Letzte Heap-Seite ist voll current.nextpage ← new HeapPage; /* Nächste Heap-Seite zeigt auf eine neue, leere Heap-Seite current ← current.nextpage ; /* Leere Seite laden current.nrows ← 0 ; /* Reihenanzahl initialisieren heap.lastpage ← current end current.nrows ++ ; if current.nrows > 1 then /* Aktuelle Seite ist nicht leer newpayload ← new payload [1..nrows ] ; /* Neuen Payload mit einer zusätzlichen Spalte erzeugen newpayload [1..nrows-1] ← current.payload [1..nrows-1]; /* Alte Reihen in den neuen Payload übertragen end current.payload ← newpayload ; /* Aktuellen Payload überschreiben current.payload [nrows ] ← newRow; c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 */ */ */ */ */ */ */ */ 4–19 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: 13. April 2017 4–20 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Sequenzielle Speicherung: Datenstruktur SeqPage = record of nrows: int; keys: array [1 .. nrows ] of KeyType; payload: array [1 .. nrows ] of LoadType; nextpage: SeqPage; end; c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–21 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: 13. April 2017 4–22 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: 13. April 2017 4–23 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: 13. April 2017 4–24 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Indexsequenzielle Speicherung: Datenstruktur ISAM = record of firstindexpage: IndexPage; lastindexpage: IndexPage; end; c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–25 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: 13. April 2017 4–26 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: 13. April 2017 4–27 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Indexseite: Datenstruktur IndexPage = record of nrows: int; keys: array [1 .. nrows ] of KeyType; DataPages: array [1 .. nrows ] of SeqPage; nextpage: IndexPage; end; c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–28 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: 13. April 2017 4–29 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: 13. April 2017 4–30 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Operationen: lookupISAM Input: Suchschlüssel k Data: Indexsequenzielle Datei ISAM Result: Datenelement result zu k oder NOT_FOUND wenn nicht gefunden finished ← FALSE; result ← NOT_FOUND; current ← ISAM.firstpage; /* Speichert die sequenzielle Seite des letzten Durchgangs */ lastcurrent ← ISAM.firstpage.DataPages [1]; ; /* Speichert den Schlüssel des letzten Durchgangs */ lastkeys ← ISAM.firstpage.keys [1]; i ← 1; ... c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–31 Dateiorganisation und Zugriffsstrukturen Statische Verfahren Operationen: lookupISAM /2 ... repeat /* Suche passenden Eintrag für den Schlüssel if i > current.nkeys ; /* Ende der aktuellen Indexseite erreicht then if current = ISAM.lastpage then /* Schlüssel auf der letzten Seite oder nicht gefunden result ← findKeyOnSeqPage(lastcurrent,k ); finished ← TRUE; else current ← current.nextpage; i ← 1 ; /* Nächste Indexseite laden end else if lastkeys <= k and keys [i] > k then /* Eintrag zu k steht auf der vorherigen Seite result ← findKeyOnSeqPage(lastcurrent,k ) ; finished ← TRUE; else lastcurrent ← current.DataPages [i]; lastkeys ← current.keys [i + +]; end end until finished = TRUE; return result; c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 */ */ */ */ */ 4–32 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: 13. April 2017 4–33 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: 13. April 2017 4–34 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: 13. April 2017 4–35 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: 13. April 2017 4–36 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: 13. April 2017 4–37 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: 13. April 2017 4–38 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: 13. April 2017 4–39 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: 13. April 2017 4–40 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: 13. April 2017 4–41 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 Mehrweg-Bäume c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–42 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: 13. April 2017 4–43 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: 13. April 2017 4–44 Dateiorganisation und Zugriffsstrukturen Baumverfahren Eigenschaften des B-Baumes /2 B-Baum als Primär- und Sekundärindex geeignet Datensätze direkt in die Indexseiten ⇒ Dateiorganisationsform Verweist man aus Indexseiten auf Datensätze in den Hauptseiten ⇒ Sekundärindex c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–45 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: 13. April 2017 4–46 Dateiorganisation und Zugriffsstrukturen Baumverfahren Knoten eines B-Baums 20 42 67 99 Zeiger auf Knoten Zeiger auf Tupel (TID) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–47 Dateiorganisation und Zugriffsstrukturen Baumverfahren Knotentyp eines B-Baums BTreeNode = record of nkeys: int ; /* Anzahl der Schlüssel < 2n ptrs: array [0 .. nkeys ] of PageNum ; /* Verweise auf Kindknoten keys: array [1 .. nkeys ] of KeyType ; /* Schlüssel payload: array [1 .. nkeys ] of LoadType ; /* Daten bzw. TIDs end; c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 */ */ */ */ 4–48 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 40 35 38 41 42 45 Letzte Änderung: 13. April 2017 46 4–49 Dateiorganisation und Zugriffsstrukturen Baumverfahren Suchen in B-Bäumen: lookupBTree Input: Suchschlüssel k Data: Wurzelknoten root Result: Datenelement result zu k oder NOT_FOUND wenn nicht gefunden finished ← FALSE; result ← NOT_FOUND; node ← root; repeat /* Suche Schlüssel im aktuellen Knoten i ← findKeyInNode(node, k ); if i = NO_PAGE then /* Schlüssel nicht gefunden finished ← TRUE else if node.keys [i] = k then result ← node.payload [i]; finished ← TRUE; else /* Verweis auf nächsten Kindknoten verfolgen node ← loadNodeFromPage(node.ptrs [i]) end until finished = TRUE; return result; c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 */ */ */ 4–50 Dateiorganisation und Zugriffsstrukturen Baumverfahren Suchen in B-Bäumen: findKeyInNode Input: Suchschlüssel k , B-Baum-Knoten n Result: Index des Schüssels oder NO_PAGE wenn nicht gefunden for i ← 1 to n.nkeys do if n.keys[i] = k then return i; else if n.keys[i] > k then return i-1; end end return NO_PAGE; c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–51 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: 13. April 2017 4–52 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: 13. April 2017 4–53 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: 13. April 2017 4–54 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 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–55 Dateiorganisation und Zugriffsstrukturen Baumverfahren Löschen in B-Bäumen /2 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: 13. April 2017 4–56 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: 13. April 2017 4–57 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: 13. April 2017 4–58 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: 13. April 2017 4–59 Dateiorganisation und Zugriffsstrukturen Baumverfahren B+ -Baum in der Praxis am häufigsten eingesetzte Variante des B-Baumes: effizientere Änderungsoperationen, Verringerung der Baumhöhe in inneren Knoten nur noch Zugriffsattributwert und Zeiger auf nachfolgenden Seite der nächsten Stufe nur Blattknoten enthalten neben Zugriffsattributwert die Daten (Datensätze der Hauptdatei bzw. Verweise darauf) Knoten der Blattebene sind untereinander verkettet für effiziente Unterstützung von Bereichsanfragen c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–60 Dateiorganisation und Zugriffsstrukturen Baumverfahren B+ -Baum: Blattebene in der Hauptdatei 100 23 3 Tom 7 13 c Sattler / Saake 42 67 99 220 110 150 Tigger 23 Maik Muggel Ann Maier 35 May Flower Tim Tahler 40 Dirk Mejer Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–61 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: 13. April 2017 4–62 Dateiorganisation und Zugriffsstrukturen Baumverfahren B+ -Baum: Datenstrukturen BPlusTreeNode = 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; BPlusLeaveNode = record of nkeys: int; keys: array [1 .. nkeys ] of KeyType; payload: array [1 .. nkeys ] of LoadType ; nextleave: PageNum; end; c Sattler / Saake Datenbank-Implementierungstechniken */ /* Daten bzw. TIDs */ Letzte Änderung: 13. April 2017 4–63 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: 13. April 2017 4–64 Dateiorganisation und Zugriffsstrukturen Baumverfahren B∗ - und B# -Baum Problem beim B-Baum: häufiges Aufspalten von Seiten und geringe Speicherplatzausnutzung von nahe 50% B∗ -Baum, B# -Baum: I I statt Aufteilen von Seiten bei Überlauf zunächst Neuverteilen der Datensätze auf eventuell nicht voll ausgelastete Nachbarseiten falls nicht möglich: zwei Seiten in drei aufteilen (ermöglicht durchschnittliche Speicherplatzausnutzung von 66% statt 50%) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 4–65 Dateiorganisation und Zugriffsstrukturen Baumverfahren 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: 13. April 2017 4–66 Dateiorganisation und Zugriffsstrukturen Baumverfahren 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: 13. April 2017 4–67 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–68 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–69 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–70 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–71 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–72 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–73 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–74 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–75 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–76 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–77 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–78 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–79 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–80 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–81 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–82 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–83 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–84 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–85 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–86 Dateiorganisation und Zugriffsstrukturen 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: 13. April 2017 4–87