6 Verteilte Anfragebearbeitung
Übungsaufgaben
Die Aufgaben beziehen sich auf folgende Relationen:
- PERSONAL (PNR, PNAME, BERUF, GEHALT)
- PROJEKT (PRONR, PRONAME, PROBUDGET)
- PMITARBEIT (PNR, PRONR, DAUER).
Aufgabe 6-1: Normalisierung
- Bestimmen Sie für die Qualifikationsbedingung der folgenden Anfrage die konjunktive und disjunktive Normalform:
- SELECT * FROM PERSONAL
WHERE (PNAME LIKE "M%" AND BERUF = "Techniker") OR
((PNR > 550 OR BERUF="Programmierer") AND GEHALT < 80000)
- (Lösung Aufgabe 6-1:)
Aufgabe 6-2: Vereinfachung
- Vereinfachen Sie die Qualifikationsbedingung der folgenden Anfrage durch Anwendung der Idempotenzregeln:
- SELECT * FROM PERSONAL
WHERE PNR > 456 AND
NOT (BERUF = "Techniker" OR GEHALT < 50000) AND
BERUF "Techniker" AND GEHALT < 50000
- (Lösung Aufgabe 6-2:)
Aufgabe 6-3: Operatorbaum und Rekonstruktion
- Führen Sie die Anfragetransformation für folgende Query durch:
- SELECT PNAME, PRONAME
FROM PERSONAL P, PROJEKT PT, PMITARBEIT PM
WHERE DAUER > 10 AND P.PNR=PM.PNR AND
BERUF="Programmierer" AND PT.PRONR=PM.PRONR.
- Bestimmen Sie den Operatorbaum und führen darauf Vereinfachungen und Restrukturierungen zur algebraischen Optimierung durch.
- (Lösung Aufgabe 6-3:)
Aufgabe 6-4: Daten-Lokalisierung (abgeleitete Fragmentierung)
- Gegeben sei folgende horizontale Fragmentierung von Relation PROJEKT:
- PROJEKT1 = PROBUDGET < 100000 (PROJEKT)
PROJEKT2 = 100000 PROBUDGET 800000 (PROJEKT)
PROJEKT3 = PROBUDGET > 800000 (PROJEKT).
- Für PMITARBEIT liege eine abhängige horizontale Fragmentierung vor:
- PMITARBEIT1 = PMITARBEIT PROJEKT1
PMITARBEIT2 = PMITARBEIT PROJEKT2
PMITARBEIT3 = PMITARBEIT PROJEKT3.
- Bestimmen Sie für die Anfrage
- SELECT PNR
FROM PROJEKT PT, PMITARBEIT PM
WHERE DAUER > 10 AND PROBUDGET > 1000000
AND PT.PRONR=PM.PRONR
- zunächst den initialen Fragment-Ausdruck. Nehmen Sie algebraische Optimierungen zur weitestgehenden Reduzierung des Ausdrucks vor. (Lösung Aufgabe 6-4:)
Aufgabe 6-5: Daten-Lokalisierung (hybride Fragmentierung)
- Relation PERSONAL sei folgendermaßen fragmentiert:
- PERSONAL1 = PNR, PNAME (PNR < 20000 (PERSONAL))
PERSONAL2 = PNR, BERUF, GEHALT (PNR < 20000 (PERSONAL))
PERSONAL3 = PNR 20000 (PERSONAL).
- Bestimmen Sie für die Anfrage
- SELECT PNAME
FROM PERSONAL
WHERE PNR=4711
- zunächst den initialen Fragment-Ausdruck. Nehmen Sie algebraische Optimierungen zur weitestgehenden Reduzierung des Ausdrucks vor. (Lösung Aufgabe 6-5:)
Aufgabe 6-6: Einfache Join-Strategien
- Sei Card (R) = 10000, Card (S) = 1000, JSF (RS) = 0.001. Jede Relation soll 5 Attribute umfassen. Welche Kommunikationskosten ergeben sich für "Ship Whole" bzw. "Fetch as needed" bei Join-Ausführung an KR bzw. an KS ? (Lösung Aufgabe 6-6:)
Aufgabe 6-7: Ship-Whole vs. Semi-Join vs. Bitvektor-Join
- Auf den Relationen PERSONAL und PMITARBEIT sei folgende Join-Query zu bearbeiten:
- SELECT P.PNR, PNAME, BERUF, PRONR, DAUER
FROM PERSONAL P, PMITARBEIT PM
WHERE P.PNR=PM.PNR AND P.GEHALT > 60000
- Es gelte Card (PERSONAL) = 1000, Card (PMITARBEIT) = 1500; beide Relationen seien an verschiedenen Knoten gespeichert. Die Anfrage soll an einem dritten Knoten K initiiert werden; das Ergebnis ist dort auch auszugeben. Die Gehaltsbedingung soll von 20% der Angestellten erfüllt werden (SF=0.2); 25% der Angestellten sollen in keinem Projekt mitarbeiten.
- Bestimmen Sie die Kommunikationskosten (#Nachrichten, #AW) für folgende Join-Strategien:
-
- Ship-Whole; Join-Berechnung an Knoten KPMITARBEIT
- Ship-Whole; Join-Berechnung an Knoten K
- Semi-Join; Join-Bestimmung an Knoten KPERSONAL
- Semi-Join; Join-Berechnung an Knoten K
- Bitvektor-Join; Join-Berechnung an Knoten K
- Vor der Übertragung sollen alle anwendbaren Selektionen und Projektionen durchgeführt werden. Die Länge des Bitvektors soll 5 Attributwerten entsprechen; durch Anwendung des Bitvektors soll sich die zurückzuliefernde Tupelanzahl um 5% erhöhen. (Lösung Aufgabe 6-7:)
Aufgabe 6-8: Semi-Join-Berechnung
- Wie kann der Übertragungsumfang der in Kap. 6.5.2 vorgestellten Strategie mit zwei Semi-Joins und Join-Berechnung an Knoten K verbessert werden? Hinweis: Reduzieren Sie die Anzahl der Join-Attributwerte, die zwischen den Datenknoten KR und KS verschickt werden.
- a) Geben Sie alle Einzelschritte an.
- b) Wie reduziert sich der Übertragungsumfang für Beispiel 6-10.
- (Lösung Aufgabe 6-8:)
Aufgabe 6-9: Mehr-Wege-Join
- Bestimmen Sie für folgende Query
- SELECT *
FROM PERSONAL P, PROJEKT PT, PMITARBEIT PM
WHERE P.PNR=PM.PNR AND PT.PRONR=PM.PRONR
AND BERUF="Programmierer".
- die Kommunikationskosten für Ship-Whole und Semi-Join-Berechnung mit vollständiger Reduzierung. Jede der drei Relationen sei an einem separaten Knoten gespeichert. Ferner sei Card (PERSONAL) = 1000, Card (PMITARBEIT) = 1500; Card (PROJEKT) = 200. Die Anfrage soll an Knoten KPERSONAL initiiert werden; das Ergebnis ist dort auch auszugeben. Die Berufsbedingung soll von 10% der Angestellten erfüllt werden (SF=0.1); 25% der Angestellten sollen in keinem Projekt mitarbeiten. (Lösung Aufgabe 6-9:)