Table of Contents

Zusammenfassung

Die Mega-Übersicht

Synchronisation
	Pessimistische Synchronisation mit Sperren
		Sperrprotokolle
			2PL [deadlocks]
			Konservatives 2PL
			Striktes 2PL [deadlocks]
			Konservatives + Striktes 2PL
		Sperrverfahren
			RX
			RUX
			RAX
			RIX
			RAC
		Deadlocks
			Vermeiden [konservatives 2PL/precaiming]
			Erkennen
				Wartegraph
				Time-Out
					wound-wait
					wait-die
	Pessimistische Synchronisation mit Zeitstempeln
	Optimistische Synchronisation mit Zeitstempeln
		BOCC
		BOCC+
		FOCC

Grundbegriffe

Anforderungen (Codd)

Ebenen

Anwendungen (mehrere)
Externe Ebene Views (mehrere)
↓↓ Logische Datenunabhängigkeit ↓↓
Konzeptionelle Ebene
↓↓ Physische Datenunabhängigkeit ↓↓
Interne Ebene Speicherformat

ACID

Serialisierungs-Graph

x y z ← Attribute
$r_1$ $w_2$ $r_1$ ← $\text{Operation}_\text{Transaktion}$
$r_2$ $r_3$ $w_1$
$w_2$ $w_3$ $r_4$
$w_3$

Spaltenweise von oben nach unten die $wr(x), rw(x), ww(x)$-Paare finden

Anomalien

Lost update

t1 r(x) w(x)
t2 w(x)

Dirty read/write

t1 w(x) w(x)
t2 r(x)

Non-repeatable read

t1 r(x) r(x)
t2 w(x)

Phantom-Problem

Non-repeatable read mit Aggregiertem read

Eigenschaften von Schedules

Eigenschaften eines Schedules:

Schedule Beschreibung
allgemein Durcheinander
seriell Blockform
serialisierbar allgemein + seriell (Zyklenfrei)
rücksetzbar commit erst nach commit von denen ich gelesen habe
ohne kaskadiertes
Rollback
Keine Daten einer laufenden TA lesen
strikt Keine Daten einer laufenden TA lesen/schreiben

Eigenschaften zwischen Schedules:

Schedule Beschreibung
konfliktäquivalent Gleiche Abhängigkeitsmengen

Integrität

Datenschutz

Discretionary Access Controll (DAC)

Explizite Autorisierung:

Subjekt bekommt Zugriffsrecht auf Objekt

grant ... on ... to ...

Verfeinertes DAC

Implizite Autorisierung:

Mandatory Access Control (MAC)

HW

B+

Anfrageoptimierung

Arten

Logische Anfrageoptimierung

Umformungsregeln

Algo

  1. $\sigma$ splitten
  2. $\sigma$ nach unten
  3. $\sigma$ und $\times$ ⇒ $\bowtie$
  4. $\pi$ einfügen, um auf minimum beschränken
  5. $\pi$ nach unten
  6. $\sigma$ mergen

Big Data

Map-Reduce

  1. Map
    Data ⇒ KV-Pair
  2. Shuffle
    Same key to same node
  3. Reduce
    Marge Values per Key

Zählanfrage auf unsicheren Daten

$F = (1 - P(A) + x \cdot P(A)) \cdot \ldots$

Data Warehouse

OLTP OLAP
Online Transaction Processing Online Analytical Processing
Detail Nur relevante
Aktuelle Historische
Ist eine quelle Hat viele quellen
Veränderbar Nur hinzufügen

Fakten in hierachischen Dimensionen

Relationales mapping

Faktentabelle in der Mitte

Snowflake

Eine Tabelle pro Hierachieebene pro Dimension

Star

Eine Tabelle pro Dimension

Recovery

Fehlerarten

Logging

Aufbau Log-File

Ringbuffer

Log-Granularität $<=$ Sperrgranularität

Einbringungsstrategie (wo in DB)

Verdrängungsstrategien (wann frühestens Puffer -> DB)

WAL-Prinzip: UNDO muss vor Änderungen an DB im Log stehen

Ausschreibungsstrategie (wann spätestens Puffer -> DB)

COMMIT-Regel: REDO muss vor COMMIT im Log stehen

Sicherungen

Arten

Ablauf

1. Analyse Gewinner/Verlierer Bestimmen
2. REDO Vollständiges REDO Gewinner REDO
3. UNDO UNDO (damals) laufender TAs UNDO verlierer TA
4. Abschluss Sicherungspunkt erstellen