DBI-2025-05-20

Hill 9: Stored Routines

Programm wird in der Datenbank abgelegt, Prozeduraler Code mit SQL
Eingabe mit Parametern und Rückgabe

  • Procedure Aufruf vom Anwendungsprogramm statt SQL-Anweisung
  • Function (User-defined): Verwendung in Ausdrücken innerhalb SQL

Vorteile:

  • vorkompiliert, lokaler Zugriff
  • verringerter Netzwerkverkehr

TSQL

Variablen, Datentypen, Flow-Control

Procedures/Functions

Trigger

Stored Procedure die nicht explizit aufgerufen wird sondern beim Eintreten von bestimmten Ereignissen
Arten:

  • DML
  • DDL
  • Database-Events (Logon/Logoff, Startup)

Zeitpunkt:

  • BEFORE
  • AFTER
  • INSTEAD OF

Betreff:

  • Row-Level-Trigger: Trigger wird auf jeder veränderten Zeile aufgerufen
  • Statement-Level-Trigger (SQL-Server): Trigger wird einmal mit allen Zeilen aufgerufen

Auch:

  • Nested Trigger: Trigger ruft andere Trigger auf
  • Recursive Trigger, Trigger ruft sich selbst auf

Anwendung:

  • Überwachung von Business Rules
  • Aktualisierung redundanter Daten
  • Mitschreiben von Änderungen - Audit Trails
  • Sicherheitsmechanismen

Das Datenbanksystem kann komplett enkapsuliert werden, alles geht über Stored Procedures und Trigger.

Cursor

Hill 11: Systemtabellen und Information Schema Views

Beschreibung der Objekte in einer Datenbank wird in Systemtabellen in der Datenbank abgelegt
Veränderung nicht über Systemtabellen möglich, dafür DDL
Information Schema Views: von der SQL-Norm, einheitlicher Zugriff auf Systemtabellen, Selbstbeschreibend

  • Tables, Column
  • Views, View Table und Column usage
  • Table Constraints, Key und Constraint Column Usage

Hill 12: Transaktionen

Logisch zusammengehörige Änderungen von Daten, wenn nur Teilweise sind die Daten logisch inkonsistent
Muss entweder ganz oder gar nicht durchgeführt werden, muss atomar sein.
ordnungsgemäß beendet: Commit
nicht: Rollback, Abort, Reset, Backout

Länge:

  • so kurz wie möglich: Systemoverhead, weniger im Fehlerfall zu wiederholen, weniger Sperre für andere
  • so lang wie notwendig: konsitenter Zustand

ADIC-Prinzip:

  • Atomicity: Unteilbarket, alles oder nichts
  • Consistency: Daten sind immer logisch konsistent
  • Isolation: Transaktionen können nicht interferieren
  • Durability: Nach Abschluss Recovery mögich

Hill 13: Recovery

Fehler:

  • Transaktionsfehler (lokaler Fehler), -> Rollback, Transaction Recovery
  • Systemfehler (globaler Fehler, Softcrash), Stromausfall, Fehler im Betriebssystem -> Crash Recovery
  • Mediumfehler, (Speicherfehler, Hardcrash), Daten sind physikalisch zerstört -> Archive Recovery

Transaction und Crash Recovery -> Backward Recovery
Archive Recovery -> Forward Recovery

Backward Recovery:

  • Undo-Logs, Vor jeder Änderung wird ein Before-Image gespeichert, dadurch ist der alte Wert bekannt (Standard)
  • Verzögertes Update, Es wird auf Kopien der Daten gearbeitet, erst wenn die Transaction fertig ist wird gespeichert

Zusätzliche Log-Infos:

  • Trans-Info (Anfang Ende Id)
  • Operation
  • Daten Id
  • Before-Image

Bei Transaction Recovery muss Log bis Beginn der Transaktion gelesen werden, bei Crash Recovery bis Anfang, es könnten immer noch Before-Images von nicht beendeter Transaktion sein, daher checkpoints im Logfile mit allen Aktiven Transaktionen

Forward Recovery:
Redo-Logs mit After Image, bis zum Nächsten Backup aufheben, können komprimiert werden, Änderungen zusammengeführt (Change Accumulation).

Backups

  • Full Backup
  • Partial: nur Änderugen
    • Differential Backup: zum Letzten Full Backup
    • Incremental: Zum Letzten Backup

Vorteile Differential:

  • sicherer, bei Datenverlust
  • schneller Wiederherstellen
    Vorteile Incremental:
  • Weniger Speicherplatzverbrauch
  • kürzere Backupzeitern

Andere Arten:

  • Paralleles Backup (Striped Backup): mit mehreren Laufwerken und medien
  • Offline (Cold) Backup: während die Datenbank nicht läuft
  • Online (Hot) Backup: laufender Betrieb
    • sequenziell, alle Zeilen nacheinander sichern, wenn Transaktion Daten ändern will werden sie vorgezogen und als gesichert markiert

Bei kombinierten System und Mediumfehler ist zuerst und dann Backward Recover nötig

Hill 14: Concurrency

Synchronisation paralleler Transaktionen
Probleme:

  • Lost Update: verlorene Änderung, eine Transaktion überschreibt andere
  • Inconsistent Analysis, Änderung der Daten währen durchgehen
  • Uncommited Dependency: Transaktion liest Daten von einer anderen die Zurückgerollt werden, Dirty Read

Serialisierbarkeit: Die Daten müssen nach einem parallelen Ablauf von Transaktionen gleich sein wie nach einem seriellem Ablauf in irgendeiner Reihenfolge

Schedule: Konkreter Ablauf von Abfragen und Änderungen von mehreren Transaktionen
z.B. r1(A); r2(A); w1(B); w2(B)
(T1 liest A, T2 liest A, T1 schreibt B, T2 schreibt B)
Anzahl an Schedules:

Serieller Schedule: Transaktionen werden hintereinander ausgeführt
Serialisierbarer (konfliktserialisierbarer) Schedule: äquivalent zu irgendeinem Seriellen Schedule ist

äquivalent heißt hier, dass in Konflikt stehende Operationen in derselben Reihenfolge aus

Präzedenzgraph: Knoten: Transaktionen, Kanten: von A nach B wenn es zwei Konfliktoperationen zwischen Transaktionen gibt. Wenn der Graph azyklisch ist, ist der Schedule konfliktserialisierbar

Sperren

Annahmen dass Konflikte entstehen, daher sperren
Optimistische Sperre: Annahme dass keine Konflikte kommen, Objekte werden erneut gelesen um Änderungen zu prüfen
Zeitstempel-Verfahren: Konflikte treten auf wenn Transaktionen versuchen jüngere Daten zu ändern, dann Neuausführung

Phasen: Two-Phase-Locking: Zuerst Sperren machen, dann wieder aufheben.
Strict-Two-Phase Locking: Alle Sperren werden erst am Ende der Transaktion aufgehoben

Sperrobjekte: Datenbank, Tabelle, Blöcke, Zeile
Vorteil fein: Parallelität, aber Mehr Aufwand

Sperrmodi: X-Lock (&mut in Rust): Exklusives, Schreibsperre Lock, nur eine Transaktion kann Lock haben
S-Lock (& in Rust): Shared Lock, Lesesperre, Andere Transaktionen können auch S-Lock sperren

Deadlock-Lösungen:

  • Vermeidung:
    • prevention: Bei Sperranforderung Abbruch
    • preclaiming: Am Anfang Sperren
    • timestamping
  • Erkennung: Wartegraph, Beseitigung: Eine Transaktion wird zurückgesetzt