E-Book, Deutsch, 736 Seiten
Reihe: mitp Professional
Saake / Sattler Datenbanken
4. Auflage 2019
ISBN: 978-3-95845-780-5
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 0 - No protection
Implementierungstechniken
E-Book, Deutsch, 736 Seiten
Reihe: mitp Professional
ISBN: 978-3-95845-780-5
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 0 - No protection
Architekturprinzipien und Datenstrukturen moderner Datenbanksysteme
Algorithmen und optimierte Anfragen für Datenbankoperationen
Transaktionsmodelle sowie Transaktionsverwaltung im Mehrbenutzerbetrieb
Datenbankmanagementsysteme (DBMS) bilden häufig die Kernkomponente von Informationssystemen und ermöglichen die integrierte Speicherung von großen Datenbeständen, auf die mehrere Anwendungen gleichzeitig zugreifen können. Bei der Implementierung dieser Systeme müssen einige Anforderungen berücksichtigt werden:
Effiziente Speicherung und schnelles Wiederauffinden der Daten
Datenunabhängigkeit
Zuverlässiger Mehrbenutzerbetrieb
Wiederherstellung der Daten nach Systemausfällen
Kompatibilität zu verschiedenen Rechnerarchitekturen
Die Autoren behandeln die wichtigsten Konzepte und Techniken der Implementierung von DBMS, wobei der Schwerpunkt auf den Konzepten und Basistechnologien kommerzieller, meist relationaler Datenbanksysteme liegt: Architektur, Datenorganisation, Anfragebearbeitung, Synchronisation im Mehrbenutzerbetrieb und Recovery.
Darüber hinaus gehen die Autoren auch auf aktuelle Entwicklungen bei Speichermedien, alternativen Speichermodellen, der Bearbeitung von Data-Warehouse-Anfragen, Anfrageoptimierern und Transaktionsmodellen ein. Angaben zu vertiefender Literatur sowie Übungen am Ende der Kapitel helfen beim Vertiefen des Gelernten sowie bei Selbststudium und Prüfungsvorbereitung.
Zum Verständnis des Buches sind Grundkenntnisse der theoretischen Grundlagen von DBMS wie Relationenalgebra sowie Basiskenntnisse in SQL notwendig.
Aus dem Inhalt:
Externspeicher- und Pufferverwaltung
Speicherhierarchie und -medien
Seiten, Datensätze und ihre Adressierung
Row Stores und Column Stores
Seitenersetzungsstrategien
Dateiorganisation und Indexstrukturen
B-Bäume
Partitionierung
Dynamisches Hashing
Mehrdimensionale und geometrische Indexstrukturen
Bitmap-Indexe
Anfrageverarbeitung und -optimierung
Anfrageoperatoren
Logische und physische Optimierung
Kostenmodelle und Statistiken in DBMS
Transaktionsverwaltung und Recovery
Serialisierbarkeit
Sperrprotokolle und nichtsperrende Verfahren
Commit-Protokolle
Logging und Recovery-Strategien
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