uni:8:dbs2:zusammenfassung
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| uni:8:dbs2:zusammenfassung [2015-07-16 17:11] – created skrupellos | uni:8:dbs2:zusammenfassung [2020-11-18 18:11] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Zusammenfassung ====== | ====== 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/ | ||
| + | Erkennen | ||
| + | Wartegraph | ||
| + | Time-Out | ||
| + | wound-wait | ||
| + | wait-die | ||
| + | Pessimistische Synchronisation mit Zeitstempeln | ||
| + | Optimistische Synchronisation mit Zeitstempeln | ||
| + | BOCC | ||
| + | BOCC+ | ||
| + | FOCC | ||
| + | </ | ||
| + | |||
| + | * [[Synchronisation]] | ||
| + | |||
| + | ===== Grundbegriffe ===== | ||
| + | ==== Anforderungen (Codd) ==== | ||
| + | * **Integration** // | ||
| + | * **Operationen** auf den Daten (ändern, löschen, ...) | ||
| + | * **Data Dictionary** Schema anschauen | ||
| + | * **Benutzersicheten** views | ||
| + | * **Konsistenzüberwachung** bei Änderung | ||
| + | * **Zugriffskontrolle** | ||
| + | * **Transaktionen** | ||
| + | * **Synchronisation** (Mehrbenutzersystem) | ||
| + | |||
| + | ==== Ebenen ==== | ||
| + | | Anwendungen (mehrere) | ||
| + | ^ | ||
| + | ^ | ||
| + | ^ Konzeptionelle Ebene | | | ||
| + | ^ | ||
| + | ^ | ||
| + | |||
| + | ==== ACID ==== | ||
| + | * Atomic (Wenn, dann wird man als ganzes abgebrochen) | ||
| + | * Consistency (Konsistenter Zystand -> Konsistenter Zustand) | ||
| + | * Isolation (Man muss sich aleine fühlen) | ||
| + | * Durability (Abgeschlossene Transaktionen sind von dauer) | ||
| + | |||
| + | |||
| + | ==== 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$ | ::: | | ||
| + | | | ||
| + | |||
| + | 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 === | ||
| + | // | ||
| + | |||
| + | ==== Eigenschaften von Schedules ==== | ||
| + | Eigenschaften eines Schedules: | ||
| + | ^ Schedule ^ Beschreibung ^ | ||
| + | | allgemein | ||
| + | | seriell | ||
| + | | serialisierbar | ||
| + | | rücksetzbar | ||
| + | | ohne kaskadiertes \\ Rollback | Keine Daten einer laufenden TA lesen | | ||
| + | | strikt | ||
| + | |||
| + | |||
| + | Eigenschaften zwischen Schedules: | ||
| + | ^ Schedule ^ Beschreibung ^ | ||
| + | | konfliktäquivalent | Gleiche Abhängigkeitsmengen | | ||
| + | |||
| + | ===== Integrität ===== | ||
| + | * Schlüssel-~ | ||
| + | * Referenzielle ~ | ||
| + | * Multiplititäten Constraints | ||
| + | * Allgemeine Constraints | ||
| + | |||
| + | ===== Datenschutz ===== | ||
| + | ==== Discretionary Access Controll (DAC) ==== | ||
| + | Explizite Autorisierung: | ||
| + | < | ||
| + | grant ... on ... to ... | ||
| + | | ||
| + | ==== Verfeinertes DAC ==== | ||
| + | Implizite Autorisierung: | ||
| + | * //starke// Autorisierung überschreibt // | ||
| + | * Es gibt // | ||
| + | * Subjekte, Objekte und Operationen haben eine Hierarchie | ||
| + | |||
| + | |||
| + | * Implizite Weitergabe positiver Autorisierung in die eine Richtung | ||
| + | * Implizite Weitergabe negativer Autorisierung in die andere Richtung | ||
| + | |||
| + | ==== Mandatory Access Control (MAC) ==== | ||
| + | * Sicherheitsklassen für // | ||
| + | * Objekte hochstufen (V) | ||
| + | * Objekte runter stufen (X) | ||
| + | * Zugriff wenn '' | ||
| + | * Angelegte Objekte '' | ||
| + | |||
| + | ===== HW ===== | ||
| + | B+ | ||
| + | * Directory/ | ||
| + | * Datenseiten | ||
| + | |||
| + | * **Sequenziell** \\ $t_\text{scan} = t_\text{seek} + f \cdot t_\text{transfer} + \lceil \frac{f}{c_\text{puffer}} \rceil \cdot t_\text{lat}$ | ||
| + | * **Wahlfrei** \\ $t_\text{random} = (t_\text{seek} + c_\text{index} \cdot t_\text{transfer} + t_\text{lat}) \cdot a$ | ||
| + | |||
| + | ===== Anfrageoptimierung ===== | ||
| + | ==== Arten ==== | ||
| + | * **Logische Anfrageoptimierung** \\ Auswertungsplan umbauen | ||
| + | * **Physische Anfrageoptimierung** \\ Algorithmen auswählen | ||
| + | |||
| + | ==== Logische Anfrageoptimierung ==== | ||
| + | === Umformungsregeln === | ||
| + | * $R \bowtie S = S \bowtie S$ | ||
| + | * $R \cup S = S \cup R$ | ||
| + | * $R \cap S = S \cap R$ | ||
| + | * $R \times S = S \times R$ | ||
| + | * $(R \bowtie S) \bowtie T = R \bowtie (S \bowtie T)$ | ||
| + | * $(R \cup S) \cup T = R \cup (S \cup T)$ | ||
| + | * $(R \cap S) \cap T = R \cap (S \cap T)$ | ||
| + | * $(R \times S) \times T = R \times (S \times T)$ | ||
| + | * $\sigma_A(\sigma_B(R)) = \sigma_B(\sigma_A(R))$ | ||
| + | * $\sigma_{A \wedge B}(R) = \sigma_A(\sigma_B(R))$ | ||
| + | * $\pi_A(\pi_B(R)) = \pi_A(R) \text{ mit } A \subseteq B$ | ||
| + | * $\pi_A(\sigma_B(R)) = \sigma_B(\pi_A(R)) \text{ mit attr}(B) \subseteq A$ | ||
| + | * $\sigma_B(R \bowtie S) = \sigma_B(R) \bowtie S \text{ mit attr}(B) \subseteq \text{ attr}(R)$ | ||
| + | * $\sigma_B(R \times S) = \sigma_B(R) \times S \text{ mit attr}(B) \subseteq \text{ attr}(R)$ | ||
| + | * $\sigma_B(R \cup S) = \sigma_B(R) \cup \sigma_B(S)$ | ||
| + | * $\sigma_B(R \cap S) = \sigma_B(R) \cap \sigma_B(S)$ | ||
| + | * $\sigma_B(R \setminus S) = \sigma_B(R) \setminus \sigma_B(S)$ | ||
| + | * $\pi_B(R \cup S) = \pi_B(R) \cup \pi_B(S)$ | ||
| + | * $\sigma_{A=B}(R \times S) = R \bowtie_{A=B} S$ | ||
| + | |||
| + | === Algo === | ||
| + | - $\sigma$ splitten | ||
| + | - $\sigma$ nach unten | ||
| + | - $\sigma$ und $\times$ => $\bowtie$ | ||
| + | - $\pi$ einfügen, um auf minimum beschränken | ||
| + | - $\pi$ nach unten | ||
| + | - $\sigma$ mergen | ||
| + | |||
| + | ===== Big Data ===== | ||
| + | * high-**volume** | ||
| + | * high-**velocity** | ||
| + | * high-**variety** | ||
| + | |||
| + | ==== Map-Reduce ==== | ||
| + | - **Map** \\ Data => KV-Pair | ||
| + | - **Shuffle** \\ Same key to same node | ||
| + | - **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 | ||
| + | | Aktuelle | ||
| + | | Ist eine quelle | ||
| + | | Veränderbar | ||
| + | |||
| + | < | ||
| + | |||
| + | === Relationales mapping === | ||
| + | Faktentabelle in der Mitte | ||
| + | == Snowflake == | ||
| + | Eine Tabelle pro Hierachieebene pro Dimension | ||
| + | |||
| + | == Star == | ||
| + | Eine Tabelle pro Dimension | ||
| + | |||
| + | |||
| + | ===== Recovery ===== | ||
| + | ==== Fehlerarten ==== | ||
| + | * Transaktionsfehler => Rücksetzen | ||
| + | * Lokales UNDO | ||
| + | * Systemfehler => Warmstart | ||
| + | * Globales UNDO | ||
| + | * Globales REDO | ||
| + | * Medienfehler => Geräte-Recovery | ||
| + | * Globales REDO | ||
| + | |||
| + | ==== Logging ==== | ||
| + | * Physisch [Bit-Blöcke] | ||
| + | * Übergangslogging [XOR] | ||
| + | * Zustandslogging [Volle ...] | ||
| + | * Seiten-Logging [... Seiten] | ||
| + | * Eintrags-Logging [... Einträge] | ||
| + | * Logisches Logging [Befehle/ | ||
| + | * Physiologisches Logging [Befehle/ | ||
| + | |||
| + | === Aufbau Log-File === | ||
| + | Ringbuffer | ||
| + | * LSN (Fortlaufende Nummer) | ||
| + | * TA-ID (Welche Transaktion) | ||
| + | * Page-ID (Welche Seite) | ||
| + | * REDO | ||
| + | * UNDO | ||
| + | * PrevLSN | ||
| + | |||
| + | Log-Granularität $<=$ Sperrgranularität | ||
| + | |||
| + | === Einbringungsstrategie (wo in DB) === | ||
| + | * Direkt (NonAtomic, Update in-place) => UNDO nötig | ||
| + | * Indirektes Einbringen (Atomic) [" | ||
| + | |||
| + | === Verdrängungsstrategien (wann frühestens Puffer -> DB) === | ||
| + | * No-Steal [Nach COMMIT] => Kein UNDO | ||
| + | * Steal [egal] => UNDO | ||
| + | |||
| + | WAL-Prinzip: | ||
| + | |||
| + | === Ausschreibungsstrategie (wann spätestens Puffer -> DB) === | ||
| + | * Force [Vor COMMIT] => Kein REDO | ||
| + | * No-Force [egal] => REDO | ||
| + | |||
| + | COMMIT-Regel: | ||
| + | |||
| + | ==== Sicherungen ==== | ||
| + | === Arten === | ||
| + | * TOC: Sicherung //einer// TA (entspricht Force) | ||
| + | * TCC: Alle Änderungen raus schreiben, derweil keine //TA//. | ||
| + | * ACC: Alle Änderungen raus schreiben, derweil keine // | ||
| + | |||
| + | === Ablauf === | ||
| + | | 1. Analyse | ||
| + | | 2. REDO | Vollständiges REDO | Gewinner REDO | | ||
| + | | 3. UNDO | UNDO (damals) laufender TAs | UNDO verlierer TA | | ||
| + | | 4. Abschluss | Sicherungspunkt erstellen | ||
| + | |||
| + | * Gewinner => COMMIT im log | ||
| + | * Verlierer => Rest | ||
uni/8/dbs2/zusammenfassung.1437059500.txt.gz · Last modified: (external edit)
