Datenbanktechnik

Vorlesung Datenbanktechnik, 4. Semester Studiengang Wirtschaftsinformatik

Vorlesung Datenbanktechnik, 4. Semester Studiengang Wirtschaftsinformatik


J. H.
Diese Lernkarten behandelt fortgeschrittene Konzepte der Datenbanktechnik auf Universitätsniveau. Sie konzentriert sich auf Themen wie Transaktionen, Sperrprotokolle, Indexstrukturen und Optimierung von Datenbankoperationen. Besonders hervorgehoben werden die ACID-Eigenschaften, verschiedene Join-Algorithmen und die Optimierung von Anfragen. Das Lernset richtet sich an Studierende und Fachleute, die ihr Verständnis von Datenbanktechnik vertiefen und effiziente Datenbankanwendungen entwickeln möchten.
Karten
65
Lernende
12
Sprache
Deutsch
Kategorie
Informatik
Stufe
Universität
Erstellt / Aktualisiert
24.03.2014 / 14.02.2020

Lernkarten

Was sind die Bestandteile eines Datenbanksystems?

  • Datenbank: Sammlung zusammenhängender Daten
    • einfach strukturiert, logisch zusammenhängend
    • Ausschnitt der realen Welt

 

  • Datenbankmanagementsystem: Menge von Programmen, um DB zu verwalten
    • definieren, manipulieren, abfragen
    • Strukturen und Daten
    • Wartung und Administration

Die Vorteile eines Datenbanksystems im Vergleich zur Dateiverwaltung

  • definierte API, damit unabhängige Datenverwaltung von Programmlogik
  • hohe Verfügbarkeit
  • verschiedene Benutzersichten
  • standardisierte Datenbanksprache
  • strukturierte Datenablage
  • Redundanzfrei
  • schnelle Zugriffe
  • Konsistente Daten
  • Transaktionskontrolle

Komponenten eines DBMS - der Stored Data Manager

  • regelt Datentransfer zwischen Platte und Hauptspeicher
  • mit Hilfe von Betriebssystem-Routinen

Komponenten eines DBMS - der DDL-Compiler

  • übersetzt Schema-Definitionen
  • speichert diese in den Katalog
  • arbeitet mit Hilfe des SDM

Komponenten eines DBMS - der Run-Time Database Processor

  • führt den Datenbankzugriff zur Laufzeit aus
  • mit Hilfe SDM

Komponenten eines DBMS - der Query Compiler

  • übersetzt interaktive Datenbankanfragen
  • lässt Anfragen durch RTDP ausführen

Komponenten eines DBMS - die Concurrency control / das Recovery System

  • regelt den konkurrierenden Zugriff mehrerer Benutzer
  • stellt konsistenten Zustand nach Systemfehler wieder her

Ablageformen von Datensätzen - die unsortierte Datei

  • sog. Heap Datei
  • keine bestimmte Ordnung
  • neue Sätze ungeordnet an das Ende angefügt
  • Adresse des letzten Datei-Block wird im Header geführt
  • geeignet für
    • feste und variable Satzlängen
    • spanned oder unsapnned

Ablageformen von Datensätzen - die sortierte Datei

  • sog. sequentielle Datei
  • Datensätze nach einem Sortierschlüssel geordnet
  • geordnetes Einfügen der Sätze nach Sortierschlüsselfeld
  • immer in Verbindung mit Index (=> index-sequenteille Datei)

Ablageformen von Datensätzen - die Hash-Datei

  • Datensätze nach Hash-Funktion über einen sog. Hash-Schlüssel geordnet

Wie erfolgt der Datentransfer zwischen Hauptspeicher und Platte?

  • blockweise
  • die Positionierung der Scheib-/Leseklöpfe ist dabei am zeitaufwändigsten

Berechnungsformel: Anzahl Sätze pro Block

bfr = B / R

 

bfr: Blockungsfaktor

B: Blockgröße

R: (durchschnittliche) Satzlänge

Berechnungsformel: Anzahl Blöcke

b = r / bfr

 

b: Anzahl Datenblöcke

r: Anzahl Datensätze

bfr: Blockungsfaktor

Welche Inhalte stehen in den Dateikopf-Infos?

  • Adressen der Dateiblöcke
  • Formatbeschreibung, Feldängen etc. eines Datensatzes

Die lineare Suche

  • kann bei jeder Datei angewendet werden
     
  • bei genau 1 Treffer: AnzBZ = b/2
  • sonst: AnzBZ = b

 

AnzBZ: Anzahl Blockzugriffe

b: Anzahl Blöcke

Die binäre Suche

  • nur bei Sortierfeld

AnzBZ = LOG 2 (b)

 

AnzBZ: Anzahl Blockzugriffe

b: Anzahl Blöcke

Das statische Hashing

  • Index in Form eines Array (=Hash-Tabelle) mit Bucket-Adressen
  • Hash-Tabelle sehr klein, im Datei-Header geführt
  • Reserviert festen Speicherbereich

Die Kollisionsauflösung beim statischen Hashing

  • mittels verketteter Liste
  • jeder Bucket hat Satz-Zeiger (= Bucket-Adresse + relative Satz-Position) auf Overflow-Bucket
  • Sätze im Overflow-Bucket haben jeder Satz-Zeiger

Nachteile des Statischen Hashing

  • Speicherverschwendung bei viel weniger Datensätzen als verfügbare Bucket-Kapa
  • System langsam durch lange Overflow-Listen bei mehr Datensätzen als Bucket-Kapa

Das dynamische Hashing

  • erweiterbares Hashing mittels dynamischem Hash-Verzeichnis
  • je nach Bedarf wird Anzahl Buckets erhöht bzw. verringert
  • daher keine globale Reorgs erforderlich, max. lokale Bucket-Reorg
  • Hash-Funktionswerte werden binär betrachtet (bspw.: nur letzten drei Bits von h(k))

Vor- und Nachteile von Hash-Datenbanken

Vorteile

  • schnellstes Verfahren für Zugriff auf einen beliebigen Datensatz
  • gut bei unique-Attribut

 

Nachteile

  • schlecht bei Hash-Attribut mit gleichen Ausprägungen => Kollisionen
  • für Range-Suche nicht braucbar
  • Suche über Nicht-Hash-Feld => lineare Suche

Die Primärorganisation einer Datei

  • Heap (unsortiert)
  • sequentiell (sortiert)
  • Hash (statisch, dynamisch)

Der Primärindex

  • zusätzliche, schnelle Zugriffsmöglichkeit unabhängig von Primärorganisation einer Datei
  • Index über eindeutiges Attribut, nach der Datei physisch (primär) geordnet ist
  • pro Datenblock ein Eintrag in Index-Datei
    • erster Satz im Block: Ankersatz
    • nicht-dichter Index, weil nicht für jeden DS ein Indexeintrag
    • Indexeintrag: Wert des PS für ersten Datensatz

Der Clusterindex

  • zusätzliche, schnelle Zugriffsmöglichkeit unabhängig von Primärorganisation einer Datei
  • Primärindex, aber Ordnungsfeld nicht eindeutig
  • DS nach Nichtschlüsselfeld geordnet
  • pro unterschiedlichen Wert ein Eintrag in Index-Datei
    • Adresse des Datenblocks der den 1. mit Wert enthägt
    • nicht-dichter Index

Der Sekundärindex

  • zusätzliche, schnelle Zugriffsmöglichkeit unabhängig von Primärorganisation einer Datei
  • Index über jedes nicht ordnende Attribute einer Datei
  • zusätzlich zu Primärindex können mehrere Sekundärindexe existieren
  • unabhängig von Primärordnung der Datei
  • zwei Arten
    • Index über eindeutiges Attribut (Sekundärschlüssel)
    • Index über nicht eindeutiges Attribut

Der Sekundärschlüssel über ein eindeutiges Attribut

  • pro Datensatz ein Eintrag in Index-Datei
    • dichter Index
    • Datenzeiger auf Blockadresse!
  • über Schlüsselkandidat

Mehrstufiger Index

  • Index über Index über Index...
  • bis auf n-ter Ebene nur noch 1 Indexblock notwendig
  • zur Optimierung der Anzahl der Blockzugriffe

Die Höhe eines mehrstufigen Index

LOG fan-out (b)

 

fan-out: Blockfaktor der Index-Datei

b: Anzahl Indexeinträge (= Anzahl Datenblöcke) auf 1. Ebene

Der dynamische mehrstufige Index als B-Baum

  • Indexblöcke haben Freiraum
  • Ordnung p (= fan-out = bfr)
    • gibt an, wieviele Teilbäume verpointert werden können.
    • p-1: Anzahl Werte in einem Knoten
  • variable Anzahl von Schlüsseln (aufsteigend sortiert)
  • Wurzel hat o, 2 oder mehr Knoten-zeiger
  • alle Blätter auf derselben Höhe

Überlauf der Wurzel bei einem B-Baum

  • Wurzel splitten und neue Wurzel schaffen
  • Mittlerer Indexwert in neue Wurzel
  • linker Rest in linkes Child
  • rechter Rest in rechtes Child

Überlauf eines Blattes bei einem B-Baum

  • Knoten auf gleicher Ebene splitten
  • mittlerer Indexwert in Parent-Knoten mit zwei Zeigern zu gesplitteten Knoten
  • Achtung: ggf. Split Parent-Knoten notwendig!

Unterlauf eines Knoten in einem B-Baum

  • Knoten weniger Werte als p/2
  • Knoten mit Nachbarknoten zusammenlegen
  • kann ggf. zur Unterlauf Parent-Knoten führen

Der dynamische mehrstufige Index als B+ -Baum

  • Indexblöcke haben Freiraum
  • Ordnung p (= fan-out = bfr)
    • gibt an, wieviele Teilbäume verpointert werden können.
    • p-1: Anzahl Werte in einem Knoten
  • Datenzeiger nur in Blätter => mehr Platz für Suchwerte => weniger Ebenen => schneller
  • Suchwert eines mittleren Knotens gibt es noch einmal in einem Blatt
  • Alle Blätter sind miteinander verlinkt

Überlauf eines Blattes in einem B+ - Baum

  • teile Blatt
    • behalte die ersten j Einträge im Originalblatt
    • setze Rest in das neue Blatt
  • j-te Wert in Elternknoten replizieren
    • Zeiger auf neues Blatt

j = (Pblatt + 1) / 2

Überlauf eines Elternknoten in einem B+ - Baum

  • teile Knoten und behalten die ersten i - 1 Einträge im Originalknoten
  • der i-te Wert wandert in Elternknoten (kein Replizieren!)
  • setze Rest in neu geschaffenen Knoten

i = (p + 1) / 2)

Unterlauf eines Blattes in einem B+ - Baum

  • vereinige Blattinhalt mit linkem oder rechtem Geschiwster und teile gleichmäßig auf (Erhaltungstrieb!)
  • falls zu wenig Werte: verschmelze Blatt mit Geschwister
  • Elternknoten anpassen
    • neue Indexwerte und Zeiger anpassen

Unterlauf eines Elternknotens in einem B+ - Baum

  • vereinige inneren Knoten mit seinem Geschwister
    • Teile Inhalt gleichmäßig auf
    • oder bei zu wenig Werten lassen

Wie heißen B+ - Bäume, deren Knoten zu mindesten 2/3 gefüllt sein müssen?

B* - Bäume

Die zwei Stufen zur Optimierung einer SELECT-Anfrage

  1. Optimierung jeder einzelnen Operation über systematische Kostenschätzungen
  2. Optimierung der Reihenfolger der einzelnen Operationen über heuristische Regeln

Berechnungsformel: Selektionskardinalität

s = sl * r = r / d

 

s: Selektionskardinalität

sl: Selektivität

r: Anzahl Datensätze

d: Anzahl Werte

Lernen