Inhalt Datenbanken 2 Einführung, Physische Datenorganisation 1 Einführung 2 Speichermedien FB Computerwissenschaften Universität Salzburg 3 Speicherzugriff Version 18. Oktober 2016 4 Datei Organisation Nikolaus Augsten [email protected] Wintersemester 2016/17 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 1 / 48 Augsten (Univ. Salzburg) Einführung Speichermedien 3 Speicherzugriff 4 Datei Organisation Augsten (Univ. Salzburg) 2 / 48 Alle Infos zu Vorlesung und Proseminar: Einführung 2 Wintersemester 2016/17 Einführung Inhalt 1 DB2 – Physische Datenorganisation http://dbresearch.uni-salzburg.at/teaching/2016ws/db2/ DB2 – Physische Datenorganisation Wintersemester 2016/17 3 / 48 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 4 / 48 Einführung Einführung Was erwartet Sie inhaltlich? Die ANSI/SPARC Drei-Ebenen Architektur Benutzer Benutzer Datenbanken 1: Logische Ebene Externe Sicht Externe Sicht Konzeptioneller Entwurf (ER) Relationale Algebra SQL Relationale Entwurfstheorie Benutzer ... Externe Sicht Abbildung zwischen externer Sicht und logischer Ebene Logische Ebene Datenbanken 2: Physische Ebene Wie baue (programmiere) ich ein Datenbanksystem? Logische Ebene Abbildung zwischen logischer und physischer Ebene Daten müssen physisch gespeichert werden Datenstrukturen und Zugriffs-Algorithmen müssen gefunden werden SQL-Anfragen müssen in ausführbare Programme umgesetzte werden Physische Ebene Physische Ebene Es geht um die Effizienz (schneller ist besser) Gespeicherte Datenbank Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 5 / 48 Augsten (Univ. Salzburg) Einführung DB2 – Physische Datenorganisation Wintersemester 2016/17 6 / 48 Wintersemester 2016/17 8 / 48 Speichermedien Inhaltsübersicht Datenbanksysteme Inhalt 1. Physische Datenorganisation Speichermedien, Dateiorganisation Kapitel 7 in Kemper und Eickler Chapter 10 in Silberschatz et al. 1 Einführung 2 Speichermedien 3 Speicherzugriff 4 Datei Organisation 2. Indexstrukturen Sequentielle Dateien, B+ Baum, Statisches Hashing, Dynamisches Hashing, Mehrere Suchschlüssel, Indices in SQL Kapitel 7 in Kemper und Eickler Chapter 11 in Silberschatz et al. 3. Anfragebearbeitung Effiziente Implementierung der (relationalen) Operatoren Kapitel 8 in Kemper und Eickler Chapter 12 in Silberschatz et al. 4. Anfrageoptimierung Äquivalenzregeln und Äquivalenzumformungen, Join Ordnungen Kapiteln 8 in Kemper und Eickler Chapter 13 in Silberschatz et al. Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 7 / 48 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Speichermedien Speichermedien Speichermedien/1 Speichermedien/2 Verschiedene Arten von Speichermedien sind für Datenbanksysteme relevant. Speichermedien lassen sich in Speicherhierarchie anordnen. Klassifizierung der Speichermedien nach: Zugriffsgeschwindigkeit Kosten pro Dateneinheit Verlässlichkeit flüchtig schneller Zugriff (x0 bis x00 ns; 1 ns = 10−9 s) meist zu klein (oder zu teuer) um gesamte Datenbank zu speichern mehrere GB weit verbreitet Preise derzeit ca. 5 EUR/GB (DRAM) Kapazitäten steigen ständig und Preis/Byte sinkt (ca. Faktor 2 alle 2-3 Jahre) Flüchtige vs. persistente Speicher Flüchtig (volatile): Inhalt geht nach Ausschalten verloren Persistent (non-volatile): Inhalt bleibt auch nach Ausschalten DB2 – Physische Datenorganisation flüchtig am schnellsten und am teuersten von System Hardware verwaltet Hauptspeicher (RAM) Datenverlust durch Stromausfall oder Systemabsturz Physische Fehler des Speichermediums Augsten (Univ. Salzburg) Cache Wintersemester 2016/17 9 / 48 Augsten (Univ. Salzburg) Speichermedien Wintersemester 2016/17 10 / 48 Speichermedien Speichermedien/3 Speichermedien/4 Flash memory (SSD) Festplatte persistent lesen ist sehr schnell (x0 bis x00 µs; 1 µs = 10−6 s) hohe sequentielle Datentransferrate (bis 500 MB/s) nicht-sequentieller Zugriff nur ca. 25% langsamer Schreibzugriff langsamer und komplizierter persistent Daten sind auf Magnetscheiben gespeichert, mechanische Drehung sehr viel langsamer als RAM (Zugriff im ms-Bereich; 1 ms = 10−3 s) sequentielles Lesen: 25–100 MB/s billig: Preise teils unter 0.1 EUR/GB sehr viel mehr Platz als im Hauptspeicher; derzeit x00 GB - 4 TB Kapazitäten stark ansteigend (Faktor 2 bis 3 alle 2 Jahre) Hauptmedium für Langzeitspeicher: speichert gesamte Datenbank für den Zugriff müssen Daten von der Platte in den Hauptspeicher geladen werden direkter Zugriff, d.h., Daten können in beliebiger Reihenfolge gelesen werden Diskette vs. Festplatte Daten können nicht überschrieben werden, sondern müssen zuerst gelöscht werden nur beschränkte Anzahl von Schreib/Lösch-Zyklen sind möglich Preise derzeit ca. 1 EUR/GB Speichermedien: NAND Flash Technologie (Firmware: auch NOR) weit verbreitet in Embedded Devices (z.B. Digitalkamera) auch als EEPROM bekannt (Electrically Erasable Programmable Read-Only Memory) Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation DB2 – Physische Datenorganisation Wintersemester 2016/17 11 / 48 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 12 / 48 Speichermedien Speichermedien Speichermedien/5 Speichermedien/6 Optische Datenträger Band persistent Daten werden optisch via Laser von einer drehenden Platte gelesen lesen und schreiben langsamer als auf magnetischen Platten sequentielles Lesen: 1 Mbit/s (CD) bis 400 Mbit/s (Blu-ray) verschiedene Typen: CD-ROM (640 MB), DVD (4.7 to 17 GB), Blu-ray (25 to 129 GB) write-once, read-many (WORM) als Archivspeicher verwendet mehrfach schreibbare Typen vorhanden (CD-RW, DVD-RW, DVD-RAM) Jukebox-System mit austauschbaren Platten und mehreren Laufwerken sowie einem automatischen Mechanismus zum Platten wechseln – “CD-Wechsler” mit hunderten CD, DVD, oder Blu-ray disks Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 13 / 48 persistent Zugriff sehr langsam, da sequentieller Zugriff Datentransfer jedoch z.T. wie Festplatte (z.B. 120 MB/s, komprimiert 240MB/s) sehr hohe Kapazität (mehrere TB) sehr billig (ab 10 EUR/TB) hauptsächlich für Backups genutzt Band kann aus dem Laufwerk genommen werden Band Jukebox für sehr große Datenmengen x00 TB (1 terabyte = 1012 bytes) bis Petabyte (1 petabyte = 1015 bytes) Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Speichermedien 14 / 48 Speichermedien Speichermedien/7 Festplatten/1 Meist sind Datenbanken auf magnetischen Platten gespeichert, weil: Speichermedien können hierarchisch nach Geschwindigkeit und Kosten geordnet werden: Primärspeicher: flüchtig, schnell, teuer die Datenbank zu groß für den Hauptspeicher ist der Plattenspeicher persistent ist Plattenspeicher billiger als Hauptspeicher ist Register Schematischer Aufbau einer Festplatte: Cache track t e.g., Cache, Hauptspeicher Sekundärspeicher: persistent, langsamer und günstiger als Primärspeicher e.g., Magnetplatten, Flash Speicher auch Online-Speicher genannt Tertiärspeicher: persistent, sehr langsam, sehr günstig e.g., Magnetbänder, optischer Speicher auch Offline-Speicher genannt DB2 – Physische Datenorganisation spindle Hauptspeicher arm assembly Flashspeicher sector s Magnetische Platte Optische Platte cylinder c read-write head Magnetband platter Datenbank muss mit Speichermedien auf allen Ebenen umgehen Augsten (Univ. Salzburg) Wintersemester 2016/17 Wintersemester 2016/17 rotation 15 / 48 Augsten (Univ. Salzburg) arm DB2 – Physische Datenorganisation Wintersemester 2016/17 16 / 48 Speichermedien Speichermedien Festplatten/2 Festplatten/3 Controller: Schnittstelle zwischen Computersystem und Festplatten: übersetzt high-level Befehle (z.B. bestimmten Sektor lesen) in Hardware Aktivitäten (z.B. Disk Arm bewegen und Sektor lesen) für jeden Sektor wird Checksum geschrieben beim Lesen wird Checksum überprüft Drei Arbeitsvorgänge für Zugriff auf Festplatte: Spurwechsel (seek time): Schreib-/Lesekopf auf richtige Spur bewegen Latenz (rotational latency): Warten, bis sich der erste gesuchte Sektor unter dem Kopf vorbeibewegt. Systembus Lesezeit: Sektoren lesen/schreiben, hängt mit Datenrate (data transfer rate) zusammen Festplattencontroller Zugriffszeit = Spurwechsel + Latenz + Lesezeit Festplatten Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 17 / 48 Augsten (Univ. Salzburg) Speichermedien DB2 – Physische Datenorganisation Wintersemester 2016/17 18 / 48 Speichermedien Festplatten/4 Festplatten/5 Performance Parameter von Festplatten Spurwechsel: gerechnet wird mit mittlerer Seek Time (=1/2 worst case seek time, typisch 2-10ms) Latenz: Block: (auch “Seite”) zusammenhängende Reihe von Sektoren auf einer bestimmten Spur errechnet sich aus Drehzahl (5400rpm-15000rpm) rpm = revolutions per minute Latenz [s] = 60 / Drehzahl [rpm] mittlere Latenz: 1/2 worst case (2ms-5.5ms) Interblock Gaps: ungenützter Speicherplatz zwischen Sektoren ein Block ist eine logische Einheit für den Zugriff auf Daten. Datenrate: Rate mit der Daten gelesen/geschrieben werden können (z.B. 25-100 MB/s) Mean time to failure (MTTF): mittlere Laufzeit bis zum ersten Mal ein Hardware-Fehler auftritt Daten zwischen Platte und Hauptspeicher werden in Blocks übertragen Datenbank-Dateien sind in Blocks unterteilt Block Größen: 4-16 kB kleine Blocks: mehr Zugriffe erforderlich große Blocks: Ineffizienz durch nur teilweise gefüllte Blocks typisch: mehrere Jahre keine Garantie, nur statistische Wahrscheinlichkeit Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 19 / 48 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 20 / 48 Speichermedien Speicherzugriff Integrierte Übung 1.1 Inhalt Betrachte folgende Festplatte: Sektor-Größe B = 512 Bytes, Interblock Gap Size G = 128 Bytes, Sektoren/Spur S = 20, Spuren pro Scheibenseite T = 400, Anzahl der beidseitig beschriebenen Scheiben D = 15, mittlerer Spurwechsel sp = 30ms, Drehzahl dz = 2400rpm. 1 Einführung 2 Speichermedien 3 Speicherzugriff 4 Datei Organisation Bestimme die folgenden Werte: a) gesamte Kapazität der Festplatte b) nutzbare Kapazität der Festplatte c) mittlere Zugriffszeit (1 Sektor lesen) Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 21 / 48 Augsten (Univ. Salzburg) Speicherzugriff DB2 – Physische Datenorganisation Wintersemester 2016/17 22 / 48 Speicherzugriff Speicherhierarchie Platten Zugriff Optimieren o Analogie Register (< 1 ns) Kopf (1 Min) Caches (L1, L2, L3) (> 1 ns) Raum (10 Min) Hauptspeicher (≈ 100 ns) Stadt (1 Std) Hintergrundspeicher (Platte) (≈ 10 ms = 10.000.000 ns) Pluto (2 Jahre) Archivspeicher (Bänder, DVDs) (> 1 s) MMMMMMMMMMMMMMMMMMMMMMMMMM M Andromeda (2000 Jahre) Zugriffslücke 10E5 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 Wichtiges Ziel von DBMSs: Transfer von Daten zwischen Platten und Hauptspeicher möglichst effizient gestalten. optimieren/minimieren der Anzahl der Zugriffe minimieren der Anzahl der Blöcke so viel Blöcke als möglich im Hauptspeicher halten (→ Puffer Manager) Techniken zur Optimierung des Block Speicher Zugriffs: 1. Disk Arm Scheduling 2. Geeignete Dateistrukturen 3. Schreib-Puffer und Log Disk 23 / 48 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 24 / 48 Speicherzugriff Speicherzugriff Block Speicher Zugriff/3 Block Speicher Zugriff/4 Disk Arm Scheduling: Zugriffe so ordnen, dass Bewegung des Arms minimiert wird. Elevator Algorithm (Aufzug-Algorithmus): Disk Controller ordnet die Anfragen nach Spur (von innen nach außen oder umgekehrt) Bewege Arm in eine Richtung und erledige alle Zugriffe unterwegs bis keine Zugriffe mehr in diese Richtung vorhanden sind Richtung umkehren und die letzten beiden Schritte wiederholen Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 25 / 48 Datei Organization: Daten so in Blöcken speichern, wie sie später zugegriffen werden. z.B. verwandte Informationen auf benachbarten Blöcken speichern Fragmentierung: Blöcke einer Datei sind nicht hintereinander auf der Platte abgespeichert Gründe für Fragmentierung sind z.B. Daten werden eingefügt oder gelöscht die freien Blöcke auf der Platte sind verstreut, d.h., auch neue Dateien sind schon zerstückelt sequentieller Zugriff auf fragmentierte Dateien erfordert erhöhte Bewegung des Zugriffsarm manche Systeme erlauben das Defragmentieren des Dateisystems Augsten (Univ. Salzburg) Speicherzugriff DB2 – Physische Datenorganisation Wintersemester 2016/17 26 / 48 Speicherzugriff Block Speicher Zugriff/5 Puffer Manager/1 Schreibzugriffe können asynchron erfolgen um Throughput (Zugriffe/Sekunde) zu erhöhen Persistente Puffer: Block wird zunächst auf persistenten RAM (RAM mit Batterie-Backup oder Flash Speicher) geschrieben; der Controller schreibt auf die Platte, wenn diese gerade nicht beschäftigt ist oder der Block zu lange im Puffer war. auch bei Stromausfall sind Daten sicher Schreibzugriffe können geordnet werden um Bewegung des Zugriffsarms zu minimieren Datenbank Operationen, die auf sicheres Schreiben warten müssen, können fortgesetzt werden Puffer: Hauptspeicher-Bereich für Kopien von Platten-Blöcken Puffer Manager: Subsystem zur Verwaltung des Puffers Anzahl der Platten-Zugriffe soll minimiert werden ähnlich der virtuellen Speicherverwaltung in Betriebssystemen Log Disk: Eine Platte, auf die der Log aller Schreibzugriffe sequentiell geschrieben wird wird gleich verwendet wie persistenter RAM Log schreiben ist sehr schnell, da kaum Spurwechsel erforderlich erfordert keine spezielle Hardware Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 27 / 48 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 28 / 48 Speicherzugriff Speicherzugriff Puffer Manager/2 Ersetzstrategien für Pufferseiten/1 LRU Strategie (least recently used): Ersetzte Block der am längsten nicht benutzt wurde Programm fragt Puffer Manager an, wenn es einen Block von der Platte braucht. Puffer Manager Algorithmus: Idee: Zugriffsmuster der Vergangenheit benutzten um zukünfiges Verhalten vorherzusagen erfolgreich in Betriebssystemen eingesetzt 1. Programm fordert Plattenblock an 2. Falls Block nicht im Puffer ist: Der Puffer Manager reserivert Speicher im Puffer (wobei nötigenfalls andere Blöcke aus dem Puffer geworfen werden) Ein rausgeworfener Block wird nur auf die Platte geschrieben, falls er seit dem letzten Schreiben auf die Platte geändert wurde. Der Puffer Manager liest den Block von der Platte in den Puffer. 3. Der Puffer Manager gibt dem anfordernden Programm die Hauptspeicheradresse des Blocks im Puffer zurück. Es gibt verschiedene Strategien zum Ersetzen von Blöcken im Puffer. Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 29 / 48 MRU Strategie: (most recently used): Ersetze zuletzt benutzten Block als erstes. LRU kann schlecht für bestimmte Zugriffsmuster in Datenbanken sein, z.B. wiederholtes Scannen von Daten Anfragen in DBMSs habe wohldefinierte Zugriffsmuster (z.B. sequentielles Lesen) und das DBMS kann die Information aus den Bentuzeranfragen verwenden, um zukünfig benötigte Blöcke vorherzusagen Augsten (Univ. Salzburg) Speicherzugriff 30 / 48 Integrierte Übung 1.2 Beispiel: Berechne Join mit Nested Loops für jedes Tupel tr von R: für jedes Tupel ts von S: wenn ts und tr das Join-Prädikate erfüllen, dann ... Zwischen R (2 Blöcke) und S (3 Blöcke) soll einen Nested Loop Join ausgeführt werden. Jeder Block enthält nur 1 Tupel. Der Puffer fasst 3 Blöcke. Betrachte den Puffer während des Joins und zähle die Anzahl der geladenen Blöcke für folgende Puffer-Strategien: Verschiedene Zugriffsmuster für R und S ein R-Block wird nicht mehr benötigt, sobald das letzte Tuple des Blocks bearbeitet wurde; er sollte also sofort entfernt werden, auch wenn er gerade erst benutzt worden ist ein S-Block wird nochmal benötigt, wenn alle anderen S-Blöcke abgearbeitet sind DB2 – Physische Datenorganisation Wintersemester 2016/17 Speicherzugriff Ersetzstrategien für Pufferseiten/2 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 LRU MRU Welche Strategies eignet sich besser? 31 / 48 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 32 / 48 Speicherzugriff Speicherzugriff Ersetzstrategien für Pufferseiten/3 Ersetzstrategien für Pufferseiten/4 Informationen für Ersatzstrategien in DBMSs: Pinned block: Darf nicht aus dem Puffer entfernt werden. z.B. der R-Block, bevor alle Tupel bearbeitet sind Toss Immediate Strategy: Block wird sofort rausgeworfen, wenn das letzte Tupel bearbeitet wurde z.B. der R Block soblad das letzte Tupel bearbeitet wurde Gemischte Strategie mit Tipps vom Anfrageoptimierer ist am erfolgreichsten. MRU + Pinned Block ist die beste Strategie für den Nested Loop Join Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 33 / 48 Zugriffspfade haben wohldefinierte Zugriffsmuster (z.B. sequentielles Lesen) Information im Anfrageplan um zukünftige Blockanfragen vorherzusagen Statistik über die Wahrscheinlichkeit, dass eine Anfrage für eine bestimmte Relation kommt z.B. das Datenbankverzeichnis (speichert Schema) wird oft zugegriffen Heuristic: Verzeichnis im Hauptspeicher halten Augsten (Univ. Salzburg) Datei Organisation DB2 – Physische Datenorganisation Wintersemester 2016/17 34 / 48 Datei Organisation Inhalt Datei Organisation Datei: (file) aus logischer Sicht eine Reihe von Datensätzen 1 Einführung 2 Speichermedien 3 Speicherzugriff 4 Datei Organisation ein Datensatz (record) ist eine Reihe von Datenfeldern mehrere Datensätze in einem Platten-Block Kopfteil (header): Informationen über Datei (z.B. interne Organisation) Abbildung von Datenbank in Dateien: eine Relation wird in eine Datei gespeichert ein Tupel entspricht einem Datensatz in der Datei Cooked vs. raw files: cooked: DBMS verwendet Dateisystem des Betriebssystems (einfacher, code reuse) raw: DBMS verwaltet Plattenbereich selbst (unabhängig von Betriebssystem, bessere Performance, z.B. Oracle) Fixe vs. variable Größe von Datensätzen: fix: einfach, unflexibel, Speicher-ineffizient variabel: komplizierter, flexibel, Speicher-effizient Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 35 / 48 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 36 / 48 Datei Organisation Datei Organisation Fixe Datensatzlänge/1 Fixe Datensatzlänge/2 Speicheradresse: i-ter Datensatz wird ab Byte m ∗ (i − 1) gespeichert, wobei m die Größe des Datensatzes ist Datensätze an der Blockgrenze: überlappend: Datensätze werden an Blockgrenze geteilt (zwei Blockzugriffe für geteilten Datensatz erforderlich) nicht-überlappend: Datensätze dürfen Blockgrenze nicht überschreiten (freier Platz am Ende des Blocks bleibt ungenutzt) mehrere Möglichkeiten zum Löschen des i-ten Datensatzes: (a) verschiebe Datensätze i + 1, ..., n nach i, ..., n − 1 (b) verschiebe letzten Datensatz im Block nach i (c) nicht verschieben, sondern “Free List” verwalten Augsten (Univ. Salzburg) record record record record record record record record record 0 1 2 3 4 5 6 7 8 A-102 A-305 A-215 A-101 A-222 A-201 A-217 A-110 A-218 DB2 – Physische Datenorganisation Perryridge Round Hill Mianus Downtown Redwood Perryridge Brighton Downtown Perryridge speichere Adresse des ersten freien Datensatzes im Kopfteil der Datei freier Datensatz speichert Pointer zum nächsten freien Datensatz → der Speicherbereich des gelöschten Datensatzes wird für Free List Pointer verwendet Beispiel: Free List nach löschen der Datensätze 4, 6, 1 (in dieser Reihenfolge) 400 350 700 500 700 900 750 600 700 Wintersemester 2016/17 Free List: 37 / 48 Augsten (Univ. Salzburg) Datei Organisation header record 0 record 1 record 2 record 3 record 4 record 5 record 6 record 7 record 8 DB2 – Physische Datenorganisation A-102 Perryridge 400 A-215 A-101 Mianus Downtown 700 500 A-201 Perryridge 900 A-110 A-218 Downtown Perryridge 600 700 Wintersemester 2016/17 38 / 48 Datei Organisation Variable Datensatzlänge/1 Slotted Pages/1 Slotted Page: Warum Datensätze mit variabler Größe? Kopfteil (header) freier Speicher Datensätze Datenfelder variabler Länge (z.B., VARCHAR) verschiedene Typen von Datensätzen in einer Datei Platz sparen: z.B. in Tabellen mit vielen null-Werten (häufig in der Praxis) Kopfteil speichert: Datensätze verschieben kann erforderlich werden: Datensätze können größer werden und im vorgesehenen Speicherbereich nicht mehr Platz haben neue Datensätze werden zwischen existierenden Datensätzen eingefügt Datensätze werden gelöscht (leere Zwischenräume verhindern) Pointer soll sich nicht ändern: Anzahl der Datensätze Ende des freien Speichers Größe und Pointer auf Startposition jedes Datensatzes Datensätze Block Header Größe Position #Einträge Freier Speicher alle existierenden Referenzen zum Datensatz müssten geändert werden das wäre kompliziert und teuer Lösung: Slotted Pages (TID-Konzept) Ende des freien Speichers Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 39 / 48 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 40 / 48 Datei Organisation Datei Organisation Slotted Pages/2 Slotted Pages/3 TID: Tuple Identifier besteht aus Verschieben innerhalb des Blocks: Nummer des Blocks (page ID) Offset des Pointers zum Datensatz Pointer im Kopfteil wird geändert TID ändert sich nicht Datensätze werden nicht direkt adressiert, sondern über TID TID TID 4711 4711 2 2 1 2 3 1 2 3 5001 Grundlagen 5001 Grundlagen 4052 Logik 5041 Ethik 5041 Ethik 4052 Mathem. Logik Page 4711 Page 4711 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 41 / 48 Augsten (Univ. Salzburg) Datei Organisation DB2 – Physische Datenorganisation Wintersemester 2016/17 42 / 48 Datei Organisation Slotted Pages/4 Organisation von Datensätzen in Dateien/1 Verschieben zwischen Blöcken: Datensatz wird ersetzt durch Referenz auf neuen Block, welche nur intern genutzt wird Zugriff auf Datensatz erfordert das Lesen von zwei Blöcken TID des Datensatzes ändert sich nicht weitere Verschiebungen modifizieren stets Referenz im ursprünglichen Block (d.h. es entsteht keine verkettete Liste) Heap Datei: ein Datensatz kann irgendwo gespeichert werden, wo Platz frei ist, oder er wird am Ende angehängt Sequentielle Datei: Datensätze werden nach einem bestimmten Datenfeld sortiert abgespeichert TID 4711 Verschiedene Ansätze, um Datensätze in Dateien logisch anzuordnen (primary file organisation): 2 1 2 3 Hash Datei: der Hash-Wert für ein Datenfeld wird berechnet; der Hash-Wert bestimmt, in welchem Block der Datei der Datensatz gespeichert wird 1 2 3 5001 Grundlagen 4052 Mathem. Logik Normalerweise wird jede Tabelle in eigener Datei gespeichert. 5041 Ethik 4812 Page 4711 Augsten (Univ. Salzburg) 3 Page 4812 DB2 – Physische Datenorganisation Wintersemester 2016/17 43 / 48 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 44 / 48 Datei Organisation Datei Organisation Organisation von Datensätzen in Dateien/2 Organisation von Datensätzen in Dateien/3 Sequentielle Datei: Datensätze nach Suchschlüssel (ein oder mehrere Datenfelder) geordnet Datensätze sind mit Pointern verkettet gut für Anwendungen, die sequentiellen Zugriff auf gesamte Datei brauchen Datensätze sollten – soweit möglich – nicht nur logisch, sondern auch physisch sortiert abgelegt werden Beispiel: Konto(KontoNr, FilialName, Kontostand) record record record record record record record record record Augsten (Univ. Salzburg) 0 1 2 3 4 5 6 7 8 A-217 A-101 A-110 A-215 A-102 A-201 A-218 A-222 A-305 Brighton Downtown Downtown Mianus Perryridge Perryridge Perryridge Redwood Round Hill 750 500 600 700 400 900 700 700 350 DB2 – Physische Datenorganisation Physische Ordnung erhalten ist schwierig. Löschen: Datensätze sind mit Pointern verkettet (verkettete Liste) gelöschter Datensatz wird aus der verketteten Liste genommen → leere Zwischenräume reduzieren Datendichte Einfügen: finde Block, in den neuer Datensatz eingefügt werden müsste falls freier Speicher im Block: einfügen falls zu wenig freier Speicher: Datensatz in Überlauf-Block (overflow block) speichern Wintersemester 2016/17 45 / 48 A-217 A-101 A-110 A-215 A-102 A-201 A-218 A-222 A-305 Brighton Downtown Downtown Mianus Perryridge Perryridge Perryridge Redwood Round Hill 750 500 600 700 400 900 700 700 350 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 46 / 48 Datei Organisation Datenbankverzeichnis/1 Datenbankverzeichnis/2 Datenbankverzeichnis (Katalog): speichert Metadaten Physische Speicherung des Datenbankverzeichnisses: Informationen über Relationen spezielle Datenstrukturen für effizienten Zugriff optimiert Relationen welche bestehende Strategien für effizienten Zugriff nutzten Name der Relation Name und Typen der Attribute jeder Relation Name und Definition von Views Integritätsbedingungen (z.B. Schlüssel und Fremdschlüssel) Beispiel-Relationen in einem Verzeichnis (vereinfacht): RELATION-METADATA(relation-name, number-of-attributes, storage-organization, location) ATTRIBUTE-METADATA(attribute-name, relation-name, domain-type, position, length) USER-METADATA(user-name, encrypted-password, group) INDEX-METADATA(index-name, relation-name, index-type,index-attributes) VIEW-METADATA(view-name, definition) Benutzerverwaltung Statistische Beschreibung der Instanz Anzahl der Tupel in der Relation häufigste Werte Physische Dateiorganisation wie ist eine Relation gespeichert (sequentiell/Hash/...) physicher Speicherort (z.B. Festplatte) Dateiname oder Adresse des ersten Blocks auf der Festplatte PostgreSQL (ver 9.3): mehr als 70 Relationen: http://www.postgresql.org/docs/9.3/static/catalogs-overview.html Information über Indexstrukturen DB2 – Physische Datenorganisation 0 1 2 3 4 5 6 7 8 → Tabelle sortiert lesen erfordert A-888 North Town 800 nicht-sequentiellen Blockzugriff Datei muss von Zeit zu Zeit reorganisiert werden, um physische Ordnung wieder herzustellen Datei Organisation Augsten (Univ. Salzburg) record record record record record record record record record Wintersemester 2016/17 47 / 48 Augsten (Univ. Salzburg) DB2 – Physische Datenorganisation Wintersemester 2016/17 48 / 48