Skip to main content
main-content

Über dieses Buch

Das Buch vermittelt umfassende Grundlagen moderner Techniken des verteilten und parallelen Datenmanagements, die das Fundament moderner Informationssysteme bilden. Ausgehend von einer Betrachtung der Architekturvarianten, die sich aus verteilten sowie parallelen Hardwareinfrastrukturen ergeben, werden die Bereiche Datenverteilung, Anfrageverarbeitung sowie Konsistenzsicherung behandelt. Hierbei werden jeweils Verfahren und Techniken für klassische verteilte, parallele sowie moderne massiv-verteilte bzw. massiv-parallele Architekturen vorgestellt und hinsichtlich ihrer Eigenschaften diskutiert. Damit schlagen die Autoren die Brücke zwischen klassischen Verfahren und aktuellen Entwicklungen im Cloud- und Big Data-Umfeld.

Inhaltsverzeichnis

Frontmatter

Einführung

Frontmatter

1. Einleitung

Zusammenfassung
Die Anforderungen zur Verarbeitung und Auswertung großer Datenbestände können zunehmend nicht mehr von zentralisierten Datenbanksystemen erfüllt werden. Somit werden verteilte und parallele Ansätze zur Datenbankverarbeitung benötigt, deren Behandlung den Schwerpunkt dieses Buches darstellt. Wir werden daneben auch aktuelle Ansätze allgemeinerer Datenmanagementsysteme (DMS), z.B. sogenannter {NoSQL-Systeme}, berücksichtigen, welche vorrangig im Web-Umfeld zur Unterstützung einer hohen Skalierbarkeit (Big Data) entwickelt wurden. Das Buch behandelt somit nicht nur parallele und verteilte Datenbanksysteme, sondern allgemeinere parallele und verteilte DMS. Der Betrieb dieser Systeme kann entweder in den Unternehmen und Einrichtungen erfolgen, in denen die Daten anfallen und verarbeitet werden, oder aber innerhalb von über das Internet erreichbaren Cloud-Plattformen.
In diesem einleitenden Kapitel sollen zunächst die Beschränkungen zentralisierter Datenbanksysteme diskutiert und einige Vertreter von parallelen und verteilten DMS kurz vorgestellt werden. Weiterhin werden detailliert die Anforderungen an parallele und verteilte DMS diskutiert. Abschließend werden noch grundlegende Maße zur Bewertung der parallelen Datenverarbeitung, Speedup und Scaleup, sowie die sogenannten Gesetze von Amdahl und Gustafson vorgestellt.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

2. Grundlagen zu Datenbanken und verteilten Systemen

Zusammenfassung
Dieses Kapitel behandelt kurz Grundlagen zu Datenbanksystemen und Rechnernetzen bzw. verteilten Systemen, die für das weitere Verständnis des Buchs benötigt werden. Das im größten Teil dieses Buchs unterstellte Datenmodell ist das relationale Datenmodell, da die relationale Datenbanktechnologie weiterhin die in der Praxis dominierende Form des Datenmanagements darstellt. Jedoch sind viele Prinzipien der verteilten und parallelen Datenbankverarbeitung auch auf nicht-relationale Systemansätze wie NoSQL-Systeme übertragbar.
Wir diskutieren zunächst Grundlagen des relationales Datenmodells und seiner Operationen. Es folgt die Beschreibung des internen Aufbaus von Datenbanksystemen (DBS) sowie der zur Transaktionsverwaltung benötigten Funktionen. Nach einer Diskussion wesentlicher DBS-Einsatzformen (OLTP, OLAP) wenden wir uns sogenannten NoSQL-Systemen zu, die zunehmend Verbreitung finden und meist eine verteilte Datenverwaltung unterstützen. Abschließend diskutieren wir noch Grundlagen von Rechnernetzen, die für das weitere Verständnis hilfreich sind.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

3. Architekturen für verteiltes und paralleles Datenmanagement

Zusammenfassung
Zur verteilten und parallelen Datenverwaltung besteht ein breites Spektrum an Architekturen, um den unterschiedlichen Anforderungen wie Skalierbarkeit, Verfügbarkeit, Knotenautonomie u.a. gerecht zu werden. Die wenig einschränkende Randbedingung ist dabei nur, dass die Datenverwaltung kooperativ auf mehreren Prozessoren und Rechnerknoten durchgeführt wird, was bereits bei einem Server mit mehreren Prozessoren bzw. Cores der Fall ist. Wir wollen in diesem Kapitel die wesentlichen Architekturklassen mit ihren Eigenschaften und Varianten unterscheiden, deren Realisierungskonzepte dann in den nachfolgenden Kapiteln vertieft werden.
Bevor wir auf die einzelnen Architekturen eingehen, diskutieren wir zunächst welche Arten der Parallelverarbeitung zu unterscheiden und nach Möglichkeit zu unterstützen sind. Danach stellen wir die Klassifikationskriterien vor, anhand der wir die verschiedenen Architekturen einordnen und charakterisieren. Ausführlich diskutieren wir dann die drei grundlegenden Architekturen für Parallele DBS: Shared Everything, Shared Disk und Shared Nothing. Im Anschluss werden noch Architekturen mit funktional spezialisierten Prozessoren (u.a. Client/Server-DBS und Optionen zur Hardware-Unterstützung) sowie Alternativen zur Unterstützung heterogener Datenbanken behandelt. Weiterhin führen wir in die Shared-Nothing-Plattform Hadoop ein, die zur Analyse großer Datenmengen (Big Data) breite Anwendung findet. Abschließend nehmen wir einen Vergleich der Architekturen hinsichtlich der Anforderungen aus dem einleitenden Kapitel dieses Buchs vor.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

Katalogverwaltung und Datenverteilung

Frontmatter

4. Schemaarchitektur und Katalogverwaltung

Zusammenfassung
Das Schema einer verteilten Datenbank beschreibt, welche Daten wie strukturiert an welchem Ort gespeichert sind. In diesem Kapitel werden Varianten diskutiert, wie die Schemainformationen (die Metadaten) verteilt organisiert und verwaltet werden können. Im ortsverteilten Fall ist dabei eine möglichst hohe Knotenautonomie der beteiligten Standorte zu erhalten. Ein spezieller Punkt betrifft die Vergabe und Verwaltung von global eindeutigen Namen für Datenobjekte.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

5. Grundlagen der Datenverteilung

Zusammenfassung
Der Einsatz eines Verteilten Datenbanksystems bzw. von Shared-Nothing-Systemen generell verlangt die Festlegung einer physischen Aufteilung des Datenbestandes. Die Bestimmung der Datenverteilung ist dabei für die Leistungsfähigkeit des Systems von fundamentaler Bedeutung, da sie zu einem großen Teil den Kommunikationsaufwand zur DB-Verarbeitung bestimmt. Zur Festlegung einer Datenverteilung gilt es zu entscheiden, wie die Objekte auf die einzelnen Rechner verteilt werden. Diese Aufgabe läßt sich in zwei Teilprobleme untergliedern: Fragmentierung und Allokation. Im Rahmen der Fragmentierung werden dabei zunächst die Einheiten der Datenverteilung (Fragmente) festgelegt. In relationalen Datenbanken kommen hierzu vor allem horizontale und vertikale Fragmentierungen in Betracht, die eine Relation zeilen- bzw. spaltenweise in Teilrelationen zerlegen. Die Allokation (Ortszuweisung) bestimmt danach, welchem Rechner jedes der Fragmente zugeordnet wird, wobei eine replizierte Allokation von Fragmenten möglich ist.
In dem Kapitel stellen wir zunächst ausführlich Anforderungen sowie wesentliche Alternativen zur Fragmentierung vor. Danach diskutieren wir die Aufgabe der Allokation von Fragmenten und Aspekte der Replikation. Abschließend besprechen wir Vorschläge zur Bestimmung der Datenverteilung in Verteilten DBS.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

6. Datenverteilung in Parallelen DBS

Zusammenfassung
Voraussetzung für die parallele Verarbeitung von Anfragen und die Nutzung von Datenparallelität in Parallelen Datenbanksystemen ist eine geeignete Datenverteilung, sodass mehrere Prozesse auf disjunkten Datenbereichen parallel arbeiten können. Während in Shared-Everything- und in Shared-Disk-Systemen lediglich eine Verteilung der Daten über mehrere Platten bzw. Externspeicher zu finden ist, erfordert Shared Nothing zugleich eine Verteilung der Daten unter den Verarbeitungsrechnern. Die Datenverteilung hat in dieser Architektur daher auch direkten Einfluss auf den Kommunikations-Overhead und ist daher von besonderer Bedeutung für die Leistungsfähigkeit.
Wir konzentrieren uns daher weitgehend auf die Bestimmung der Datenverteilung für Shared Nothing, die ähnlich wie für Verteilte DBS die Schritte der Fragmentierung und Allokation erfordert. Um jedoch eine effektive Parallelisierung erreichen zu können, sind diese Aufgaben enger aufeinander abzustimmen. Insbesondere empfiehlt sich vor der Fragmentierung bereits die Festlegung des Verteilgrades einer Relation. Bei der Vorstellung der Teilschritte gehen wir besonders ausführlich auf Varianten einer horizontalen Fragmentierung ein, wobei auch mehrdimensionale bzw. mehrstufige Ansätze behandelt werden. Danach stellen wir noch drei für Shared Nothing einsetzbare Verfahren zur Datenallokation mit replizierter Zuordnung der Daten vor. Im Anschluss besprechen wir die Datenverteilung für Shared Everything und Shared Disk. Am Ende des Kapitels gehen wir auf die Datenverteilung in NoSQL-Systemen ein.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

Anfrageverarbeitung

Frontmatter

7. Grundlagen der Anfrageverarbeitung

Zusammenfassung
Für ein Verständnis der Verarbeitung von Anfragen in einem Datenbanksystem ist es notwendig, sich den gesamten Ablauf vom Eintreffen einer Anfrage über die Planung und Optimierung der Anfrage bis hin zur Bereitstellung der Ergebnisdaten zu verdeutlichen. Ausgehend von einer Beschreibung dieser Phasen der Anfrageverarbeitung diskutieren wir in diesem Kapitel zunächst die Realisierung von Basisoperatoren wie Scans, Sortierung und Verbundberechnung. Weiterhin erläutern wir die Grundlagen der Optimierung von Anfragen - die Auswahl des optimalen Ausführungsplan aus der Menge äquivalenter Pläne - und gehen dazu auch auf Verfahren zur Abschätzung der Ausführungskosten sowie die dafür benötigten Kostenmodelle ein. Die in diesem Kapitel beschriebenen Techniken zur Anfrageübersetzung und -optimierung sind Standardstoff in Lehrbüchern zur Datenbankimplementierung und können dort ausführlicher nachgelesen werden.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

8. Verteilte Anfrageverarbeitung

Zusammenfassung
Verteilte Anfrageverarbeitung unterscheidet sich in mehreren Aspekten von der Anfrageverarbeitung in einfachen DBMS. Hierzu betrachten wir ein erweitertes Phasenmodell für die verteilte Verarbeitung. Darauf aufbauend diskutieren wir zunächst die Probleme der Datenlokalisierung und der Anfragezerlegung für die verschiedenen Fragmentierungsstrategien. Anschließend behandeln wir Erweiterungen des Kostenmodells für verteilte Anfrageauswertung. Einen weiteren Schwerpunkt bilden verteilte Strategien für die Berechnung von Verbunden sowie die Optimierung von Mehr-Wege-Verbunden.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

9. Parallele Anfrageverarbeitung

Zusammenfassung
In Kap. 3 haben wir bereits die verschiedenen Arten der Parallelverarbeitung von Datenbankoperationen vorgestellt und dabei die Kriterien Parallelität innerhalb bzw. zwischen Verarbeitungseinheiten, Daten- vs. Pipelineparallelität sowie Verarbeitungs- vs. E/A-Parallelität diskutiert. Für die Parallelisierung von Anfragen hat darüber hinaus die Systemarchitektur in Form der bereits eingeführten Shared-*-Architekturen eine große Bedeutung: Parallele DBMS für Multicore- oder Multiprozessorsysteme erfordern als Shared-Memory-Variante andere Verfahren als etwa Multiserverlösungen, die als Shared-Disk- oder Shared-Nothing-Variante realisiert sein können. In diesem Kapitel werden wir die sich daraus ergebenden parallelen Realisierungsmöglichkeiten für Anfrageoperatoren wie Aggregation, Sortierung und Verbunde vorstellen sowie Fragen der Planauswahl und Optimierung diskutieren.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

10. Parallele Analyse großer Datenmengen mit MapReduce

Zusammenfassung
MapReduce ist ein von Google entwickeltes Programmiermodell für die datenparallele Verarbeitung riesiger Datenmengen in Clustern. Aufgrund seiner Einfachheit, hohen Flexibilität und der Möglichkeit, auf vergleichsweise einfache Weise hochparallele Datenverarbeitungs- und Analyseprogramme zu schreiben, hat das MapReduce-Modell in kurzer Zeit eine weite Verbreitung gefunden. Nachdem wir in Kap. 3 bereits am Beispiel von Hadoop auf Architekturaspekte von MapReduce-Systemen eingegangen sind, wollen wir in diesem Kapitel die Techniken zur parallelen Datenverarbeitung mit dem MapReduce-Paradigma vorstellen. Neben dem Grundprinzip und dessen Umsetzung in Hadoop erläutern wir insbesondere die Realisierung von klassischen Datenbankoperationen mit MapReduce. Weiterhin stellen wir auf MapReduce aufbauende Ansätze wie die Datenflusssprache Pig Latin sowie aktuelle Erweiterungen wie Apache Spark vor.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

Konsistenzsicherung

Frontmatter

11. Verteilte Transaktionsausführungen

Zusammenfassung
In verteilten Datenbanken ergibt sich eine Reihe von neuen Fragestellungen bei der Verarbeitung von Transaktionen nach dem ACID-Prinzip. Eine Transaktion, die auf mehreren Konten unterschiedliche Änderungen initiiert, muss durch eine strukturierte Transaktion mit lokalen Subtransaktionen realisiert werden. Der erste Abschnitt dieses Kapitels diskutiert die Struktur und Ausführung derartiger verteilter Transaktionen. In verteilten Systemen existiert keine echte Gleichzeitigkeit - das atomare Commit muss daher im Konsens mehrerer Subtransaktionen gefunden werden. Hierzu werden Commit-Protokolle wie das Zwei-Phasen-Commit oder auf dem Paxos-Konsens basierende Protokolle vorgestellt. Das Kapitel schliesst mit der Diskussion spezieller Anforderungen an das Recovery und erweiterter Transaktionsmodelle für verteilte Transaktionen.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

12. Synchronisationsverfahren

Zusammenfassung
Wir führen zunächst einige Grundlagen zur Synchronisation von Transaktionen ein, so die zu vermeidenden Mehrbenutzeranomalien sowie das Korrektheitskriterium der Serialisierbarkeit. Es folgt die Behandlung der wichtigsten Synchronisationstechniken (Sperrverfahren, Zeitstempelansätze und optimistische Verfahren), wobei meist zunächst kurz die Realisierung in zentralisierten Datenbanksystemen besprochen wird bevor die Alternativen zur Realisierung in Verteilten DBS vorgestellt werden. Danach gehen wir auf die Realisierung einer Mehrversionen-Synchronisation ein, mit der das Ausmaß an Synchronisationskonflikten zwischen Transaktionen stark reduziert werden kann und die in derzeitigen Datenmanagementsystemen zunehmend an Bedeutung gewinnt. Abschließend werden die wichtigsten Alternativen zur Behandlung globaler Deadlocks vorgestellt.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

13. Replikation

Zusammenfassung
Replikation bedeutet im Bereich der Datenbanken die kontrollierte, mehrfache Speicherung von Teilen des Datenbestandes. Während im logischen Entwurf mehrfache Speicherung unter dem Gesichtspunkt der Redundanz und der mit ihr verbundenen Probleme vorwiegend negativ gesehen wird, kann eine kontrollierte, interne Redundanz gerade in verteilten Szenarien sowohl die Performanz als auch die Zuverlässigkeit von Systemen erhöhen. Die Unterstützung der Replikation von Datenbeständen kann durch unterschiedliche Verfahren gewährleistet werden. Wir beginnen mit den allgemeinen Prinzipien der Replikation. Anschliessend diskutieren wir dann die Freiheitsgrade bei der Wahl der Replikationsunterstützung. Anschliessend stellen wir die drei wichtige Verfahrensklassen zur Aktualisierung von und Synchronisation auf replizierten Datenbanken vor: sogenannte Write-All-Ansätze, Primary-Copy-Verfahren sowie Voting-Ansätze. Danach gehen wir noch auf speziellere Ansätze zur Unterstützung replizierter Datenbanken ein, insbesondere auf den Einsatz von sogenannten DB-Schnappschüssen zur Definition von Replikaten und die Nutzung einer DB-Kopie zum Katastrophen-Recovery. Geo-Replikation betrifft den Sonderfall, dass bewusst geographisch weit verteilte Knoten für Replikate gewählt werden, und wird in einem eigenen Unterabschnitt behandelt.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

14. Transaktionsverarbeitung für Shared Disk

Zusammenfassung
Shared Disk bezeichnet einen allgemeinen Architekturtyp von Parallelen DBS, bei denen alle Rechner und ihre DBMS-Instanzen gemeinsamen Zugriff auf die Externspeicher und die dort gespeicherte Datenbank besitzen. Die Rechner sind dabei lokal angeordnet und in der Regel lose gekoppelt; möglich ist jedoch auch eine nahe Kopplung. In diesem Kapitel diskutieren wir zunächst kurz Merkmale solcher Shared-Disk-DBS und zu lösende technische Probleme. Danach gehen wir auf einzelne Lösungsansätze zur Transaktionsverarbeitung im Detail ein, insbesondere zur Synchronisation, Kohärenzkontrolle (Erkennung bzw. Vermeidung von invalidierten Daten, Austausch von Änderungen) sowie für Logging und Recovery. Zudem stellen wir Einsatzmöglichkeiten einer nahen Kopplung vor, wie sie u.a. für IBM Parallel Sysplex Verwendung findet.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

15. Konsistenz in Cloud-Datenbanken

Zusammenfassung
Die bisher diskutierten Verfahren zur Konsistenzsicherung in Verteilten Datenbanksystemen zielen auf strikte Konsistenz, also kurz gefasst auf die Gewährleistung der ACID-Eigenschaften unter allen Umständen. Derartige Verfahren skalieren jedoch oft nur eingeschränkt und begrenzen die Leistungsfähigkeit der betroffenen Systeme. Daher wurden und werden gerade in Cloud-Anwendungen abgeschwächte Konsistenzforderungen und zugehörige Verfahren diskutiert, die besser skalieren, aber Einschränkungen in der Konsistenz bedeuten. Der erste Abschnitt dieses Kapitels motiviert und detailliert den Einsatz abgeschwächter Konsistenzforderungen in Cloud-Szenarien. Replikationstechniken, die durch derartige abgeschwächte Konsistenzforderungen ermöglicht werden, werden danach behandelt. Abschließend wird die Realisierung derartiger Verfahren in kommerziellen Cloud-Datenbanken thematisiert.
Erhard Rahm, Gunter Saake, Kai-Uwe Sattler

Backmatter

Weitere Informationen

Premium Partner

    Bildnachweise