Mehrrechner-Datenbanksysteme

6 Verteilte Anfragebearbeitung

Aufgabe der Anfragebearbeitung (Query Processing) ist es, für abzuarbeitende DB-Operationen möglichst effiziente Ausführungspläne zu erstellen und diese auszuführen. Für den DB-Benutzer hat die Verwendung eines Verteilten DBS keine Auswirkungen; er formuliert seine Anfragen (Queries) bzw. Änderungsoperationen wie im zentralen Fall mit einer deskriptiven Anfragesprache wie SQL unter Bezugnahme auf die logischen DB-Objekte des globalen konzeptionellen Schemas (GKS). Dagegen ist die physische Verteilung der Daten natürlich bei der Anfragebearbeitung eines Verteilten DBS zu berücksichtigen, um die benötigten Objekte referenzieren zu können. Die Ausführung von DB-Operationen muß damit auf die vorliegende Fragmentierung und Allokation der Daten abgestimmt werden. Zur Erstellung eines kostengünstigen Ausführungsplanes (Query-Optimierung) sind vor allem die durch Kommunikationsvorgänge eingeführten Kosten zusätzlich zu berücksichtigen. Weiterhin ergeben sich neue Optimierungsmöglichkeiten aufgrund replizierter Speicherung von Objekten sowie der Möglichkeit zur Parallelisierung. Diese Faktoren führen zu einer erheblichen Komplexitätssteigerung der Anfragebearbeitung im verteilten Fall. Die Qualität des Query-Optimierers ist von entscheidender Qualität für die Leistungsfähigkeit eines Verteilten Datenbanksystems. Es ist keine Seltenheit, daß die Kosten verschiedener (funktional gleichwertiger) Ausführungspläne um mehrere Größenordnungen auseinanderliegen.

Im folgenden geben wir zunächst einen Überblick über die wichtigsten Schritte bei der verteilten Anfragebearbeitung. In den drei anschließenden Teilkapiteln werden die wichtigsten Phasen genauer vorgestellt: Anfragetransformation (Kap. 6.2), die Erzeugung sogenannter Fragment-Ausdrücke (Kap. 6.3) sowie die globale Query-Optimierung (Kap. 6.4). Abschließend stellen wir dann einzelne Algorithmen zur verteilten Join-Berechnung vor (Kap. 6.5).

6.1 - Überblick
6.2 - Anfragetransformation
6.3 - Erzeugung von Fragment-Anfragen
6.4 - Globale Query-Optimierung
6.5 - Bearbeitung von Join-Anfragen
Übungsaufgaben