E-Book, Deutsch, 736 Seiten
Reihe: mitp Professional
Saake / Sattler Datenbanken
4., 2019
ISBN: 978-3-95845-780-5
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 1 - PDF Watermark
Implementierungstechniken
E-Book, Deutsch, 736 Seiten
Reihe: mitp Professional
ISBN: 978-3-95845-780-5
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 1 - PDF Watermark
Die Autoren sind Professoren für Datenbank- und Informationssysteme - Gunter Saake an der Universität Magdeburg, Kai-Uwe Sattler an der TU Ilmenau und Andreas Heuer an der Universität Rostock.
Zielgruppe
Studierende der Informatik oder verwandter Fächer / Anwender und Entwickler
Autoren/Hrsg.
Weitere Infos & Material
1;Vorwort zur vierten Auflage;5
2;Inhaltsverzeichnis;11
3;Aufgaben und Prinzipien von Datenbanksystemen;21
3.1;Wiederholung der Datenbank-Grundbegriffe;22
3.1.1;Architektur eines Datenbanksystems;22
3.1.2;Neun Funktionen nach Codd;25
3.1.3;Datenbankmodelle und Datendefinition;26
3.1.4;Anfrage- und Änderungsoperationen;32
3.1.5;Sprachen und Sichten;33
3.2;Wann kommt was?;35
3.2.1;Optimierer;35
3.2.2;Dateiorganisation und Zugriffspfade;37
3.2.3;Transaktionen;40
3.2.4;Recovery und Datensicherheit;40
3.3;Vertiefende Literatur;41
3.4;Übungen;42
4;Architektur von Datenbanksystemen;43
4.1;Betrachtete Fragestellungen;44
4.2;Schichtenmodell eines relationalen DBMS;46
4.3;Hardware und Betriebssystem;49
4.4;Pufferverwaltung;51
4.5;Speichersystem;54
4.6;Zugriffssystem;55
4.7;Datensystem;59
4.8;Katalog und Data Dictionary;60
4.9;Vertiefende Literatur;62
4.10;Übungen;63
5;I Speichermodelle und Zugriffspfade;65
5.1;Verwaltung des Hintergrundspeichers;67
5.1.1;Speichermedien;68
5.1.1.1;Speicherhierarchie;68
5.1.1.2;Cache, Hauptspeicher und Sekundärspeicher;71
5.1.1.3;Die Magnetplatte;72
5.1.1.4;Flash-Laufwerke;75
5.1.1.5;Speicherkapazität, Geschwindigkeit und Kosten;79
5.1.2;Speicher-Arrays: RAID;81
5.1.2.1;Ziele von RAID-Systemen;81
5.1.2.2;RAID-Levels;82
5.1.3;Sicherungsmedien: Tertiärspeicher;88
5.1.3.1;Optische Platten;89
5.1.3.2;Bänder;90
5.1.3.3;Jukeboxes und Roboter;90
5.1.3.4;Langzeitarchivierung;91
5.1.4;Modell des Hintergrundspeichers;92
5.1.4.1;Betriebssystemdateien;92
5.1.4.2;Abbildung der konzeptuellen Ebene auf interne Strukturen;94
5.1.4.3;Einpassen von Datensätzen auf Blöcke;95
5.1.4.4;Modell des Sekundärspeichers;97
5.1.5;Seiten, Sätze und Adressierung;98
5.1.5.1;Struktur der Seiten;98
5.1.5.2;Satztypen;99
5.1.5.3;Adressierung von Datensätzen;105
5.1.5.4;Alternative Speichermodelle und Kompression;107
5.1.6;Speicherorganisation und physische Datendefinition in SQL-Systemen;109
5.1.7;Vertiefende Literatur;113
5.1.8;Übungen;114
5.2;Pufferverwaltung;117
5.2.1;Einordnung und Motivation;118
5.2.2;Suche von Seiten und Speicherzuteilung;121
5.2.2.1;Suchen einer Seite;121
5.2.2.2;Speicherzuteilung im Puffer;122
5.2.3;Seitenersetzungsstrategien;122
5.2.3.1;Merkmale gängiger Strategien;125
5.2.3.2;Konkrete Seitenersetzungsstrategien;126
5.2.3.3;Fazit;138
5.2.4;Vertiefende Literatur;140
5.2.5;Übungen;140
5.3;Dateiorganisation und Zugriffsstrukturen;143
5.3.1;Klassifikation der Speichertechniken;144
5.3.1.1;Primärschlüssel vs. Sekundärschlüssel;145
5.3.1.2;Primärindex vs. Sekundärindex;146
5.3.1.3;Dateiorganisationsform vs. Zugriffspfad;147
5.3.1.4;Dünn besetzter vs. dicht besetzter Index;149
5.3.1.5;Geclusterter vs. nicht-geclusterter Index;151
5.3.1.6;Schlüsselzugriff vs. Schlüsseltransformation;152
5.3.1.7;Ein-Attribut- vs. Mehr-Attribut-Index;153
5.3.1.8;Eindimensionale vs. mehrdimensionale Zugriffsstruktur;153
5.3.1.9;Nachbarschaftserhaltende vs. streuende Zugriffsstruktur;154
5.3.1.10;Statische vs. dynamische Zugriffsstruktur;155
5.3.1.11;Beispiele für Klassifikationen;156
5.3.1.12;Alternative Klassifikationen von Zugriffsverfahren;157
5.3.1.13;Anforderungen an Speichertechniken;159
5.3.2;Sequenzielle und indexierte Dateien;160
5.3.2.1;Heap-Organisation;160
5.3.2.2;Sequenzielle Speicherung;164
5.3.2.3;Indexsequenzielle Dateiorganisation;165
5.3.2.4;Indexiert-nichtsequenzieller Zugriffspfad;170
5.3.3;Suchbäume;174
5.3.3.1;B-Bäume;175
5.3.3.2;B-Bäume und Varianten in Datenbanken;183
5.3.3.3;B-Bäume in der Praxis;190
5.3.4;Hashverfahren;193
5.3.4.1;Grundprinzipien von Hashverfahren;193
5.3.4.2;Hashverfahren für Datenbanken;195
5.3.5;Cluster-Bildung;199
5.3.5.1;Index-organisierte Tabellen;200
5.3.5.2;Cluster für Verbundanfragen;201
5.3.6;Partitionierung;204
5.3.6.1;Fragmentierung und Allokation in verteilten Datenbanken;205
5.3.6.2;Formen der horizontalen Partitionierung;207
5.3.6.3;Bereichspartitionierung;208
5.3.6.4;Hash-Partitionierung;209
5.3.7;Vertiefende Literatur;210
5.3.8;Übungen;211
5.4;Spezielle Indexstrukturen;213
5.4.1;Dynamisches Hashing;214
5.4.1.1;Hashfunktionen mit erweiterbarem Bildbereich;214
5.4.1.2;Lineares Hashen;215
5.4.1.3;Erweiterbares Hashen;218
5.4.1.4;Spiralhashen;221
5.4.1.5;Kombinierte Methoden;224
5.4.2;Mehrdimensionale Speichertechniken;225
5.4.2.1;Mehrdimensionale Baumverfahren;226
5.4.2.2;Mehrdimensionales Hashen;232
5.4.2.3;Grid-File;236
5.4.2.4;UB-Baum;242
5.4.3;Geometrische Zugriffsstrukturen;245
5.4.3.1;Probleme und Aufgaben;245
5.4.3.2;Eignung klassischer Suchbäume und Indexstrukturen;248
5.4.3.3;Prinzipien nachbarschaftserhaltender Suchbäume;249
5.4.3.4;R-Bäume und Varianten;253
5.4.3.5;Rechteckspeicherung durch Punktdatenstrukturen;259
5.4.3.6;Klassifizierung und Vergleich;266
5.4.4;Hochdimensionale Daten;267
5.4.4.1;Hochdimensionale Feature-Vektoren;267
5.4.4.2;Operationen auf Feature-Vektoren;268
5.4.4.3;Metriken für Abstände;270
5.4.4.4;Nächster-Nachbar-Suche in R-Bäumen;272
5.4.4.5;Der X-Baum;275
5.4.4.6;Alternativen zu Baumverfahren;277
5.4.5;Bitmap-Indexe;279
5.4.5.1;Vor- und Nachteile von Bitmap-Indexen;280
5.4.5.2;Varianten von Bitmap-Indexen;281
5.4.5.3;Implementierung von Bitmap-Indexen;282
5.4.6;Indexierung von Texten;283
5.4.6.1;Eignung von B-Bäumen: Probleme und Präfix-B-Baum;283
5.4.6.2;Digitale Bäume;284
5.4.6.3;Invertierte Listen;289
5.4.7;Relationenübergreifende Indexe;290
5.4.7.1;Verbundindexe;290
5.4.7.2;Multi-Join-Indexe;292
5.4.7.3;Pfadindexe;293
5.4.7.4;Zugriffsunterstützungsrelationen;295
5.4.7.5;Zugriffspfade für berechnete Werte;296
5.4.8;Vertiefende Literatur;297
5.4.9;Übungen;298
6;II Anfragebearbeitung;301
6.1;Basisalgorithmen für Datenbankoperationen;303
6.1.1;Benötigte Grundalgorithmen;305
6.1.1.1;Parameter für Kostenbestimmung;305
6.1.1.2;Grundannahmen;306
6.1.1.3;Hauptspeicheralgorithmen;307
6.1.1.4;Zugriffe auf Datensätze;307
6.1.1.5;Externe und interne Sortieralgorithmen;308
6.1.2;Navigationsoperationen: Scans;312
6.1.2.1;Arten von Scans;312
6.1.2.2;Operationen auf Scans;313
6.1.2.3;Scan-Semantik;316
6.1.3;Unäre Operationen: Selektion, Projektion und Gruppierung;317
6.1.3.1;Selektion;317
6.1.3.2;Projektion;319
6.1.3.3;Aggregatfunktionen und Gruppierung;320
6.1.4;Binäre Operationen: Mengenoperationen;323
6.1.4.1;Techniken für binäre Operatoren;324
6.1.4.2;Klassen binärer Operatoren;325
6.1.4.3;Vereinigung mit Duplikateliminierung;326
6.1.5;Berechnung von Verbunden;328
6.1.5.1;Nested-Loops-Verbund;328
6.1.5.2;Merge-Techniken;330
6.1.5.3;Hashverbund;332
6.1.5.4;Vergleich der Techniken;336
6.1.6;Operationen für spezielle Anwendungen;338
6.1.6.1;Cube-Berechnung;339
6.1.6.2;Skyline-Operator;345
6.1.7;Vertiefende Literatur;351
6.1.8;Übungen;352
6.2;Optimierung von Anfragen;353
6.2.1;Grundprinzipien der Optimierung;355
6.2.2;Motivierende Beispiele;356
6.2.3;Phasen der Anfragebearbeitung;361
6.2.4;Anfrageübersetzung und -vereinfachung;363
6.2.4.1;Parsen und Analysieren der Anfrage;363
6.2.4.2;Übersetzung in Relationenalgebra;365
6.2.4.3;Auflösung von Sichten;366
6.2.4.4;Standardisierung und Vereinfachung von Ausdrücken;367
6.2.4.5;Entschachteln von Anfragen;369
6.2.5;Weitere Phasen der Optimierung;373
6.2.6;Vertiefende Literatur;374
6.2.7;Übungen;375
6.3;Logische Optimierung;377
6.3.1;Algebraische Optimierung;378
6.3.1.1;Entfernen redundanter Operationen;379
6.3.1.2;Änderung der Reihenfolge von Operationen;380
6.3.1.3;Optimierungsregeln;381
6.3.1.4;Ein einfacher Optimierungsalgorithmus;384
6.3.1.5;Vorgruppierungen;387
6.3.1.6;Erkennung gemeinsamer Teilanfragen;389
6.3.1.7;Ergebnis der algebraischen Optimierung;390
6.3.2;Verbundoptimierung mit Tableaus;390
6.3.2.1;Tableaus – Eine informale Einführung;391
6.3.2.2;Formale Definition einer Tableau-Anfrage;393
6.3.2.3;Konstruktion einer Tableau-Anfrage;396
6.3.2.4;Äquivalenz von Tableau-Anfragen;399
6.3.2.5;Minimalität;400
6.3.2.6;Optimierung von Tableau-Anfragen;401
6.3.2.7;Erweiterung der Tableau-Optimierung;404
6.3.3;Semantische Optimierung;405
6.3.3.1;Darstellungsvarianten für Anfragen;406
6.3.3.2;Berücksichtigung von Integritätsbedingungen;407
6.3.3.3;Äquivalenz von Anfragen unter Integritätsbedingungen;410
6.3.3.4;Tableau-Optimierung mit CHASE;411
6.3.4;Vertiefende Literatur;415
6.3.5;Übungen;416
6.4;Interne Optimierung und kostenbasierte Planauswahl;419
6.4.1;Physische oder interne Optimierung;420
6.4.1.1;Planoperatoren und Planrepräsentation;421
6.4.1.2;Plangenerierung und Suchstrategien;432
6.4.2;Kostenmodelle und Kostenabschätzung;436
6.4.2.1;Komponenten von Kostenmodellen;436
6.4.2.2;Histogramme;442
6.4.2.3;Kostenabschätzungen am Beispiel;449
6.4.2.4;Statistiken in DBMS;453
6.4.3;Strategien zur kostenbasierten Planauswahl;455
6.4.3.1;Greedy-Suche;456
6.4.3.2;Dynamische Programmierung;458
6.4.3.3;Anfragedekomposition;462
6.4.3.4;Iterative Improvement und Simulated Annealing;465
6.4.3.5;Optimierung mit genetischen Algorithmen;468
6.4.4;Beeinflussung von Anfrageoptimierern;470
6.4.4.1;Ausgabe von Plänen;471
6.4.4.2;Optimizer Hints;474
6.4.5;Vertiefende Literatur;477
6.4.6;Übungen;478
7;III Transaktionsverarbeitung und Recovery;481
7.1;Transaktionsmodelle;483
7.1.1;Transaktionen im Mehrbenutzerbetrieb;483
7.1.2;Transaktionseigenschaften;485
7.1.3;Probleme im Mehrbenutzerbetrieb;487
7.1.3.1;Inkonsistentes Lesen: Nonrepeatable Read;488
7.1.3.2;Lesen inkonsistenter Zustände;489
7.1.3.3;Abhängigkeiten von nicht freigegebenen Daten: Dirty Read;489
7.1.3.4;Das Phantom-Problem;491
7.1.3.5;Verloren gegangene Änderungen: Lost Update;491
7.1.3.6;Integritätsverletzung durch Mehrbenutzer-Anomalie;492
7.1.3.7;Cursor-Referenzen;493
7.1.3.8;Problemklassifikation;494
7.1.3.9;Isolation: Serialisierbarkeit oder Snapshot Isolation;495
7.1.4;Serialisierbarkeit;496
7.1.4.1;Einführung in die Serialisierbarkeitsthematik;496
7.1.4.2;Der Begriff des Schedules;501
7.1.4.3;Grundlegende Definitionen;504
7.1.4.4;Das Konzept der Serialisierbarkeit;505
7.1.4.5;Sichtserialisierbarkeit;506
7.1.4.6;Konfliktserialisierbarkeit;509
7.1.4.7;Graphbasierter Test auf Konfliktserialisierbarkeit;511
7.1.4.8;Abgeschlossenheitseigenschaften;513
7.1.5;Transaktionsabbruch und Fehlersicherheit;516
7.1.5.1;Rücksetzbarkeit;517
7.1.5.2;Vermeidung kaskadierender Abbrüche;518
7.1.5.3;Striktheit;518
7.1.5.4;Rigorose Striktheit oder Strenge;520
7.1.5.5;Operationen für den Transaktionsabbruch;522
7.1.6;Mehrversionen-Serialisierbarkeit;524
7.1.6.1;Idee des MVCC;524
7.1.6.2;Ein- und Mehrversionen-Schedules;525
7.1.6.3;Serialisierbarkeitsgraph für MV-Schedules;528
7.1.6.4;Serielle und serialisierbare MV-Schedules;528
7.1.6.5;Mehrversionen-Serialisierbarkeitsgraph;530
7.1.6.6;MVCC in DBMS;533
7.1.7;Snapshot Isolation;534
7.1.7.1;Definition der Snapshot Isolation;535
7.1.7.2;Vergleich zur Serialisierbarkeit;536
7.1.7.3;Serialisierbare Snapshot Isolation;539
7.1.8;Ausnutzung semantischer Informationen;540
7.1.8.1;Vertauschbarkeit von Operationen;540
7.1.8.2;Kompensierende Aktionen;543
7.1.9;Vertiefende Literatur;545
7.1.10;Übungen;546
7.2;Transaktionsverwaltung;549
7.2.1;Der Scheduler;549
7.2.2;Sperrmodelle;552
7.2.2.1;Sperrdisziplin;552
7.2.2.2;Verklemmungen;553
7.2.2.3;Livelock-Problem;554
7.2.3;Sperrprotokolle;555
7.2.3.1;Notwendigkeit von Sperrprotokollen;555
7.2.3.2;Zwei-Phasen-Sperrprotokoll;556
7.2.3.3;Striktes und strenges Zwei-Phasen-Sperrprotokoll;558
7.2.3.4;Aggressive und konservative Protokolle;558
7.2.4;Sperrgranulate;559
7.2.4.1;Hierarchisches Sperren;560
7.2.4.2;Prädikatsperren;564
7.2.4.3;Baumprotokolle für Sperren in Indexstrukturen;565
7.2.5;Nichtsperrende Verfahren zur Synchronisation;569
7.2.5.1;Zeitmarkenverfahren;570
7.2.5.2;Serialisierbarkeitsgraphentester;573
7.2.5.3;Optimistische Verfahren;574
7.2.6;Mehrversionen-Synchronisation;577
7.2.6.1;Begrenzung der Anzahl der Versionen;577
7.2.6.2;Synchronisation von MV-Schedules;579
7.2.7;Commit-Protokolle;584
7.2.7.1;Verteiltes Commit;584
7.2.7.2;Das Zwei-Phasen-Commit-Protokoll;585
7.2.7.3;Lineares 2PC;588
7.2.7.4;Verteiltes 2PC;590
7.2.7.5;Hierarchisches 2PC;591
7.2.7.6;Das Drei-Phasen-Commit-Protokoll;592
7.2.8;Transaktionen in SQL-DBMS;595
7.2.8.1;Aufweichung von ACID in SQL-92: Isolationsebenen;595
7.2.8.2;Explizite Sperren in SQL;597
7.2.9;Vertiefende Literatur;599
7.2.10;Übungen;599
7.3;Wiederherstellung und Datensicherung;601
7.3.1;Beteiligte Systemkomponenten;602
7.3.2;Fehlerklassifikation und Recovery-Klassen;604
7.3.2.1;Fehlerklassifikation;604
7.3.2.2;Fehlerkategorien und zugehörige Recovery-Maßnahmen;607
7.3.3;Protokollierungsarten;608
7.3.3.1;Aufbau des Logbuchs;608
7.3.3.2;Physisches vs. logisches Logbuch;611
7.3.3.3;Sicherungspunkte;615
7.3.4;Recovery-Strategien;619
7.3.4.1;Seitenersetzungsstrategien;619
7.3.4.2;Propagierungsstrategien;620
7.3.4.3;Einbringstrategien;621
7.3.4.4;Konkrete Recovery-Strategien;622
7.3.4.5;Wiederanlauf nach einem Fehlerfall;624
7.3.4.6;Das Redo-Protokoll als konkrete Realisierung;625
7.3.4.7;Abbrüche im Recovery-Prozess;626
7.3.5;Das ARIES-Verfahren;627
7.3.5.1;Vorgehensweise in ARIES;627
7.3.5.2;Grundprinzipien und Datenstrukturen;628
7.3.5.3;Phasen des Wiederanlaufs;629
7.3.6;Schattenspeicherverfahren;631
7.3.7;Backup-Strategien und Archivierung;633
7.3.7.1;Backups und Archivierung;634
7.3.7.2;Spiegelung von Datenbanken;636
7.3.8;Vertiefende Literatur;636
7.3.9;Übungen;637
8;IV Aktuelle Entwicklungen;639
8.1;Moderne Datenbanksystem-Architekturen;641
8.1.1;Alternative Speichermodelle: DSM und PAX;642
8.1.2;Kompression von Daten;645
8.1.3;Multicore- und Spezialprozessoren;652
8.1.3.1;Hashverbunde für Multicore-Systeme;653
8.1.3.2;GPGPU-Beschleunigung von Datenbankoperationen;655
8.1.4;Alternative transaktionale Garantien;658
8.1.4.1;Von ACID zu BASE;659
8.1.4.2;Das CAP-Theorem;660
8.1.4.3;Abgeschwächte Konsistenzmodelle;662
8.1.5;Vertiefende Literatur;664
8.2;Laufendes Beispiel;667
8.3;Abbildungsverzeichnis;671
8.4;Tabellenverzeichnis;680
8.5;Liste der Codefragmente;683
8.6;Sachindex;685
8.7;Literaturverzeichnis;699




