Aufgaben zur Klausur vom 8.7.2002

Werbung
Klausur zur Vorlesung Architektur und Implementierung von Datenbanksystemen im
Sommersemester 2002
Aufgaben zur Klausur vom 8.7.2002
Hinweis: Die Bearbeitungszeit beträgt 60 Minuten. Bitte benutzen Sie die ausgeteilten
Blätter zur Abgabe Ihrer Lösung. Bitte schreiben Sie leserlich, kennzeichnen Sie eindeutig
Ihre Lösungsvorschläge und streichen Sie Irrwege oder Zwischenrechnungen durch. Die
Klausur umfasst 4 Aufgaben. Die erreichbare Höchstpunktezahl ist 40 Punkte; mit 17
Punkten ist die Klausur gerade noch bestanden. Falls Sie Ihre Note über die Webpage
erfahren möchten, unterschreiben Sie bitte die beigelegte Erklärung. Ansonsten
erfahren Sie Ihre Note bei der Klausureinsicht.
Aufgabe 1: B Bäume (4 Punkte)
In vielen Anwendungen werden Schlüssel sortiert in einen B Baum eingefügt. Ein
prominentes Beispiel ist eine Auftragsverwaltung, bei der die Auftragsnummern aufsteigend
vergeben werden und somit sortiert in einen B Baum für die Auftragsnummer eingefügt
werden. Bekanntlich ist ein solches sortiertes Einfügen der schlechteste Fall für den B Baum;
die Knoten des B Baums sind nur zur Hälfte gefüllt. Wie kann man die Algorithmen des
Standard B Baumes anpassen, damit sie besonders gut in einem solchen Szenario
funktionieren?
Aufgabe 2: R Baum für Intervalle (12 Punkte)
Bauen Sie sukzessive einen R Baum für die folgenden fünf Zeitintervalle. Der R Baum hat
eine Knotenkapazität von 2 und verlangt eine minimale Belegung aller Knoten von 1:
[1,3]; [3,5]; [2,3]; [1,1]; [1,2]
a.) Zeichnen Sie die fünf R Bäume, die jeweils nach dem Einfügen eines Intervalls
entstehen.
b.) Nummerieren Sie die Knoten ihres letzten R Baumes (mit allen fünf Intervallen) und
geben Sie die Folge der Knoten an, die besucht wird, um nach allen Intervallen zu
suchen, die das Intervall [1,2] umfassen.
Aufgabe 3: Transaktionsverwaltung (12 Punkte)
Gegeben sei die folgende Historie von zwei parallel laufenden Transaktionen. Eine weiter
links aufgeführte Operation wird vor einer weiter rechts aufgeführten Operation ausgeführt;
z.B. wird R(x) von Transaktion T1 vor dem R(x) von Transaktion T2 ausgeführt. R(x)
bezeichnet das Lesen von Datum x; W(x) bezeichnet das Schreiben von Datum x.
T1:
T2:
R(x)
W(x)
R(x)
commit
R(y)
commit
a.) Gibt es bei dieser Historie Isolationsprobleme? D.h. ist die Historie serialisierbar?
Wenn ja, wie sieht eine äquivalente serielle Historie aus? Wenn nein, wieso nicht?
b.) Ist eine solche Historie in einem Datenbanksystem, das ein (einfaches) zwei Phasen
Sperrprotokoll verwendet, möglich? Wenn ja, beschreiben Sie, wann genau, welche
Sperren von den beiden Transaktionen angefordert und freigegeben werden müssten.
Wenn nein, erklären Sie ganz kurz, wieso nicht.
c.) Ist eine solche Historie in einem Datenbanksystem, das ein optimistisches Verfahren
(BOCC) zur Synchronisation verwendet, möglich? Geben Sie die Tests an, die beim
commit von T2 und T1 durchgeführt werden.
Aufgabe 4: Anfrageoptimierung (12 Punkte)
Gegeben sei die folgende SQL Anfrage
SELECT *
FROM
R, S, T
WHERE R.a = S.b AND R.a = T.c AND S.b = T.c
a.) Wie lautet die (eine) kanonische Übersetzung dieser Anfrage in die relationale
Algebra?
b.) Führen Sie die logische Optimierung durch.
c.) Wie sieht ein Plan unter Verwendung von Merge Joins aus – bitte fügen Sie explizit,
wo notwendig, SORT Operatoren in den Plan ein. (Es stehen keinerlei Indexe zur
Verfügung.)
d.) Wieso ist in diesem Beispiel die Verwendung von Merge Joins besonders attraktiv?
Herunterladen