14. Dateiorganisation/Zugriffsstrukturen ■ Architektur von DBMS ■ Dateiorganisation ■ Zugriffsstrukturen ■ DBMS-Architekturen am Beispiel von Oracle Überblick Externe Ebene Konzeptuelle Ebene Interne Ebene Anfragen Optimierer Auswertung Plattenzugriff Updates P1 DB-Operationen ... Einbettung Pn Masken Data Dictionary Sichtdefinition Dateiorganisation Datendefinition VL Datenbanken I – 14–1 Fünf-Schichten-Architektur VL Datenbanken I – 14–2 5-Schichten-Architektur: Schnittstellen I ■ basierend auf Idee von Senko 1973 ■ Weiterentwicklung von Härder 1987 ■ Umsetzung im Rahmen des IBM-Prototyps System R ■ genauere Beschreibung der Transformationskomponenten ◆ schrittweise Transformation von Anfragen/Änderungen bis hin zu Zugriffen auf Speichermedien ◆ Definition der Schnittstellen zwischen Komponenten VL Datenbanken I – 14–3 ■ mengenorientierte Schnittstelle ◆ deklarative DML auf Tabellen, Sichten, Zeilen ■ satzorientierte Schnittstelle ◆ Sätze, logische Dateien, logische Zugriffspfade ◆ navigierender Zugriff ■ interne Satzschnittstelle ◆ Sätze, Zugriffspfade ◆ Manipulation von Sätzen und Zugriffspfaden VL Datenbanken I – 14–4 5-Schichten-Architektur: Schnittstellen II ■ ■ ■ 5-Schichten-Architektur: Funktionen Pufferschnittstelle ◆ Seiten, Seitenadressen ◆ Freigeben und Bereitstellen Mengenorientierte Schnittstelle (MOS) Datensystem Übersetzung, Zugriffspfadauswahl, Zugriffskontrolle, Integritätskontrolle Zugriffssystem Data Dictionary, Currency Pointer, Sortierung, Transaktionsverwaltung Speichersystem Record Manager, Zugriffspfadverwaltung, Sperrverwaltung, Log/Recovery Pufferverwaltung Systempufferverwaltung mit Seitenwechselstrategie Satzorientierte Schnittstelle (SOS) Datei- oder Seitenschnittstelle ◆ Hole Seite, Schreibe Seite Interne Satz− schnittstelle (ISS) Geräteschnittstelle ◆ Spuren, Zylinder ◆ Armbewegungen Systempuffer− schnittstelle (SPS) Datei− schnittstelle (DS) Betriebssystem Externspeicherverwaltung Geräte− schnittstelle (GS) VL Datenbanken I – 14–5 5-Schichten-Architektur: Objekte Mengenorientierte Schnittstelle (MOS) VL Datenbanken I – 14–6 Erläuterungen I Relationen Sichten SQL : select ... from ... QBE, QUEL, ... externe Sätze, Scans, Index−Strukturen FIND NEXT satz STORE satz interne Sätze, Bäume, Hashtabellen Speichere internen Satz s INSERT in B−Baum Segmente Seiten Bereitstellen Seite j Freigeben Seite j Dateien Blöcke Lies Block k Schreibe Block k Zylinder Spuren Treiber ■ mengenorientierte Schnittstelle MOS: ◆ deklarative Datenmanipulationssprache auf Tabellen und Sichten (etwa SQL) ■ durch Datensystem auf satzorientierte Schnittstelle SOS umgesetzt: ◆ navigierender Zugriff auf interner Darstellung der Relationen ◆ manipulierte Objekte: typisierte Datensätze und interne Relationen sowie logische Zugriffspfade (Indexe) Datensystem Satzorientierte Schnittstelle (SOS) Zugriffssystem Interne Satz− schnittstelle (ISS) Speichersystem Systempuffer− schnittstelle (SPS) Pufferverwaltung Datei− schnittstelle (DS) Betriebssystem Geräte− schnittstelle (GS) VL Datenbanken I – 14–7 ◆ Aufgaben des Datensystems: Übersetzung und Optimierung von SQL-Anfragen VL Datenbanken I – 14–8 Erläuterungen II ■ Erläuterungen III durch Zugriffssystem auf interne Satzschnittstelle ISS umgesetzt: ◆ interne Tupel einheitlich verwalten, ohne Typisierung ◆ Speicherstrukturen der Zugriffspfade (konkrete Operationen auf B∗ -Bäumen und Hash-Tabellen), Mehrbenutzerbetrieb mit Transaktionen ■ durch Speichersystem Datenstrukturen und Operationen der ISS auf interne Seiten eines virtuellen linearen Adreßraums umsetzen ◆ Manipulation des Adreßraums durch Operationen der Systempufferschnittstelle SPS ◆ Typische Objekte: interne Seiten und Seitenadressen ◆ Typische Operationen: Freigeben und Bereitstellen von Seiten, Seitenwechselstrategien, Sperrverwaltung, Schreiben des Log-Buchs für Recovery ■ durch Pufferverwaltung interne Seiten auf Blöcke der Dateischnittstelle DS abbilden ◆ Umsetzung der DS-Operationen auf Geräteschnittstelle erfolgt durch BS VL Datenbanken I – 14–9 Speichermedien ■ VL Datenbanken I – 14–10 Speicherhierarchie verschiedene Zwecke: ◆ Daten zur Verarbeitung bereitstellen ◆ Daten langfristig speichern (und trotzdem schnell verfügbar halten) ◆ Daten sehr langfristig und preiswert archivieren unter Inkaufnahme etwas längerer Zugriffszeiten 1. Extrem schneller Prozessor mit Registern 2. Sehr schneller Cache-Speicher 3. Schneller Hauptspeicher 4. Langsamer Sekundärspeicher mit wahlfreiem Zugriff 5. Sehr langsamer Nearline-Tertiärspeicher bei dem die Speichermedien automatisch bereitgestellt werden 6. Extrem langsamer Offline-Tertiärspeicher, bei dem die Speichermedien per Hand bereitgestellt werden Tertiärspeicher: CD-R (Compact Disk Recordable), CD-RW (Compact Disk ReWritable), DVD (Digital Versatile Disks), Magnetbänder etwa DLT (Digital Linear Tape) VL Datenbanken I – 14–11 VL Datenbanken I – 14–12 Verwaltung des Hintergrundspeichers Abstraktion von Speicherungs- oder Sicherungsmediums Modell: Folge von Blöcken MOS Betriebssystemdateien I ■ jede Relation oder jeder Zugriffspfad in genau einer Betriebssystem-Datei Mengenorientierte Schnittstelle ■ ein oder mehrere BS-Dateien, DBS verwaltet Relationen und Zugriffspfade selbst innerhalb dieser Dateien Satzorientierte Schnittstelle ■ DBS steuert selbst Magnetplatte an und arbeitet mit den Blöcken in ihrer Ursprungsform (raw device) Datensystem SOS Zugriffssystem ISS Interne Satzschnittstelle Speichersystem SPS Systempufferschnittstelle Pufferverwaltung DS Dateischnittstelle Betriebssystem GS Geräteschnittstelle VL Datenbanken I – 14–13 Betriebssystemdateien II VL Datenbanken I – 14–14 Blöcke und Seiten Warum nicht immer BS-Dateiverwaltung? ■ Betriebssystemunabhängigkeit ■ In 32-Bit-Betriebssystemen: Dateigröße 4 GB maximal ■ BS-Dateien auf maximal einem Medium ■ betriebssystemseitige Pufferverwaltung von Blöcken des Sekundärspeichers im Hauptspeicher genügt nicht den Anforderungen des Datenbanksystems VL Datenbanken I – 14–15 ■ Zuordnung der physischen Blöcke zu Seiten ■ meist mit festen Faktoren: 1, 2, 4 oder 8 Blöcke einer Spur auf eine Seite ■ hier: „ein Block — eine Seite“ ■ höhere Schichten des DBS adressieren über Seitennummer VL Datenbanken I – 14–16 Abbildung der Datenstrukturen Dienste ■ Allokation oder Deallokation von Speicherplatz ■ Holen oder Speichern von Seiteninhalten ■ Allokation möglichst so, daß logisch aufeinanderfolgende Datenbereiche (etwa einer Relation) auch möglichst in aufeinanderfolgenden Blöcken der Platte gespeichert werden ■ Nach vielen Update-Operationen: Reorganisationsmethoden ■ Freispeicherverwaltung: doppelt verkettete Liste von Seiten ■ Abbildung der konzeptuellen Ebene auf interne Datenstrukturen ■ Unterstützung durch Metadaten (im Data Dictionary, etwa das interne Schema) Konz. Ebene Relationen → Tupel → Attributwerte → Interne Ebene Log. Dateien → Datensätze → Felder → Dateisystem/Platte Phys. Dateien Seiten/Blöcke Bytes VL Datenbanken I – 14–17 Varianten der Abbildungen Saake 6834 Korn mehrere logische Dateien Index− Datei Heuer Korn Ort DBR MD MD Hauptdatei 4711 Heuer 5588 Saake 6834 Korn ... ... ... DBR MD MD . .. Index− Datei DBR ... 5588 ... ... ... ... MD ... Nachname Heuer ... Beispiel 2: Cluster-Speicherung – mehrere Relationen in einer logischen Datei PANr 4711 ... Eine Relation ... Beispiel 1: jede Relation in je einer logischen Datei, diese insgesamt in einer einzigen physischen Datei ... ■ Übliche Form der Speicherung I ... ■ VL Datenbanken I – 14–18 Saake VL Datenbanken I – 14–19 VL Datenbanken I – 14–20 Einpassen von Datensätzen auf Blöcke Übliche Form der Speicherung II 5588 Saake ... Korn 6834 Korn ... ... ... . .. DBR MD MD DBR Hauptdatei Datensätze (eventuell variabler Länge) in die aus einer fest vorgegebenen Anzahl von Bytes bestehenden Blöcke einpassen: Blocken ■ Blocken abhängig von variabler oder fester Feldlänge der Datenfelder ◆ Datensätze mit variabler Satzlänge: höherer Verwaltungsaufwand beim Lesen und Schreiben, Satzlänge immer wieder neu ermitteln ◆ Datensätze mit fester Satzlänge: höherer Speicheraufwand MD Saake Index− Datei ■ ... 4711 Heuer ... Heuer Dateien ... mehrere logische Index− Datei eine physische Datei ... ... 4711 Heuer 5588 Saake ... Heuer . Saake DBR ... Korn . 6834 Korn ... MD ... MD . . DBR .. ... MD VL Datenbanken I – 14–21 Blockungstechniken VL Datenbanken I – 14–22 Seiten, Sätze und Adressierung ■ Struktur der Seiten: doppelt verkettete Liste ■ freie Seiten in Freispeicherverwaltung Vor Nach Seite p Seite p+1 Spannsatz Seite p 115 Seite p+1 81 weitere Header−Information 136 Offset 142 Nichtspannsatz ■ Nichtspannsätze: jeder Datensatz in maximal einem Block ■ Spannsätze: Datensatz eventuell in mehreren Blöcken ■ Standard: Nichtspannsätze (nur im Falle von BLOBs oder CLOBs Spannsätze üblich) VL Datenbanken I – 14–23 136 115 175 Tupel ... VL Datenbanken I – 14–24 Seite: Adressierung der Datensätze Seite ■ Header ◆ Informationen über Vorgänger- und Nachfolger-Seite ◆ eventuell auch Nummer der Seite selbst ◆ Informationen über Typ der Sätze ◆ freier Platz ■ Datensätze ■ unbelegte Bytes ■ adressierbare Einheiten ◆ Zylinder ◆ Spuren ◆ Sektoren ◆ Blöcke oder Seiten ◆ Datensätze in Blöcken oder Seiten ◆ Datenfelder in Datensätzen ■ Beispiel: Adresse eines Satzes durch Seitennummer und Offset (relative Adresse in Bytes vom Seitenanfang) (115, 142) VL Datenbanken I – 14–25 VL Datenbanken I – 14–26 Unpinned records (Unfixierte Sätze) Pinned records (Fixierte Sätze) ■ Fixierte Datensätze sind an ihre Position gebunden ■ unfixierte Sätze: Verweise mit „logischen Zeigern“ ■ Bsp.: Verweise mit Zeigern aus anderer, schwer auffindbarer Seite, etwa Verschieben des Datensatzes (115, 142) auf Seite 136 ■ etwa: Matrikelnummer bei Studenten-Datensatz ■ diesen an zentraler Stelle (etwa in Indexdatei zur Studenten-Relation) auf aktuelle Adresse umsetzen ■ Nachteil: Verschieben des Datensatzes benötigt neben dem Laden der beiden direkt betroffenen Seite (Quellund Zielseite der Verschiebeoperation) auch noch Holen der Indexseite ■ Nachteil wird beim TID-Konzept (s.u.) behoben ■ Gefahr: ins Leere verweisende Zeiger (dangling pointers) VL Datenbanken I – 14–27 VL Datenbanken I – 14–28 Sätze fester Länge Sätze variabler Länge SQL: Datentypen fester und variabler Länge ■ ■ char(n) Zeichenkette der festen Länge n ■ varchar(n) Zeichenkette variabler Länge mit der Maximallänge n im Verwaltungsblock nötig: Satzlänge l, um die Länge des Nutzdaten-Bereichs d zu kennen l d Aufbau der Datensätze, falls alle Datenfelder feste Länge: Länge (bzw. Verwaltungsblock) 1. Verwaltungsblock mit ■ Typ eines Satzes (wenn unterschiedliche Satztypen auf einer Seite möglich) ■ Löschbit Nutzdaten 2. Freiraum zur Justierung des Offset 3. Nutzdaten des Datensatzes VL Datenbanken I – 14–29 Sätze variabler Länge II a) l n al1 A1 VL Datenbanken I – 14–30 Speicherung von Sätzen variabler Länge ... Anzahl Attribute aln An Attributwerte Attributlängen ■ Strategie a): Jedes Datenfeld variabler Länge A i beginnt mit einem Längenzeiger ali , der angibt, wie lang das folgende Datenfeld ist ■ Strategie b): Am Beginn des Satzes wird nach dem Satz-Längenzeiger l und der Anzahl der Attribute ein Zeigerfeld ap1 , . . . , apn für alle variabel langen Datenfelder eingerichtet ■ Vorteil Strategie b): leichtere Navigation innerhalb des Satzes (auch für Sätze in Seiten ⇒ TID) PSfrag replacements Anzahl Attribute b) l n ap1 Attributzeiger ... apn A1 Attributwerte ... An VL Datenbanken I – 14–31 VL Datenbanken I – 14–32 Adressierung: TID-Konzept ■ ■ TID-Konzept: einstufige Referenz Tupel-Identifier (TID) ist Datensatz-Adresse bestehend aus Seitennummer und Offset Offset verweist innerhalb der Seite bei einem Offset-Wert von i auf den i-ten Eintrag in einer Liste von Tupel-Zeigern, die am Anfang der Seite stehen ■ Jeder Tupel-Zeiger enthält Offsetwert ■ Verschiebung auf der Seite: sämtliche Verweise von außen bleiben unverändert ■ Verschiebungen auf eine andere Seite: statt altem Datensatz neuer TID-Zeiger ■ diese zweistufige Referenz aus Effiziengründen nicht wünschenswert: Reorganisation in regelmäßigen Abständen TID p Seite p i i i−tes Tupel Tupel−Zeiger VL Datenbanken I – 14–33 TID-Konzept: zweistufige Referenz TID p VL Datenbanken I – 14–34 Pufferverwaltung Seite p MOS i Mengenorientierte Schnittstelle Datensystem i SOS TID <q,j> Satzorientierte Schnittstelle Zugriffssystem ISS Interne Satzschnittstelle Speichersystem Seite q SPS Systempufferschnittstelle Pufferverwaltung j DS Dateischnittstelle Betriebssystem j−tes Tupel GS VL Datenbanken I – 14–35 Geräteschnittstelle VL Datenbanken I – 14–36 Aufgaben der Pufferverwaltung Seitenersetzungsstrategien ■ Puffer : ausgezeichneter Bereich des Hauptspeichers ■ ■ in Pufferrahmen gegliedert, jeder Pufferrahmen kann Seite der Platte aufnehmen Speichersystem fordert Seite E2 an, die nicht im Puffer vorhanden ist ■ Sämtliche Pufferrahmen sind belegt ■ vor dem Laden von E2 Pufferrahmen freimachen ■ nach den unten beschriebenen Strategien Seite aussuchen ■ Ist Seite in der Zwischenzeit im Puffer verändert worden, so wird sie nun auf Platte zurückgeschrieben ■ Ist Seite seit Einlagerung in den Puffer nur gelesen worden, so kann sie überschrieben werden (verdrängt) ■ Aufgaben: ◆ Pufferverwaltung muß angeforderte Seiten im Puffer suchen ⇒ effiziente Suchverfahren ◆ parallele Datenbanktransaktionen: geschickte Speicherzuteilung im Puffer ◆ Puffer gefüllt: adäquate Seitenersetzungsstrategien ◆ Unterschiede zwischen einem Betriebssystem-Puffer und einem Datenbank-Puffer ◆ spezielle Anwendung der Pufferverwaltung: Schattenspeicherkonzept VL Datenbanken I – 14–37 Hauptspeicher Seitenersetzung schematisch ... C1 E1 A1 A2 B1 B2 C1 C2 D1 D2 ... ... ... ... Puffer ■ Demand-paging-Verfahren: genau eine Seite im Puffer durch angeforderte Seite ersetzen ■ Prepaging-Verfahren: neben der angeforderten Seite auch weitere Seiten in den Puffer einlesen, die eventuell in der Zukunft benötigt werden (z.B. bei BLOBs sinnvoll) ■ optimale Strategie: Welche Seite hat maximale Distanz zu ihrem nächsten Gebrauch? (nicht realisierbar, zukünftiges Referenzverhalten nicht vorhersehbar) laden An-1 An Bn-1 Bn Cn-1 Cn Dn-1 Dn E1 E2 ... ... ; Realisierbare Verfahren besitzen keine Kenntnisse über das zukünftige Referenzverhalten ... E2 zurückschreiben / verdrängen Sekundärspeicher Seitenersetzung: Verfahren I Speichersystem A1 VL Datenbanken I – 14–38 ■ VL Datenbanken I – 14–39 Zufallsstrategie: jeder Seite gleiche Wiederbenutzungswahrscheinlichkeit zuordnen VL Datenbanken I – 14–40 ■ Gute, realisierbare Verfahren sollen vergangenes Referenzverhalten auf Seiten nutzen, um Erwartungswerte für Wiederbenutzung schätzen zu können ◆ besser als Zufallsstrategie ◆ Annäherung an optimale Strategie Natürlicher Verbund von Relationen A und B (zugehörige Folge von Seiten: Ai bzw. Bj ) ; Implementierung: Nested-Loop Puffer A1 B1 B2 B3 B4 B5 muß geladen werden wird verdrängt klassische Verfahren: ◆ FIFO (first in first out) ◆ LFU (least frequently used) ◆ LRU (least recently used) älteste, am längsten nicht benutzt B1 Relation A ■ Mangelnde Eignung des BS-Puffers I A1 B2 A2 B3 A3 ... B4 Relation B Seitenersetzung: Verfahren II B5 B6 VL Datenbanken I – 14–41 Mangelnde Eignung des BS-Puffers II ■ FIFO: A1 verdrängt, da älteste Seite im Puffer ■ LRU: A1 verdrängt, da diese Seite nur im ersten Schritt beim Auslesen des Vergleichstupels benötigt wurde Problem ■ im nächsten Schritt wird gerade A1 wieder benötigt ■ weiteres „Aufschaukeln“: um A1 laden zu können, muß B1 entfernt werden (im nächsten Schritt benötigt) usw. Seitenersetzungsstrategien von Datenbanksystemen ■ Fixieren von Seiten ■ Freigeben von Seiten ■ Zurückschreiben einer Seite (z.B. am Transaktionsende!) VL Datenbanken I – 14–43 VL Datenbanken I – 14–42 Dateiorganisation vs. Zugriffspfad (I) Dateiorganisationsform: Form der Speicherung der internen Relation ■ unsortierte Speicherung von internen Tupeln: Heap-Organisation ■ sortierte Speicherung von internen Tupeln: sequentielle Organisation ■ gestreute Speicherung von internen Tupeln: Hash-Organisation ■ Speicherung von internen Tupeln in mehrdimensionalen Räumen: mehrdimensionale Dateiorganisationsformen üblich: Sortierung oder Hash-funktion über Primärschlüssel sortierte Speicherung plus zusätzlicher Primärindex über Sortierattributen: index-sequentielle Organisationsform VL Datenbanken I – 14–44 Dateiorganisation vs. Zugriffspfad (II) Dateiorganisation vs. Zugriffspfad (III) Zugriffspfad: über grundlegende Dateiorganisationsform hinausgehende Zugriffsstruktur, etwa Indexdatei Eintrag K ↑: ■ 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 ■ K ↑ ist Datensatz selbst: Zugriffspfad wird Dateiorganisationsform ■ K ↑ ist Adresse eines internen Tupels: Primärschlüssel; Sekundärschlüssel mit (K, K ↑1 ), . . . , (K, K ↑n ) für denselben Zugriffsattributwert K ■ K ↑ ist Liste von Tupeladressen: Sekundärschlüssel; nachteilig ist variable Länge der Indexeinträge Tupeladressen: TIDs, nur Seitenadressen, . . . Indexdatei kann selbst in Dateiorganisationsform gespeichert und mit Zugriffspfaden versehen werden VL Datenbanken I – 14–45 Klassifikation der Speichertechniken ■ Primär- vs. Sekundärindex: Primärindex ist Zugriffspfad auf interne Relation, der Dateiorganisationsform der internen Relation ausnutzen kann (z.B. Sortierung) ■ dünn- vs. dichtbesetzter Index: dichtbesetzt – für jeden Datensatz der internen Relation ein Eintrag in Indexdatei; dünnbesetzt – nicht für jeden Zugriffsattributwert K ein Eintrag ■ geclusteter vs. nicht-geclusteter Index: geclustert – in der gleichen Form sortiert wie interne Relation VL Datenbanken I – 14–47 VL Datenbanken I – 14–46 Klassifikation der Speichertechniken (II) ■ Schlüsselzugriff vs. -transformation: Zugriff – Zuordnung von Primär- oder Sekundärschlüsselwerten zu Adressen in Hilfsstruktur wie Indexdatei; Transformation – erechnet Tupeladresse aufgrund Formel aus Primär- oder Sekundärschlüsselwerten ■ Ein- vs. Mehr-Attribut-Index ■ Ein- vs. mehrdim. Zugriffsstruktur ■ statische vs. dynamische Struktur : statisch – optimal nur bei bestimmter (fester) Anzahl von verwaltenden Datensätzen; dynamisch – unabhängig von der Anzahl der Datensätze optimal VL Datenbanken I – 14–48 Heap-Organisation Statische Verfahren ■ Heap, indexsequentiell, indiziert-nichtsequentiell ■ völlig unsortiert speichern ■ oft grundlegende Speichertechnik in RDBS ■ ■ direkten Organisationsformen: keine Hilfsstruktur, keine Adreßberechnung (Heap, sequentiell) physische Reihenfolge der Datensätze ist zeitliche Reihenfolge der Aufnahme von Datensätzen ■ statische Indexverfahren für Primärindex und Sekundärindex 8832 Tamara Jagellowsk ..... 11.11.73 5588 Gunter Saake ..... 5.10.60 4711 Andreas Heuer ..... 31.10.58 9999 Christa Preisendanz ..... 10.5.69 6834 Michael Korn ..... 24.9.74 7754 Andreas Möller ..... 25.2.76 9912 Antje Hellhof ..... 4.4.70 frei VL Datenbanken I – 14–49 Heap: Operationen ■ ■ ■ ■ VL Datenbanken I – 14–50 Sequentielle Speicherung insert: Zugriff auf letzte Seite der Datei. Genügend freier Platz ⇒ Satz anhängen. Sonst nächste freie Seite holen ■ sortiertes Speichern der Datensätze delete: lookup, dann Löschbit auf 0 gesetzt lookup: sequentielles Durchsuchen der Gesamtdatei, maximaler Aufwand (Heap-Datei meist zusammen mit Sekundärindex eingesetzt; oder für sehr kleine Relationen) Komplexitäten: Neuaufnahme von Daten O(1), Suchen O(n) 4711 Andreas Heuer ..... 5588 Gunter Saake ..... 31.10.58 5.10.60 6834 Michael Korn ..... 24.9.74 7754 Andreas Möller ..... 25.2.76 8832 Tamara Jagellowsk ..... 11.11.73 9912 Antje Hellhof ..... 4.4.70 9999 Christa Preisendanz ..... 10.5.69 frei VL Datenbanken I – 14–51 VL Datenbanken I – 14–52 Sequentielle Datei: Operationen Indexsequentielle Dateiorganisation ■ insert: Seite suchen, Datensatz einsortieren ⇒ beim Anlegen oder sequentiellen Füllen einer Datei jede Seite nur bis zu gewissem Grad (etwa 66%) füllen ■ delete: Aufwand bleibt ■ Folgende Dateiorganisationsformen: ◆ schnelleres lookup ◆ mehr Platzbedarf (durch Hilfsstrukturen wie Indexdateien) ◆ mehr Zeitbedarf bei insert und delete ■ klassische Indexform: indexsequentielle Dateiorganisation ■ Kombination von sequentieller Hauptdatei und Indexdatei: indexsequentielle Dateiorganisationsform ■ Indexdatei kann geclusterter, dünnbesetzter Index sein ■ mindestens zweistufiger Baum ◆ Blattebene ist Hauptdatei (Datensätze) ◆ jede andere Stufe ist Indexdatei VL Datenbanken I – 14–53 Indexsequentielle Dateiorganisation (II) Seite 18 4711 18 8832 45 4711 Andreas Heuer ..... 31.10.58 5588 Gunter Saake ..... 5.10.60 6834 Michael Korn ..... 24.9.74 7754 Andreas Möller ..... 25.2.76 Seite 45 8832 Tamara Jagellowsk ..... 11.11.73 9912 Antje Hellhof ..... 4.4.70 9999 Christa Preisendanz ..... 10.5.69 VL Datenbanken I – 14–54 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 frei VL Datenbanken I – 14–55 VL Datenbanken I – 14–56 Prinzip des B-Baumes B-Bäume ■ Ausgangspunkt: ausgeglichener, balancierter Suchbaum ■ ■ Ausgeglichen oder balanciert: alle Pfade von der Wurzel zu den Blättern des Baumes gleich lang 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 ■ ■ Hauptspeicher-Implementierungsstruktur: binäre Suchbäume, beispielsweise AVL-Bäume von Adelson-Velskii und Landis Mehrwegebaum völlig ausgeglichen, wenn Datenbankbereich: Knoten der Suchbäume zugeschnitten auf Seitenstruktur des Datenbanksystems ■ mehrere Zugriffsattributwerte auf einer Seite ■ Mehrweg-Bäume 1. alle Wege von der Wurzel bis zu den 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 Daten VL Datenbanken I – 14–57 Eigenschaften des B-Baumes Einfügen in einen B-Baum: Beispiel n Datensätze in der Hauptdatei ⇒ in logm (n) Seitenzugriffen von der Wurzel zum Blatt ■ VL Datenbanken I – 14–58 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))) 1 1 Split 2 5 6 5 1 Split 2 5 1 7 3 1 2 3 5 6 4 2 6 1 4 5 7 7 8 Split VL Datenbanken I – 14–59 2 6 1 4 5 6 7 7 8 6 4 5 3 7 8 4 6 2 1 5 8 2 1 5 2 1 Split 5 2 7 6 4 1 2 1 6 2 5 1 3 5 7 8 VL Datenbanken I – 14–60 Einfügen in B-Bäumen Suchen in B-Bäumen Einfügen eines Wertes w ■ 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 ■ mit lookup entsprechende Blattseite suchen ■ passende Seite n < 2m Elemente, w einsortieren ■ passende Seite n = 2m Elemente, neue Seite erzeugen, ◆ ersten m Werte auf Originalseite ◆ letzten m Werte auf neue Seite ◆ mittleres Element auf entsprechende Indexseite nach oben ■ eventuell dieser Prozeß rekursiv bis zur Wurzel 25 10 20 2 5 7 8 13 14 15 18 30 40 22 24 26 27 28 32 35 38 41 42 45 46 VL Datenbanken I – 14–61 VL Datenbanken I – 14–62 Löschen in B-Bäumen Löschen in B-Bäumen (II) bei weniger als m Elementen auf Seite: Unterlauf Löschen eines Wertes w: Bsp.: 24; 28, 38, 35 Unterlaufbehandlung ■ ■ 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 mit lookup entsprechende Seite suchen 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 ■ w VL Datenbanken I – 14–63 VL Datenbanken I – 14–64 Komplexität der Operationen Beispiel für Einfügen und Löschen ■ Aufwand beim Einfügen, Suchen und Löschen im B-Baum immer O(logm (n)) Operationen Einfügen des Elementes 22; Löschen von 22 ■ 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: log 50 (1.000.000) = 4 Seitenzugriffe im schlechtesten Fall ■ Wurzelseite jedes B-Baumes normalerweise im Puffer: drei Seitenzugriffe 20 7 10 15 18 26 30 35 40 20 30 7 10 15 18 22 26 35 40 VL Datenbanken I – 14–65 B-Baum und B+-Baum im Vergleich B+-Baum ■ ■ ■ VL Datenbanken I – 14–66 in der Praxis am häufigsten eingesetzte Variante des B-Baumes: effizientere Änderungsoperationen, Verringerung der Baumhöhe 25 10 integriert Datensätze der Hauptdatei auf den Blattseiten des Baumes 7 in inneren Knoten nur noch Zugriffsattributwert und Zeiger auf nachfolgenden Seite der nächsten Stufe 7 Meyer 20 30 40 9 Indexdatei Hauptdatei 30 Müller 25 10 20 30 40 Indexdatei Hauptdatei 7 Meyer VL Datenbanken I – 14–67 ... 25 Anton 30 Müller VL Datenbanken I – 14–68 Oracle: Speicherarchitektur Indexdefinition in SQL create [unique] index indexname on basisrelationenname ( spaltenname_1 ordnung_1, ..., spaltenname_k ordnung_k ) Datenbank Tablespace I Platte A Daten-File 1 Table R Daten-Seg. r Daten-File 2 Index R1 Index-Seg. i1 DB-Bl. 1 Index R2 Index-Seg.i2 Basis Extent Datens.517 DB-Bl. 2 Datens.389 Table S Daten-Seg. s Extent 1 DB-Bl. 3 Datens.782 Index S1 Index-Seg. s1 Extent2 Daten-File 3 Tablespace J Platte B Daten-File n Datens.032 Tablespace K Block Physische Datenbankstrukturen Logische Datenbankstrukturen VL Datenbanken I – 14–69 Oracle: Blöcke Oracle: Datensätze DB-Block Kopf VL Datenbanken I – 14–70 Kopf Blockinformationen Tabellen-Verzeichnis Spalte1 Spalte 2 Spalte 3 fest = 24 Byte fest = 4 Byte für nicht geclusterte Tabellen Freibereich Datensatz-Verzeichnis variabel - wächst mit Anzahl der Tupel Datenbereich Kopf Anzahl der Spalten ClusterSchlüssel optional VL Datenbanken I – 14–71 Spaltenlänge Daten KettAdresse optional VL Datenbanken I – 14–72 Oracle: Datenorganisation Oracle: Systemarchitektur ■ Der Standard-Index ist als B + -Baum aufgebaut ■ Indexorganisierte Tabellen speichern Tupel direkt in den Blättern eines B + -Baums ■ Clusterung mehrerer Relationen möglich; Cluster-Indexe können als B + -Baum oder als Hash-Index organisiert werden. ■ ■ Bitmap-Indexe speichern Bit-Matrizen für Aufzählungsattribute (siehe Data Warehouses) Reverse Indexe interpretieren die Bytes des Primärschlüssels in umgekehrter Reihenfolge und brechen damit die Speicherung in Sortierreihenfolge auf ClientProzesse ServerProzesse System Global Area SystemProzesse Oracle-Instanz Datenbank VL Datenbanken I – 14–73 Oracle: Systemarchitektur (II) Oracle: Prozesse ■ DBWR (Database Writer): Pufferverwaltung LCKn System Global Area ■ LGWR (Log Writer): Redo-Log-Verwaltung (Transaktionslog) RECO DatenbankPuffer VL Datenbanken I – 14–74 Redo-LogPuffer ■ CKPT (Checkpointer): Sicherungspunkte (Recovery) PMON ■ SMON (System Monitor): Starten der Oracle-Instanz, Freispeicherverwaltung, Defragmentierung SMON ■ PMON (Process Monitor): Überwachung aller Prozesse ■ ARCH (Archiver): Archivierung von Redo-Log-Files CKPT NutzerProzess ServerProzess ■ RECO (Recoverer): Recovery verteilter Transaktionen DBWR LGWR ARCH ■ LCKn (Lock): Sperrverwaltung bei parallelen DBS ■ SBPn (Snapshot): Snapshot-Aktualisierung bei verteilten DBS Daten-File Redo-LogFile ■ Snnn (Server): Abarbeitung von Anfragen Control-File ■ Dnnn (Dispatcher): Dispatching bei mehreren Anwenderprozessen pro Serverprozess VL Datenbanken I – 14–75 VL Datenbanken I – 14–76