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:

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:)