Übung zur Vorlesung Datenbanktechnologie

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Ext2. Geschichte Minixerhebliche Beschränkungen extfs ext2erstmals aufhebung aller drängenden Beschränkungen ext3erweiterung um Journaling.
Der R-Baum Richard Göbel.
Imperative Programmierung
Partitionierungstechniken in Datenbanksystemen
Proseminar: Algorithmen und Datenstrukturen für Datenbanksysteme
Hash-Tabellen und -Funktionen Hash-Tabellen in Java
4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme.
Eine dynamische Menge, die diese Operationen unterstützt,
Vorlesung Programmieren II
Prof. Dr. T. Kudraß1 Hash-Verfahren. Prof. Dr. T. Kudraß2 Einführung Drei Alternativen, wie Dateneinträge k* im Index aussehen können: 1. Datensatz mit.
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
FH-Hof Der B-Baum Richard Göbel. FH-Hof Wahl des Verzweigungsgrad Verzweigungsgrad kann größer als 2 sein v Nachfolger für einen Knoten v-1 Werte in einem.
Der B-Baum Richard Göbel.
Dr. Brigitte Mathiak Kapitel 9 Physische Datenorganisation (ganz kurz)
<d,a,s, ,i,s,t, ,e,i,n,e, ,L,i,s,t,e>
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
Löschen in B-Bäumen Die B-Baum-Eigenschaft muss wieder hergestellt werden, wenn die Anzahl der Elemente in einem Knoten kleiner als k wird. Durch Ausgleich.
Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur
Indexed Sequential Access Method
der Universität Oldenburg
Lehrstuhl Informatik III: Datenbanksysteme Achim Landschoof 28. April 2009 Strukturierte P2P Systeme 1 Achim Landschoof Betreuerin: Dipl.-Inf. Jessica.
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Sortierverfahren Richard Göbel.
Der R-Baum Richard Göbel.
Effizienz: Indexstrukturen
Algorithmentheorie 04 –Hashing
Halbzeit: Kurze Wiederholung
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (15 Hashverfahren: Verkettung der Überläufer) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
1 Linux Paging, Caching und Swapping. 1 Vortragsstruktur Paging – Das Virtuelle Speichermodell –Die Page Table im Detail –Page Allocation und Page Deallocation.
Prof. Dr. T. Kudraß1 Speicherverwaltung: Platten und Dateien.
Vorlesung 4: Memory Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin Wintersemester.
Access 2000 Datenbanken.
Kapitel 4: Physikalische Datenorganisation
Beispielrelation Buchbestellungen H = Menge der bedeutenden Ziele = {a, d} Schwelle T = 4 Stichprobe S = {a, b, a, a, a, a} mit s = |S| = 6 N = Anzahl.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Seitenorganisation Verwandte Themen: - Reorganisation - Fragmentierung Datensatzadresse.
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Speicherverwaltung durch Swapping
2. Die rekursive Datenstruktur Baum 2
Java Garbage Collection Angelika Kusel, Überblick Was ist Garbage Collection? Vor- und Nachteile von GC GC-Algorithmen/Verfahren Java Garbage.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
1 J4 Hash-Join R und S werden mittels der gleichen Hashfunktion h – angewendet auf R.A und S.B – auf (dieselben) Hash- Buckets abgebildet Hash-Buckets.
Übung Datenbanksysteme II Index- strukturen
VP1 VP2 VP3 PP1.1 PP2.1 PP2.2 PP1.2 PP2.3 PP1.3 MMU VP1 VP2 VP3 PP1 PP4 PP6 MMU-Konfiguration für Prozess P1 Virtual Memory von P1 Physical Memory.
Überblick über die Datenbankproblematik
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #10 Physische Datenorganisation.
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #9 Physische Datenorganisation.
Vorlesung Datenbanksysteme vom Physische Datenorganisation
Vorlesung #10 Physische Datenorganisation
Algorithmen und Datenstrukturen Übungsmodul 11
ADAT©2004 Dipl. - Ing. Walter SabinSeite: 19 Version 1.0a Programme - Zusatzsoftware Oracle: –Forms –Reports –Designer –Jdeveloper –APEX (Application Express)
Studiengang Informatik FHDW
Vorlesung #2 Physische Datenorganisation
Vorlesung Datenbanksysteme vom Physische Datenorganisation
6.2 Repräsentation auf Platten
Record Manager Andreas Bräu, Martin Salzbrenner. Record Manager - Übersicht ● Datenstrukturen – Freispeicherverzeichnis – Datenseiten ● Record Manager.
Institut für Informationssysteme
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren.
Prof. Dr. T. Kudraß1 Speicherverwaltung: Flash-Laufwerke.
Programmiersprachen II Fortsetzung Datenstrukturen Hashing Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Datenbanken Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Karsten Martiny (Übungen)
DOAG SID Data Warehouse
Vorlesung #10 Physische Datenorganisation
Vorlesung #8 Physische Datenorganisation
Indexierung Oracle: indexes Indexierung.
 Präsentation transkript:

Übung zur Vorlesung Datenbanktechnologie 11.01.2006

Speichertechnologie „Access Gap“ zwischen Hauptspeicher und Sekundärspeicher (wird sich in Zukunft nicht verändern)  Anzahl der Plattenzugriffe das bestimmende Kostenmaß Plattenparameter: Zugriffszeit = seek + rotation + transfer Übung: kaps (kilobyte accesses per second) Kapazität Wichtiger Fakt: Faktor bei Erhöhung Plattenkapazität wesentlich größer als der Faktor bei Verringerung der Zugriffszeit Lesen und Schreiben von großen Datenmengen wird zum Problem Verringerung des Access Gap Problems: RAID Datenbankpuffer Neue Speichertechnologien (Flash, MRAM, MEMS, Molecular Storage)

Speicherverwaltung Abbildung von Relationen auf Sekundärspeicher: Eine Betriebssystemdatei für jede Relation, jeden Index Siehe ToyDB, Postgres Eine Relation in mehreren Betriebssystemdateien Mehrere Relationen in einer Betriebssystemdatei z.B. bei Oracle DBS steuert selbst Magnetplatte an und arbeitet mit den Blöcken in ihrer Ursprungsform (raw device) Nachteile bei Speicherung in Betriebssystemdateien? 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

Speicherverwaltung Physical addresses determined by block table … Abbildung von Seiten auf (logische) Datenbankdateien: Direct Mapping Siehe ToyDB, Nachteile? Dynamic Block Assignment: increase of DB space, assign free blocks. Virtual address space: 0 1 .. 2N Physical addresses determined by block table Nachteile direct mapping: maximal number of pages known at creation time (!) - fragmentation since files may be created dynamically - increase of record size may be painful …

Pufferverwaltung Ziel: Minimierung der Plattenzugriffe Nutze „Lokalität“ der Datenzugriffe Puffer: ausgezeichneter Bereich des Hauptspeichers in Pufferrahmen gegliedert, jeder Pufferrahmen kann Seite der Platte aufnehmen Aufgaben: Pufferverwaltung muß angeforderte Seiten im Puffer suchen (effiziente Suchverfahren) parallele Datenbanktransaktionen: geschickte Speicherzuteilung im Puffer, Fix/Unfix Puffer gefüllt: adäquate Seitenersetzungsstrategien

Pufferverwaltung Alter der Seite im Puffer: Alter einer Seite nach Einlagerung (die globale Strategie (G)) Alter einer Seite nach dem letztem Referenzzeitpunkt (die Strategie des jüngsten Verhaltens (J)) Alter einer Seite wird nicht berücksichtigt (–) Anzahl der Referenzen auf Seite im Puffer: Anzahl aller Referenzen auf eine Seite (die globale Strategie (G)) Anzahl nur der letzten Referenzen auf eine Seite (die Strategie des jüngsten Verhaltens (J)) Anzahl der Referenzen wird nicht berücksichtigt (–)

Pufferverwaltung Weitere Stichpunkte: Lazy Write Funktionale Partitionierung des Puffers

Recordstrukturen Record-File: Logische Datei von Records, die die Tupel einer Relation repräsentieren Wie werden Records auf Seiten abgebildet?  Seitenorganisation TID-Konzept DB-Key Freispeicherverwaltung Adressierung von Feldern innerhalb eines Records?  Recordstruktur Feste Längen Variable Längen BLOBs

Recordstrukturen RID = Seitennummer + Offset innerhalb der Seite Probleme?  RID nicht stabil bei Verschieben innerhalb der Seite (Indexe betroffen) TID = Seitennummer + Offset in Rowdirectory Ermöglicht einfaches Verschieben innerhalb der Seite TID ist stabil in Bezug auf Verschieben innerhalb einer Seite Verschieben auf andere Seite? Proxy-Technik (maximal 2 Seitenzugriffe) 1. record 2 3 4

Recordstrukturen DB-Key-Konzept Jeder Record erhält eindeutige Sequenznummer beim Einfügen Sequenznummer eindeutig über die Recordlebenszeit Abbildung auf physikalische Adresse? Nutze spezielle Zuordnungstabelle, die DB-Keys auf Seitennummer + Row Directory Offset abbildet Vorteil: Proxies nicht nötig, keine Reorganisation während der DB-Lebensdauer Nachteil: Zuordnungstabelle kann sehr groß werden Zusätzliche Kosten, wenn Zuordnungstabelle nicht in Hauptspeicher passt

Recordstrukturen Freispeicherverwaltung auf Datenbankdatei-Ebene Übung: Free Space Tabelle Informationen über den Freispeicher jeder Seite Tabelle wird zusammen mit Datenseiten in der Datei gespeichert Eine „Tabellenseite“ mit N Einträgen wird gefolgt von N Datenseiten Übung: Verkettete Liste mit freien Speicherseiten Zeiger auf die nächste freie Seite Freie Seiten untereinander verkettet

Recordstrukturen RID byte [] data Adressierung von Felder: Wie wird der Bytestring innerhalb eines Records interpretiert? Feste Längen: Einfach, Information kann aus Schema geholt werden Variable Längen: Speicherung der Längen nötig BLOBs: Zeiger auf BS-Datei, Spannen über mehrere Records, Dictionary für Positionierung (siehe auch TOASTED Files in Postgres) FileID RecL FixL val val L val L val Header: - File identifier - Record length - length of fixed part Fixed length part: - fixed length attributes - Pointers to variable length fields Variable length part

Indexierung Dateiorganisation vs. Zugriffspfade Dateiorganisation Heap: Keine Ordnung, Records werden in nächste Seite mit freiem Platz eingefügt Sequential: sortierte Speicherung von Records (meist über Primärschlüssel) Hash: gestreute Speicherung der Records Mehrdimensional: Siehe R-Baum Zugriffspade: Nur zusätzliche Struktur, die effizienten Zugriff auf Mengen von Records erlaubt Auch über nicht Primary Key Attribute (Sekundärindex)

Indexierung Sequentielle Dateiorganisation: Indexsequentielle Datei mit ISAM Probleme? Vergrößerung der Datei bedingt Überlaufseiten auf einer Indexebene Einführung neuer Indexebene nötig, wenn zu viele Überlaufseiten allgemein: Keine dynamische Anpassung an wachsende und schrumpfende Dateien

Indexierung B-Baum Wichtigste Indexstruktur in Datenbanken Dynamisch wachsende und schrumpfende Baumstruktur Balanciert: Alle Blattknoten auf gleicher Ebene Knoten sind Datenbankseiten Absteigen im Baum bedeutet Sekundärspeicherzugriff Höhe des Baums möglichst gering halten Möglichst hoher Fan-Out in inneren Knoten (Schlüsselkompression, größere Blöcke) TIDs in Blättern vs. Records in Blättern (Key Sequenced File) Wann ist welche Variante effizienter?

Indexierung Hashing: Basisprinzip: h: {k| k ist Primärschlüssel}  {a| a ist physikalische Adresse} Vorteile: Sehr effizienter Zugriff Keine zusätzliche Datenstruktur Nachteile: Kein sequentielle Zugriff Statisch? Vergrößerung der Datendatei?  Hashfunktion muss angepasst werden Kollisionsauflösung: Verkettung von Seiten (Chaining mit Overflowbuckets) Folding: Abbildung beliebiger Primärschlüssel auf Integerwerte Dynamische Hashfunktionen: Extensible Hashing

Indexierung Bitmap Indexe: Prinzip: Für jeden Wert v eines Attributs wird Bitliste erstellt, die angibt ob Tupel i den Wert v hat  Länge der Bitlisten = Anzahl der Tupel Maximal benötigte Anzahl von Bits = (#Tupel)² Effizient bei Punktanfragen Einfache Auswertung von komplexer Prädikate (…WHERE P1 & P2 | P3) durch Bitoperation auf den Listen Bereichsabfragen mit „Range Coded Bitmaps“ Kompression von Bitlisten: Lauflängenkodierung Variable Bytelängen Kodierung

Multidimensionale Indexierung Warum multidimensionale Indexierung? Unterschied zu Index über mehreren Attributen? Anwendungsgebiete: GeoInformationssysteme: Nearest Neighbour query, Where-am-I query, etc. Data Cubes: Gruppierung anhand mehrerer Dimensionen R-Baum: Einträge sind d-dimensionale Hyperrechtecke Blätter alle auf gleicher Ebene m <= Füllgrad eines Knotens <= M Bei Suche evtl. Absteigen in mehrere Teilbäume notwendig Splitoperation unterscheidet sich stark zu der bei B-Bäumen

Multidimensionale Indexierung K-D-Bäume: K-dimensionaler binärer Suchbaum Alternierend auf jeder Ebene andere Dimension diskriminierend für Abstieg in linken oder rechten Teilbaum Die eigentlichen Indexeinträge stehen in den Blättern Eigentlich Hauptspeicherdatenstruktur: Abbildung auf Sekundärspeicher (Blöcke einer Festplatte) notwendig! Gruppierung innerer Knoten in Blöcke

Anfragebearbeitung Überblick: Implementierung von Basisoperatoren: Ziel/Aufgabe von Anfragebearbeitung 4 Phasen der Anfragebearbeitung Implementierung von Basisoperatoren: Rückblick: Welche Basisoperationen gibt es? Terminologie Interne Operationen: Table Scan, Index Scan, Sortieren One-Pass-Algorithmen Two-Pass-Algorithmen Anfrageoptimierung Algebraische (logische) Optimierung Kostenbasierte Optimierung

Anfragebearbeitung Überblick: Ziel/Aufgabe: Möglichst effiziente Ausführung einer SQL-Anfrage bei gegebener Datenbank und gegebenen Hardwareressourcen (Speicher, CPU, etc.) dominierende Kosten: Plattenzugriffe 4 Phasen:

Anfragebearbeitung Rückblick: Basisoperationen Terminologie Selektion σC Projektion Duplikateliminierung δ Mengenoperationen Gruppierung γ (mit Aggregatfunktionen Min/Max/Sum/Avg/Count/…) Join (Natural Join, Theta Join, Semi Join, Outer Join) Terminologie One-Pass vs. Two-Pass-Algorithmus Unäre vs. Binäre Operationen Tuple-at-a-Time vs. Full-Relation Operationen

Anfragebearbeitung Interne Operationen: Table-Scan-Schnittstelle: Alle Tupel einer Relation in beliebiger Reihenfolge genau einmal traversieren. Index-Scan-Schnittstelle: Alle Tupel mit Attributwerten zwischen min und max traversieren. Sortieren: Problem: Puffergröße M kleiner als zu sortierende Relation R (Anzahl Blöcke = B(R)) Relation kann nicht direkt im Hauptspeicher sortiert werden Externes Merge-Sort: Phase1: Lade M Blöcke von R in Speicher und sortiere Schreibe sortierte Sublisten blockweise auf Platte Wiederhole bis alle Blöcke von R gelesen und in einer Subliste sortiert Phase2: Es muss sichergestellt sein, dass Anzahl Sublisten <= M-1 sonst nicht mehr Two-Pass Lade jeweils ersten Block einer Subliste in Pufferseite und merge mit anderen Listen

Anfragebearbeitung One-Pass-Algorithmen: Two-Pass-Algorithmen: Selektion Projektion ohne Duplikateliminierung Mengenoperationen (Voraussetzung min(B(R), B(S)) <= M-1) Join (Voraussetzung min(B(R), B(S)) <= M-1) Two-Pass-Algorithmen: Duplikateliminierung (Hash-/Sort based) Mengenoperationen (Hash-/Sort based) Joins: Blockwise Nested Loop Index-Join Sort-Merge-Join Hash-Join

Anfragebearbeitung Algebraische Optimierung: Umschreiben relationaler Ausdrücke Ziel: Finde äquivalente Formulierungen einer Anfrage mit kleineren Zwischenresultaten im Operatorbaum Technik basierend auf Heuristiken: Selektion möglichst früh Projektion soweit wie möglich „nach unten“ schieben Join statt Kartesischem Produkt+Selektion … Wichtige Regeln: Join ist kommutativ und assoziativ Vereinigung, Schnitt, Kreuzprodukt sind kommutativ Selektionen sind untereinander vertauschbar Vorbeischieben von Selektionen und Projektionen unter bestimmten Bedingungen

Anfragebearbeitung Kostenbasierte Optimierung: Vorgehensweise: Gegeben: algebraisch optimierter Anfrageplan Ziel: Finde (physikalischen) Ausführungsplan mit minimalen „Kosten“ Problem: Suchraum extrem groß  unmöglich alle möglichen Pläne zu betrachten Vorgehensweise: Weise logischen Operatoren physikalische Operatoren zu (z.B. Join  Index- Join, Vereinigung  Sort-based) Weise physikalischen Operatoren Kosten zu (Kostenfunktion, Größe von Zwischenergebnissen) Finde kostenminimalen Plan durch Anwendung von Suchstrategien

Anfragebearbeitung Benötigt: Kostenfunktion Cost = costIO + c*costCPU (c := Gewichtungsfaktor) Abschätzung der Kosten basierend auf Größe der Zwischenergebnisse Größe Zwischenergebnissen  Selektivität Selektivität = Erwartete Größe des Resultats / | Eingaberelation| Selektivitätsabschätzung Annahme über die Verteilung der Attribute: Gleichverteilung, Zipfverteilung, etc. Histogramme Statistiken lernen Histogramme: Equi-width vs. Equi-depth Join Reihenfolge: Greedy, Dynamische Programmierung

Recovery Fragenkatalog: Was beschreibt ein Fehlermodell? (Welche Fehler treten auf, welche werden behandelt? Häufigkeit der Fehler. MTTF/MTTR) Welche Fehler behandelt typischerweise DBS-Fehlermodell? (Systemfehler, Transaktionsabbruch, evtl. Plattenfehler, 9-11-Fehler) Was sind Redo/Undo Operationen? Verhältnis Recovery/Puffermanagement: Steal/noSteal, Force/noForce WAL-Prinzip? Commit-Rule? WAL, Commit-Rule Zusammenhang mit Steal/noForce Policy? Was ist Groupcommit? Welche Logtypen gibt es? Wie unterscheiden sie sich? (Logisches-, Physisches, Physiologisches Log) Was sind Checkpoints? Unterschied zu Savepoints! ARIES