Teil II Verwaltung des Hintergrundspeichers Verwaltung des Hintergrundspeichers Überblick 1 Speicher- und Sicherungsmedien c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–1 Verwaltung des Hintergrundspeichers Überblick 1 Speicher- und Sicherungsmedien 2 Struktur des Hintergrundspeichers c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–1 Verwaltung des Hintergrundspeichers Überblick 1 Speicher- und Sicherungsmedien 2 Struktur des Hintergrundspeichers 3 Seiten, Sätze und Adressierung c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–1 Verwaltung des Hintergrundspeichers Überblick 1 Speicher- und Sicherungsmedien 2 Struktur des Hintergrundspeichers 3 Seiten, Sätze und Adressierung 4 Alternative Speichermodelle c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–1 Verwaltung des Hintergrundspeichers Überblick 1 Speicher- und Sicherungsmedien 2 Struktur des Hintergrundspeichers 3 Seiten, Sätze und Adressierung 4 Alternative Speichermodelle 5 Kompression c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–1 Verwaltung des Hintergrundspeichers Überblick 1 Speicher- und Sicherungsmedien 2 Struktur des Hintergrundspeichers 3 Seiten, Sätze und Adressierung 4 Alternative Speichermodelle 5 Kompression 6 Speicherorganisation in konkreten DBMS c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–1 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Speichermedien verschiedene Zwecke: I I I 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 in diesem Abschnitt: I I I Speicherhierarchie Magnetplatte Kapazität, Kosten, Geschwindigkeit c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–2 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Speicherhierarchie 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) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–3 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Cache-Hierarchie Eigenschaften der Speicherhierarchie I I I I Ebene x (etwa Ebene 3, der Hauptspeicher) hat wesentlich schnellere Zugriffszeit als Ebene x + 1 (etwa Ebene 4, der Sekundärspeicher) aber gleichzeitig einen weitaus höheren Preis pro Speicherplatz und deshalb eine weitaus geringere Kapazität Lebensdauer der Daten erhöht sich mit der Höhe der Ebenen c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–4 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Cache-Hierarchie /2 Zugriffslücke (Unterschiede zwischen den Zugriffsgeschwindigkeiten auf die Daten) vermindern ⇒ Cache-Speicher speichern auf Ebene x Daten von Ebene x + 1 zwischen: I I I Cache (Hauptspeicher-Cache) schnellere Halbleiterspeicher-Technologie für die Bereitstellung von Daten an Prozessor (Ebene 2 in der Speicherhierarchie) Plattenspeicher-Cache im Hauptspeicher: Puffer Cache beim Zugriff auf Daten im WWW über HTTP: Teil des Plattenspeichers, der Teile der im Internet bereitgestellten Daten zwischenspeichert c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–5 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Zugriffslücke Magnetplatten pro Jahr 70% mehr Speicherdichte Magnetplatten pro Jahr 7% schneller Prozessorleistung pro Jahr um 70% angestiegen Zugriffslücke zwischen Hauptspeicher und Magnetplattenspeicher beträgt 105 Größen: I I ns für Nanosekunden (also 10−9 Sekunden, ms für Millisekunden (10−3 Sekunden) KB (KiloByte = 103 Bytes), MB (MegaByte = 106 Bytes), GB (GigaByte = 109 Bytes) und TB (TeraByte = 1012 Bytes) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–6 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Zugriffslücke in Zahlen Speicherart typische Zugriffszeit time CPU cycles 6 ns 12 typische Kapazität Cache256 KB (L2) bis 8 Speicher MB (L3) Hauptspeicher 60 ns 120 1 GB bis 512 GB 5 — Zugriffslücke 10 — Magnetplatten- 8-12 ms 16*106 160 GB bis 3 TB speicher Platten-Farm 12 ms 24*106 im TB- bis PBoder -Array Bereich c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–7 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Lokalität des Zugriffs Caching-Prinzip funktioniert nicht, wenn immer neue Daten benötigt werden in den meisten Anwendungsfällen: Lokalität des Zugriffs D.h., Großteil der Zugriffe (in den meisten Fällen über 90%) auf Daten aus dem jeweiligen Cache Deshalb: Pufferverwaltung des Datenbanksystems wichtiges Konzept c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–8 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Typische Merkmale von Sekundärspeicher Merkmal 1983 1994 2003 2009 2017 SSD (NVMe) c Sattler / Saake Kapazität 30 MB 4.3 GB 73.4 GB 2 TB 2 TB Latenz 48.3 ms 12.7 ms 5.7 ms 5.1 ms ?? ?? Datenbank-Implementierungstechniken Bandbreite 0.6 MB/s 9 MB/s 86 MB/s 95 MB/s seq.read 3.500 MB/s seq.write 2.100 MB/s Letzte Änderung: 13. April 2017 2–9 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Flash Disk NAND Puffer SATASchnittstelle Controller NAND ECC NAND c Sattler / Saake Cache basierend auf EEPROMs in NAND- oder NOR-Technologie Arrays (=Flash-Block mit ca. 128 KB) von Speicherzellen, entweder ein Bit (SLC) oder 2-4 Bit (MLC) MLC sind langsamer und haben verkürzte Lebensdauer initial ist jedes Bit auf 1 gesetzt, durch Reprogrammieren auf 0 Löschen zurück auf 1 nur für ganzen Block Konsequenz: langsames Löschen (Lesen = 25 µs, Löschen = 2 ms), begrenzte Lebensdauer (ca. 100.000 Lösch-Schreib-Zyklen) n*1000 Blöcke à 64 ... 128 Seiten à 2/4 KB Daten + 128 Byte ECC Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–10 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Flash Disk in DBMS klassische, auf sequenzielles Lesen ausgerichtete, Strategien von DBMS nutzen die Stärken von Flash-Speicher nicht aus kleinere Blockgrößen lassen sich effizient adressieren, sollten aber ein Vielfaches der Flash-Seiten sein wahlfreie Lesezugriffe sind effizienter als auf Magnetplatten, sollten aber auf Größen von ca. 4 bis 16 MB begrenzt werden konkurrierende IO-Zugriffe sind bis zu einem gewissen Maße ohne negativen Performanzeinfluss durchführbar c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–11 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Vergleich Flash Disk vs. Magnetplatte 1000 Bandbreite in MB/s 100 10 1 HDD random SSD random HDD seq SSD seq 0.1 0.01 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 Blockgröße in KB c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–12 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Speicherkapazität und Kosten Größe 1 KB 0.5 KB 30 KB 1 MB 5 MB 20 MB 500 MB 1 GB 4.7 GB 10 GB 100 GB 200 GB c Sattler / Saake Information oder Medium = 1.000 Buchseite als Text eingescannte, komprimierte Buchseite = 1.000.000 Die Bibel als Text eingescanntes Buch CD-ROM; Oxford English Dictionary = 1.000.000.000 Digital Versatile Disk (DVD) komprimierter Spielfilm ein Stockwerk einer Bibliothek Kapazität eines Videobandes Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–13 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Speicherkapazität und Kosten /2 Größe 1 TB 1 TB 20 TB 20 TB 1 PB 1 PB 1 PB 2.5 PB 6.5 PB 15 PB 200 PB >55 EB c Sattler / Saake Information oder Medium = 1.000.000.000.000 Bibliothek mit 1M Bänden größtes Speicher-Array Library of Congress Bände als Text gespeichert = 1.000.000.000.000.000 Eingescannte Bände einer Nationalen Bibliothek 223,101 DVD’s Data Warehouse (Wal-Mart) größtes Data Warehouse (ebay) weltweite Plattenproduktion in 1996 weltweite Magnetbandproduktion in 1996 weltweite Plattenproduktion in 2009 Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–14 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Speicherarrays: RAID Kopplung billiger Standardplatten unter einem speziellen Controller zu einem einzigen logischen Laufwerk Verteilung der Daten auf die verschiedenen physischen Festplatten übernimmt Controller zwei gegensätzliche Ziele: I I Erhöhung der Fehlertoleranz (Ausfallsicherheit, Zuverlässigkeit) durch Redundanz Effizienzsteigerung durch Parallelität des Zugriffs c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–15 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Erhöhung der Fehlertoleranz Nutzung zusätzlicher Platten zur Speicherung von Duplikaten (Spiegeln) der eigentlichen Daten ⇒ bei Fehler: Umschalten auf Spiegelplatte bestimmte RAID-Levels (1, 0+1) erlauben eine solche Spiegelung Alternative: Kontrollinformationen wie Paritätsbits nicht im selben Sektor wie die Originaldaten, sondern auf einer anderen Platte speichern RAID-Levels 2 bis 6 stellen durch Paritätsbits oder Error Correcting Codes (ECC) fehlerhafte Daten wieder her ein Paritätsbit kann einen Plattenfehler entdecken und bei Kenntnis der fehlerhaften Platte korrigieren c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–16 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Erhöhung der Effizienz Datenbank auf mehrere Platten verteilen, die parallel angesteuert werden können ⇒ Zugriffszeit auf große Datenmengen verringert sich fast linear mit der Anzahl der verfügbaren Platten Verteilung: bit-, byte- oder blockweise höhere RAID-Levels (ab Level 3) verbinden Fehlerkorrektur und block- oder bitweises Verteilen von Daten Unterschiede: I I schnellerer Zugriff auf bestimmte Daten höherer Durchsatz für viele parallel anstehende Transaktionen durch eine Lastbalancierung des Gesamtsystems c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–17 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien RAID-Levels RAID0+1 RAID0 RAID1 RAID0 RAID0 A B A B A B C D C D C D RAID2 RAID1 A B A B A[1] B[1] A[2] A ECC[1] B[2] B ECC[1] B ECC[2] C ECC[2] D ECC[2] ... C C C[1] C[2] C ECC[1] D D D[1] D[2] D ECC[1] c Sattler / Saake Datenbank-Implementierungstechniken A ECC[2] Letzte Änderung: 13. April 2017 2–18 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien RAID-Levels /2 RAID3 RAID4 A ECC A B B ECC C D A ECC A[1] A[2] B[1] B[2] C[1] C[2] C ECC C ECC D[1] D[2] D ECC D ECC ... RAID5 A B C D E F E ECC C ECC F ECC D ECC c Sattler / Saake B ECC RAID6 A B D E C ... F ... A ECC A ECC[1] A ECC[2] B ECC B ECC[1] B ECC[2] ... Datenbank-Implementierungstechniken ... Letzte Änderung: 13. April 2017 ... 2–19 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien RAID-Levels /3 Level 0 1 0+1 2 3 4 5 6 Striping blockweise √ Striping bitweise √ √ c Sattler / Saake Parität Parität dedizierte Platte Parität verteilt Erkennen mehrerer Fehler √ √ √ √ √ √ Kopie √ √ √ √ √ Datenbank-Implementierungstechniken √ √ √ √ Letzte Änderung: 13. April 2017 2–20 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Sicherungsmedien: Tertiärspeicher weniger oft benutzte Teile der Datenbank, die eventuell sehr großen Umfang haben (Text, Multimedia) „billiger“ speichern als auf Magnetplatten aktuell benutzte Datenbestände zusätzlich sichern (archivieren) Tertiärspeicher: Medium austauschbar I I offline: Medien manuell wechseln (optische Platten, Bänder) nearline: Medien automatisch wechseln (Jukeboxes, Bandroboter) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–21 Verwaltung des Hintergrundspeichers Speicher- und Sicherungsmedien Langzeitarchivierung Lebensdauer, Teilaspekte: I I I I physische Haltbarkeit des Mediums garantiert die Unversehrtheit der Daten: 10 Jahre für Magnetbänder, 30 Jahre für optische Platten, Papier??? Vorhandensein von Geräten und Treibern garantiert die Lesbarkeit von Daten: Geräte für Lochkarten oder 8-Zoll-Disketten? zur Verfügung stehende Metadaten garantieren die Interpretierbarkeit von Daten Vorhandensein von Programmen, die auf den Daten arbeiten können, garantieren die Wiederverwendbarkeit von Daten Beispiel: I NCAR’s AMSTAR - 30PB, z.B. Klimadaten, 180 TB pro Monat c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–22 Verwaltung des Hintergrundspeichers Struktur des Hintergrundspeichers Verwaltung des Hintergrundspeichers Abstraktion von Speicherungs- oder Sicherungsmediums Modell: Folge von Blöcken Mengenorientierte MOS Schnittstelle Datensystem Satzorientierte SOS Schnittstelle Zugriffssystem Interne ISS Satzschnittstelle Speichersystem SystempufferSPS schnittstelle Pufferverwaltung DS Dateischnittstelle Betriebssystem GS Geräteschnittstelle Externspeicher c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–23 Verwaltung des Hintergrundspeichers Struktur des Hintergrundspeichers Betriebssystemdateien Alternativen: I I I jede Relation oder jeder Zugriffspfad in genau einer Betriebssystem-Datei ein oder mehrere BS-Dateien, DBS verwaltet Relationen und Zugriffspfade selbst innerhalb dieser Dateien DBS steuert selbst Magnetplatte an und arbeitet mit den Blöcken in ihrer Ursprungsform (raw device) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–24 Verwaltung des Hintergrundspeichers Struktur des Hintergrundspeichers Betriebssystemdateien /2 Warum nicht immer BS-Dateiverwaltung? I I I I 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 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–25 Verwaltung des Hintergrundspeichers Struktur des Hintergrundspeichers Blöcke und Seiten 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 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–26 Verwaltung des Hintergrundspeichers Struktur des Hintergrundspeichers Dienste des Dateisystems Allokation oder Deallokation von Speicherplatz Holen oder Speichern von Seiteninhalten Allokation möglichst so, dass 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 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–27 Verwaltung des Hintergrundspeichers Struktur des Hintergrundspeichers Abbildung der Datenstrukturen Abbildung der konzeptuellen Ebene auf interne Datenstrukturen Unterstützung durch Metadaten (im Data Dictionary, etwa das interne Schema) Konz. Ebene Relationen → Tupel → Attributwerte → c Sattler / Saake Interne Ebene Log. Dateien → Datensätze → Felder → Dateisystem/Platte Phys. Dateien Seiten/Blöcke Bytes Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–28 Verwaltung des Hintergrundspeichers Struktur des Hintergrundspeichers Varianten der Abbildungen Beispiel 1: jede Relation in je einer logischen Datei, diese insgesamt in einer einzigen physischen Datei Beispiel 2: Cluster-Speicherung – mehrere Relationen in einer logischen Datei c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–29 Verwaltung des Hintergrundspeichers Struktur des Hintergrundspeichers Übliche Form der Speicherung eine Relation mehrere logische Dateien IndexDatei Heuer Korn PANr Nachname Ort 4711 Heuer DBR 5588 Saake MD 6834 Korn MD IndexDatei Hauptdatei 4711 Heuer DBR 5588 Saake MD 6834 Korn MD DBR MD Saake c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–30 Verwaltung des Hintergrundspeichers Struktur des Hintergrundspeichers Übliche Form der Speicherung /2 mehrere logische Dateien Heuer Korn 4711 Heuer DBR 5588 Saake MD 6834 Korn MD DBR MD Saake IndexDatei IndexDatei Hauptdatei eine physische Datei 4711 Heuer 5588 Saake Heuer 6834 DBR MD MD Korn DBR MD Saake c Sattler / Saake Korn Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–31 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Seite Block: I I kleinste adressierbare Einheit auf Externspeicher Zuordnung zu Seiten im Hauptspeicher Aufbau von Seiten I Header F F F F I I 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 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–32 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Seitenorganisation Organisation der Seiten: doppelt verkettete Liste freie Seiten in Freispeicherverwaltung Vor Nach Seite 115 81 Weitere Header-Informationen Seite 136 136 Tupel 115 175 ... Offset 142 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–33 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Seite: Adressierung der Datensätze adressierbare Einheiten I I I I I I 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) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–34 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Seitenzugriff als Flaschenhals Maß für die Geschwindigkeit von Datenbankoperationen: Anzahl der Seitenzugriffe auf dem Sekundärspeicher (wegen Zugriffslücke) Faustregel: Geschwindigkeit des Zugriffs ⇐ Qualität des Zugriffspfades ⇐ Anzahl der benötigten Seitenzugriffe Hauptspeicheroperationen nicht beliebig vernachlässigbar c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–35 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Einpassen von Datensätzen auf Blöcke 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 I I 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 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–36 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Verschiedene Satztypen Sätze Position fixiert c Sattler / Saake unfixiert Länge fest Datenbank-Implementierungstechniken variabel Letzte Änderung: 13. April 2017 2–37 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Sätze fester Länge SQL: Datentypen fester und variabler Länge I I char(n) Zeichenkette der festen Länge n varchar(n) Zeichenkette variabler Länge mit der Maximallänge n Aufbau der Datensätze, falls alle Datenfelder feste Länge: 1 2 3 Verwaltungsblock mit Typ eines Satzes (wenn unterschiedliche Satztypen auf einer Seite möglich) und Löschbit Freiraum zur Justierung des Offset Nutzdaten des Datensatzes c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–38 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Sätze variabler Länge im Verwaltungsblock nötig: Satzlänge l, um die Länge des Nutzdaten-Bereichs d zu kennen l Nutzdaten d Länge bzw. Verwaltungsblock c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–39 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Sätze variabler Länge /2 Strategie a) l n Anzahl Attribute al1 A1 Attributlängen aln ... An Attributwerte Strategie b) l n Anzahl Attribute c Sattler / Saake ap1 ... apn apn+1 Attributzeiger A1 ... An Attributwerte Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–40 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Speicherung von Sätzen variabler Länge Strategie a): Jedes Datenfeld variabler Länge Ai 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) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–41 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Anwendung variabel langer Datenfelder „Wiederholgruppen“: Liste von Werten des gleichen Datentyps I I I Zeichenketten variabler Länge wie varchar(n) sind Wiederholgruppe mit char als Basisdatentyp, mathematisch also die Kleene’sche Hülle (char )∗ Mengen- oder listenwertige Attributwerte, die im Datensatz selbst denormalisiert gespeichert werden sollen (Speicherung als geschachtelte Relation oder Cluster-Speicherung), bei einer Liste von integer -Werten wäre dies (integer )∗ Adressfeld für eine Indexdatei, die zu einem Attributwert auf mehrere Datensätze zeigt (Sekundärindex), also (pointer )∗ c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–42 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Blockungstechniken: Nichtspannsätze jeder Datensatz in maximal einem Block Seite p A B C D Seite p+1 Standardfall (außer bei BLOBs oder CLOBs) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–43 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Blockungstechniken: Spannsätze Spannsätze: Datensatz eventuell in mehreren Blöcken Seite p A C B D Seite p+1 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–44 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Adressierungstechniken Adressierung direkte Adressierung indirekte Adressierung logische Adressierung c Sattler / Saake TID-Konzept Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–45 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Adressierung: TID-Konzept 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 Tupelzeigern (Satzverzeichnis), 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 Effizienzgründen nicht wünschenswert: Reorganisation in regelmäßigen Abständen c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–46 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung TID-Konzept: einstufige Referenz Satzverzeichnis Seite p TID p i Tupelzeiger i-tes Tupel c Sattler / Saake "Arabica Black" Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–47 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung TID-Konzept: zweistufige Referenz Seite p TID p i TID <q, k> Seite q "Arabica Black Espresso" c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–48 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung Große unstrukturierte Sätze RDBS-Datentypen für sehr große, unstrukturierte Informationen: I I Binary Large Objects (BLOBs): Byte-Folgen wie Bilder, Audio- und Videosequenzen Character Large Objects (CLOBs): Folgen von ASCII-Zeichen (unstrukturierter ASCII-Text) lange Felder überschreiten i.a. Grenzen einer Seite, deshalb nur Nicht-BLOB-Felder auf der Originalseite speichern LOB linearer Zugriff wahlfreier Zugriff verkettete Liste Directory c Sattler / Saake B-Baum Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–49 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung BLOB-Speicherung: Lösung 1 Als Attributwert Zeiger: Zeiger zeigt auf Beginn einer Seiten- oder Blockliste, die BLOB aufnimmt Block BLOB Vorteil bei Einfügungen, Löschungen, Modifikationen Nachteil bei wahlfreien Zugriff in das BLOB hinein c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–50 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung BLOB-Speicherung: Lösung 2 Als Attributwert BLOB-Directory: I I I BLOB-Größe weitere Verwaltungsinformationen mehrere Zeiger, die auf die einzelnen Seiten verweisen Vorteil: schneller Zugriff auf Teilbereiche des BLOBs Nachteil: festgelegte, begrenzte Maximalgröße des BLOBs (Gigabyte-BLOB; 8-Byte-Adressierung, Seitengröße 1 KB ⇒ 8 MB für ein BLOB-Directory) effizienter: B-Baum zur Speicherung von BLOBs (s.u.) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–51 Verwaltung des Hintergrundspeichers Seiten, Sätze und Adressierung BLOB-Speicherung: Lösung 2 BLOB-Größe Verwaltungsinfo. Zeiger auf Block 1 Zeiger auf Block 2 Zeiger auf Block 3 ... Zeiger auf Block k BLOB-Directory c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–52 Verwaltung des Hintergrundspeichers Alternative Speichermodelle Alternative Speichermodelle bisher klassisches N-äres Speichermodell (NSM), auch „row store“ Vorteile: I I gesamter Datensatz kann mit einem Seitenzugriff gelesen werden leichte Änderbarkeit einzelner Attributwerte Nachteil: I werden nur wenige Attributwerte benötigt, müssen trotzdem immer alle Attributwerte gelesen werden unnötiger IO-Aufwand Alternativen: spaltenorientierte Speichermodelle I I Zerlegung einer n-stelligen Relation in eine Menge von Projektionen (z.B. binäre Relation) Identifikation (und Rekonstruktion) über eine Schlüsselspalte oder Position c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–53 Verwaltung des Hintergrundspeichers Alternative Speichermodelle Spaltenorientierte Datenorganisation SAdr Preis SAdr ProdNr SAdr 1 Jamaica Blue 8,55 0x00 1 0x00 Jamaica Blue 0x00 2 Arabica Black 9,95 0x01 2 0x01 Arabica Black 0x01 9,95 3 New York Espresso 10,95 0x02 3 0x02 New York Espresso 0x02 10,95 4 Guatemala Grande 11,95 0x03 4 0x03 Guatemala Grande 0x03 11,95 5 Breakfast Blend 9,90 0x04 5 0x04 Breakfast Blend 0x04 9,90 ProdNr Bezeichnung c Sattler / Saake Preis Datenbank-Implementierungstechniken Bezeichnung 8,55 Letzte Änderung: 13. April 2017 2–54 Verwaltung des Hintergrundspeichers Alternative Speichermodelle Alternative Speichermodelle: DSM Decomposition Storage Model (DSM) I I I column stores alle Werte einer Spalte (Attribut) werden hintereinander gespeichert Adressierung über Position Seitenaufbau 3 1044 2 1043 4 1045 1 1042 4 Arabica Black 2 c Sattler / Saake 3 Arabica Black New York Espresso 1 Subrelation ProdNr Subrelation Bezeichnung Jamaica Blue Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–55 Verwaltung des Hintergrundspeichers Alternative Speichermodelle Alternative Speichermodelle: DSM /2 Kompression einfach möglich (z.B. Run length encoding) effizientere Scanoperationen (Feldoperationen Cache-Nutzung) bessere jedoch: Updateoperationen sind komplexer, Lesen aller Spalten aufwendiger Einsatz bei leseoptimierten Datenbanken c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–56 Verwaltung des Hintergrundspeichers Alternative Speichermodelle Ein Full-Table-Scan in NSM Im NSM-Modell stehen alle Tupel einer Tabelle sequenziell hintereinander auf einer Datenbankseite. Tupel c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–57 Verwaltung des Hintergrundspeichers Alternative Speichermodelle Ein Full-Table-Scan in NSM Im NSM-Modell stehen alle Tupel einer Tabelle sequenziell hintereinander auf einer Datenbankseite. l_shipdate c Sattler / Saake Tupel Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–57 Verwaltung des Hintergrundspeichers Alternative Speichermodelle Ein “Full-Table-Scan“ in DSM Im DSM-Modell stehen alle Werte eines Attributs sequenziell hintereinander auf einer Datenbankseite. l_shipdate Tupel Alle Daten, die für den “l_shipdate Scan„ geladen werden sind auch dafür relevant. c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–58 Verwaltung des Hintergrundspeichers Alternative Speichermodelle Alternative Speichermodelle: PAX Partition Attributes Across (PAX) als Kompromiss I I NSM: alle Spalten eines Satzes auf der gleichen Seite DSM: vertikale Partitionierung, Miniseiten für jeweils eine Spalte Miniseitenverzeichnis 1 1 1 1 0 0 0 0 0 Präsenzbits Miniseite für ProdNr 1045 Satzverzeichnis 1044 Arabica Black 1043 1042 New York Espresso Arabica Black Miniseite für Bezeichnung Jamaica Blue 1 1 1 1 0 0 0 0 0 Miniseite für Preis 11,99 c Sattler / Saake 16,95 14,95 17,99 Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–59 Verwaltung des Hintergrundspeichers Kompression Kompression von Daten Motivation I I I weniger Speicherplatz für Daten Kosteneinsparung für Festplatten und auch Hauptspeicher weniger Blöcke zum Speichern der gleichen (Roh-)Datenmenge mehr Daten in den Datenbankpuffer bessere Puffernutzung weniger Seiten vom Sekundärspeicher lesen Erhöhung des Durchsatzes Anforderungen I I verlustlose Kompression leichtgewichtige Dekompression c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–60 Verwaltung des Hintergrundspeichers Kompression Kompressionstechniken: Klassifikation Codelänge: I I feste Codelänge: alle Werte werden mit der gleichen Anzahl von Bits kodieren variable Codelänge: unterschiedliche Anzahl von Bits; z.B. Codelänge korreliert mit der Häufigkeit des Wertes (Entropiekodierung, z.B. Huffman) Granularität bzw. Einheiten: I I Attributwerte (Nullwerte, BLOBs), Tupel, Tupelmengen (Partitionen), Spalten, Blöcke, Tabellen Indexstrukturen c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–61 Verwaltung des Hintergrundspeichers Kompression Run Length Encoding auch Lauflängenkodierung lange Folgen gleicher Werte werden durch das einmalige Speichern des Wertes zusammen mit der Häufigkeit der Wiederholung ersetzt insbesondere bei spaltenorganisierter Datenorganisation; durch Sortierung weiter unterstützt Ort Ort Berlin 3 Berlin Berlin 3 Ilmenau Berlin 1 Magdeburg Ilmenau 2 Rostock Ilmenau Ilmenau Magdeburg Rostock Rostock c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–62 Verwaltung des Hintergrundspeichers Kompression Delta Encoding Speicherung der Wertdifferenz zum Vorgänger anstelle des Wertes insbesondere bei aufeinanderfolgenden Werten mit geringer Differenz Unterstützung durch Sortierung c Sattler / Saake KNr PLZ PLZ ... 39106 39106 ... 39114 8 ... 39126 12 ... 98684 ... 98693 Datenbank-Implementierungstechniken 59558 7 Letzte Änderung: 13. April 2017 2–63 Verwaltung des Hintergrundspeichers Kompression Bit-Vector Encoding bei kleiner Anzahl verschiedener Werte: pro Spaltenwert ein Bitstring (1, wenn Tupel an der Position den Wert hat, sonst 0) Länge des Bitstrings entspricht Anzahl der Tupel Verwendung u.a. bei Bitmap-Indexen KNr Kundenstatus ... Premium ... Silber ... Standard ... Standard ... Standard ... Premium ... Silber ... Standard c Sattler / Saake Premium: 1000.0100 Silber: 0100.0010 Standard: 0011.1001 Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–64 Verwaltung des Hintergrundspeichers Kompression Dictionary Encoding Verwendung eines Wörterbuchs für alle (String-)werte und Eintrag eines Codes für den eigentlichen Spaltenwert insbesondere bei häufigen und langen Werten KNr Bundesland ... Thüringen ... Thüringen ... Sachsen ... Sachsen-Anh. ... Hessen ... Bayern ... Hessen ... Sachsen-Anh. c Sattler / Saake Bundesland 0100 0100 0010 0011 0001 0000 Dictionary Bayern 0000 Hessen 0001 Sachsen 0010 Sachsen-Anh. 0011 Thüringen 0100 0001 0011 Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–65 Verwaltung des Hintergrundspeichers Kompression Frame of Reference (FOR) blockweise Kompression: pro (Disk-)Block einen Referenzwert (z.B. kleinster Wert) alle anderen Spaltenwerte v als Delta Encoding zum Referenzwert mit dlog2 (maxv − minv +1)e Bits speichern Problem: Ausreißer (bzgl. Abstand zum Referenzwert) können Bitbedarf deutlich vergrößern Lösung: Patched FOR (PFOR): Unkomprimierte Speicherung von Ausreißern Beispiel: 1025, 1027, 1028, 1031, 1026, 1030, 1027, 2051 I I FOR: 1025 − 2, 3, 6, 1, 5, 2, 1026 (mit jeweils 11 Bit) = 77 Bits PFOR: 1025 − 2, 3, 6, 1, 5, 2 (mit 3 Bits), 2051 = 18 + 32 Bits c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–66 Verwaltung des Hintergrundspeichers Kompression Frequency Partitioning entwickelt im Rahmen des BLINK-Projektes von IBM Kompression kompletter Tupel, Kodierung der Spaltenwerte durch Dictionary Encoding mit Entropiekodierung Vermeidung des Overheads beim Lesen des n-ten Spaltenwertes durch Codes unterschiedlicher Länge (2 ns Overhead pro Spaltenwert) Idee: Gruppierung von Tupeln auf Basis der Spaltenwerte derart, dass Gruppen von Tupeln (Partitionen) Spaltencodes gleicher Länge haben I I I Partitionen nach Häufigkeit des Vorkommens der Spaltenwerte bilden Partitionen mit Entropiekodierung komprimieren pro Partition werden feste Codelängen verwendet c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–67 Verwaltung des Hintergrundspeichers Kompression Frequency Partitioning: Prinzip Spalte2 Spaltenpartitionen Häufigkeit Spalte1 Werte Häufigkeit Werte Spaltenpartitionen c Sattler / Saake Datenbank-Implementierungstechniken Zellen Letzte Änderung: 13. April 2017 2–68 Verwaltung des Hintergrundspeichers Kompression Frequency Partitioning: Partitionierung Sortierung der Spaltenwerte nach Häufigkeiten + Zerlegung in Intervalle Intervallgröße: Zweierpotenz (da Bitkodierung) mit Ausnahme des letzten Intervalls optimale Partitionierung durch dynamische Programmierung: Zielfunktion = durchschnittliche Größe der kodierten Spalte vollständige Suche über alle Kombinationen von Spaltenpartitionen nicht möglich, daher Greedy: welche Spalte zieht den größten Gewinn aus einer zusätzlichen Partition? c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–69 Verwaltung des Hintergrundspeichers Speicherorganisation in konkreten DBMS Oracle: Datenbankstruktur Datenbank Tablespace I Daten-File 1 Platte A Daten-File 2 Daten-File 3 Platte B Block Tablespace J Daten-File n Table R Daten-Seg. r Index R1 Index-Seg. r1 Index R2 Index-Seg. r2 Table S Daten-Seg. s Index S1 Index-Seg. s1 Datens. 032 Basis Extent Extent 1 DB-Bl. 1 DB-Bl. 2 Datens. 517 Datens. 389 Datens. 782 DB-Bl. 3 Extent 2 Tablespace K Physische Datenbankstruktur c Sattler / Saake Logische Datenbankstruktur Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–70 Verwaltung des Hintergrundspeichers Speicherorganisation in konkreten DBMS Oracle: Blöcke 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 2–71 Verwaltung des Hintergrundspeichers Speicherorganisation in konkreten DBMS Oracle: Aufbau von Datensätzen Kopf Kopf Anzahl der Spalten ClusterSchlüssel optional Spalte1 Spalte 2 Spalte 3 Spaltenlänge Daten KettAdresse optional Kettadresse für Row Chaining: Verteilung und Verkettung zu großer Datensätze (> 255 Spalten) über mehrere Blöcke row id = (data object identifier, data file identifier, block identifier, row identifier) c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–72 Verwaltung des Hintergrundspeichers Speicherorganisation in konkreten DBMS Zusammenfassung Speicherhierarchie und Zugriffslücke Speicher- und Sicherungsmedien Hintergrundspeicher: Blockmodell Einpassen von Sätzen in Seiten Satzadressierung: TID-Konzept Kompressionstechniken Literatur: „Datenbanken: Implementierungstechniken“, Kapitel 3 c Sattler / Saake Datenbank-Implementierungstechniken Letzte Änderung: 13. April 2017 2–73