uni:8:dbs2:zusammenfassung
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| uni:8:dbs2:zusammenfassung [2015-07-17 22:37] – [Zusammenfassung] skrupellos | uni:8:dbs2:zusammenfassung [2020-11-18 18:11] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 28: | Line 28: | ||
| FOCC | FOCC | ||
| </ | </ | ||
| + | |||
| + | * [[Synchronisation]] | ||
| + | |||
| ===== Grundbegriffe ===== | ===== Grundbegriffe ===== | ||
| ==== Anforderungen (Codd) ==== | ==== Anforderungen (Codd) ==== | ||
| Line 53: | Line 56: | ||
| * Durability (Abgeschlossene Transaktionen sind von dauer) | * Durability (Abgeschlossene Transaktionen sind von dauer) | ||
| - | ===== Synchronisation ===== | + | |
| ==== Serialisierungs-Graph ==== | ==== Serialisierungs-Graph ==== | ||
| ^ x ^ y ^ z | <- Attribute | | ^ x ^ y ^ z | <- Attribute | | ||
| Line 94: | Line 97: | ||
| | konfliktäquivalent | Gleiche Abhängigkeitsmengen | | | konfliktäquivalent | Gleiche Abhängigkeitsmengen | | ||
| - | ===== Sperrprotokoll | + | ===== Integrität |
| - | * 2PL: '' | + | * Schlüssel-~ |
| - | * striktes 2PL: '' | + | * 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$ | ||
| - | ==== Konsistenzstufen | + | ==== Data Warehouse |
| - | * kurz | + | | OLTP | OLAP | |
| - | * lang: Bis EOT | + | | Online Transaction Processing | Online Analytical Processing | |
| + | | Detail | ||
| + | | Aktuelle | ||
| + | | Ist eine quelle | ||
| + | | Veränderbar | ||
| - | ^ Konsistenzstufe ^ Schreibsperre ^ Lesesperre ^ | + | < |
| - | | 0 | kurz | - | | + | |
| - | | 1 | lang | - | | + | |
| - | | 2 | lang | kurz | | + | |
| - | | 3 | lang | lang | | + | |
| - | ===== Sperrverfahren ===== | + | === Relationales mapping |
| - | ==== Verfahren ==== | + | Faktentabelle in der Mitte |
| - | === (Voll) | + | == Snowflake |
| - | ^ ^ | + | Eine Tabelle pro Hierachieebene pro Dimension |
| - | ^ X | (-) | | + | |
| - | === RX === | + | == Star == |
| - | ^ ^ | + | Eine Tabelle pro Dimension |
| - | ^ R | (+) | (-) | | + | |
| - | ^ X | (-) | (-) | | + | |
| - | === RUX === | ||
| - | * U: update/ | ||
| + | ===== Recovery ===== | ||
| + | ==== Fehlerarten ==== | ||
| + | * Transaktionsfehler => Rücksetzen | ||
| + | * Lokales UNDO | ||
| + | * Systemfehler => Warmstart | ||
| + | * Globales UNDO | ||
| + | * Globales REDO | ||
| + | * Medienfehler => Geräte-Recovery | ||
| + | * Globales REDO | ||
| - | ^ ^ | + | ==== Logging ==== |
| - | ^ R | (+) | (-) | (-) | | + | |
| - | ^ U | (+) | (-) | (-) | | + | * Übergangslogging [XOR] |
| - | ^ X | (-) | (-) | (-) | | + | * Zustandslogging [Volle ...] |
| + | * Seiten-Logging [... Seiten] | ||
| + | * Eintrags-Logging [... Einträge] | ||
| + | * Logisches Logging [Befehle/ | ||
| + | | ||
| - | Übergänge: | + | === Aufbau Log-File === |
| - | * U -> X: Möchte jetzt schreiben | + | Ringbuffer |
| + | * LSN (Fortlaufende Nummer) | ||
| + | * TA-ID (Welche Transaktion) | ||
| + | * Page-ID (Welche Seite) | ||
| + | * REDO | ||
| + | * UNDO | ||
| + | * PrevLSN | ||
| - | === RAX === | + | Log-Granularität $<=$ Sperrgranularität |
| - | * A: = U (update/ | + | |
| - | ^ ^ | + | === Einbringungsstrategie |
| - | ^ R | | + | |
| - | ^ A | (+) | | + | |
| - | ^ X | (-) | + | |
| - | Übergänge: | + | === Verdrängungsstrategien (wann frühestens Puffer -> DB) === |
| - | * A -> X: Möchte jetzt schreiben | + | |
| - | === RIX === | + | |
| - | Auf oberer Ebene (Tabelle): | + | |
| - | ^ ^ | + | |
| - | ^ R | (+) | (-) | (+) | (-) | (-) | | + | |
| - | ^ X | (-) | (-) | (-) | (-) | (-) | | + | |
| - | ^ IR | (+) | (-) | (+) ^ (+) ^ (+) | | + | |
| - | ^ IX | (-) | (-) ^ (+) ^ (+) | (-) | | + | |
| - | ^ RIX | (-) | (-) ^ (+) | (-) | (-) | | + | |
| - | ^ Überprüfung auf unterer Ebene nötig | + | WAL-Prinzip: |
| - | * Obere Ebene hat ... | + | === Ausschreibungsstrategie (wann spätestens Puffer -> DB) === |
| - | * **R** | + | * Force [Vor COMMIT] |
| - | * **X** | + | * No-Force [egal] |
| - | * Untere Ebene hat ... | + | |
| - | * R => **IR** | + | |
| - | * X => **IX** | + | |
| - | * Obere Ebene hat //R//, untere Ebene hat //X// ... | + | |
| - | * **RIX** (mix aus //R// und //IX//) | + | |
| + | COMMIT-Regel: | ||
| - | Auf unterer Ebene (Tupel): RX/RUX/RAX | + | ==== Sicherungen ==== |
| - | === RAC === | + | === Arten === |
| - | * **A** Änderung $V_\text{neu}$ im cache | + | * TOC: Sicherung //einer// TA (entspricht Force) |
| - | * **C** $V_\text{alt}$ wird noch von alten Lesern gelesen | + | |
| + | * ACC: Alle Änderungen raus schreiben, derweil keine // | ||
| - | ^ ^ | + | === Ablauf === |
| - | ^ R | | + | | 1. Analyse |
| - | ^ A | | + | | 2. REDO |
| - | ^ C | | + | | 3. UNDO |
| + | | 4. Abschluss | ||
| - | Übergänge: | + | * Gewinner => COMMIT im log |
| - | * A -> C: Bei commit | + | * Verlierer => Rest |
| - | ==== Eigenschaften ==== | + | |
| - | ^ Verfahren ^ Kein Verhungern ^ Deadlockfrei \\ selbes Obj. ^ Deadlockfrei \\ anderes Obj. ^ Schedule ^ Bemerkung ^ | + | |
| - | | RX | (X) | (X) | (X) | kaskadierte freies rücksetzen | Parallele Leser | | + | |
| - | | RUX | (V) | (V) | (X) | | Parallele Leser | | + | |
| - | | RAX | (X) | (V) | (X) | | Zwar nach kein verklemmen, dafür verhungern für mehr Parallelität | + | |
uni/8/dbs2/zusammenfassung.1437165437.txt.gz · Last modified: (external edit)
