Prüfungsinhalt | 1665 Datenbanksysteme | (WS 2000/2001) |
Prüfer | Prof. Dr. Schlageter | |
Datum | 06.04.2001, 13:00 Uhr | |
Dauer | ca. 20 min (mit 15 Minuten Verspätung) | |
Note | 2,3 |
Was sind Sekundärindexe und wie werden sie dargestellt?
Hier wollte ich das Prinzip erklären, was Prof. Schlageter so nicht hören wollte. Die Erläuterung an einem kurzen Beispiel hätte ihm völlig gereicht. Nach kurzer Zeit der Diskussion führte er das Beispiel an, das ich am Beispiel der Entität "Mensch" einen Sekundärindex erklären solle. Dazu führte ich das Attribut "Augenfarbe" an, auf das zugegriffen werden sollte, wobei der Schlüssel der Relation der Name sei. Um schnell die Menschen mit einer bestimmten Augenfarbe heraussuchen zu wollen, würde ein Sekundärindex (eine eigene Tabelle, in der die Attribute "Augenfarbe" und "Name" enthalten sind) aufgebaut werden.
Wann sind Sekundärindexe fehl am Platze?
An dem Beispiel mit der Entität Mensch habe ich erklärt, dass bei angenommenen drei Augenfarben zu jedem der drei Indexeinträge 33% Treffer existierten. Bei mehr als 10% sei ein Sekundärindex aber nicht mehr sinnvoll. Prof. Schlageter wollte da wissen, warum ab 10% nicht mehr. Eine stichhaltige Antwort viel mir dazu nicht ein. Er erklärte, dass die Attribute der Entitäten über die gesamte Datenbank verstreut lägen. Würde jetzt ein Sekundärindex mit einer Trefferquote von weit über 10% aufgebaut, müsste erfahrungsgemäß die gesamte Datenbank eingelesen werden. Dann sei die Pflege eines eigenen Indexes jedoch sinnlos.
Nachdem die ersten beiden Fragen von mir nur zögernd beantwortet wurden, fragte Prof. Schlageter, was passieren könnte, wenn eine Sperre vorhanden sein, die nicht im Zwei-Phasen-Protokoll erfolgte.
Dazu erklärte ich ihm, dass dann eine Serialisierung im Parallelbetrieb nicht gewährleistet werden kann.
Erklären Sie das UNDO / REDO Prinzip
Ich erwähnte das Log-Protokoll, die Erforderlichkeit des Checkpoints, der wiederholt geschrieben wird. Davon ausgehend würden bei einem Systemabsturz alle Schedules, die seit dem Checkpoint beendet wurden, vorwärts anhand des Log-Protokoll nachgefahren (REDO) und alle Schedules, die nicht beendet wurden, rückwärts rückgängig gemacht würden (UNDO).
Was passiert mit sehr häufig wechselnden Datenbankfeldern?
Ich erwähnte die Hot Spots und dass es sich i.d.R. um kommutative Transaktionen (Addition, Subtraktion) handeln würde. Es seien dabei nur einfache Sperren (add-lock, sub-lock) notwendig. Nach einem Absturz könnten anhand des Log-Protokolls in beliebiger Reihenfolge die "fertigen" Schedules nachgeholt und die "unfertigen" Schedules zurückgenommen werden.
Was passiert bei Transaktionen auf Hot Spots, die nicht kommutativ sind?
Dann müssen die Sperren im "normalen" Umfang durchgeführt werden.
Die Fragen zu den Sperren und UNDO/REDO erfolgten mehr in einem Gespräch, in dem wir uns über einige technische Fragen und Probleme unterhielten. Da kamen u.a. auch noch die Before- und After-Images vor. Insofern können noch einige kleine Fragen vorgekommen sein, die mir nicht mehr bewusst sind.
Nachdem ich nach den ersten beiden Fragen die nächste Frage gut und ausführlich beantworten konnte, entspannte sich die Situation merklich und die Prüfung ging eher über in eine Fachdiskussion. Rein gefühlsmäßig denke ich, dass Prof. Schlageter zu Anfang versucht, einem den Einstieg zu erleichtern und daher m.E. die Fragen (zumindest für mich) unverständlich formuliert. Als Prof. Schlageter mehr in die Tiefe ging und tatsächliches Fachwissen aus dem Kurs abfragte, verlief die Prüfung deutlich besser.
Daher mein Rat: Versucht in der Vorbereitung, die ersten Fragen zu den relationalen Datenbanken in den Prüfungsprotokollen auf Berufsschulniveau zu beantworten. Dann wird es wahrscheinlich leichter werden.
Copyright © 2001 Thomas Schwarze