Das Reisebüro verwendet eine Datenbank zum Abspeichern sämtlicher Reisedaten. Relationen: • Flug: (FNr, Abflugort, Zielort, Preis, Plätze, ...) • Hotel: (Name, Ort, Preis, Zimmer, ...) • Auto: (Typ, Ort, Preis, Autos, ...) SS2001 AIFB Gegeben sei ein Reisebüro, das exklusiv für • eine Fluggesellschaft • eine Hotelkette • einen Autoverleih vermittelt. (1/8) Synchronisation paralleler Transaktionen 4.1 Probleme im Mehrbenutzerbetrieb 1 4.1 Probleme im Mehrbenutzerbetrieb (2/8) Das Reisebüro hat fünf Schalter mit Terminals und DB-Zugriff. Annahme es existiert ein freier, unkontrollierter Zugriff auf die Daten. AIFB • Schreiboperationen read write Synchronisation paralleler Transaktionen • Leseoperationen SS2001 Auf den Relationen können folgende Operationen ausgeführt werden: 2 4.1 Probleme im Mehrbenutzerbetrieb (3/8) Situation 1: (Die folgenden Anweisungen in Pseudocode) Schalter 1 Schalter 2 read Flug.Plätze(Rio) [=12] Plätze := Plätze – 1 write Flug.Plätze Plätze := Plätze - 1 write Flug.Plätze [=11] verlorengegangene Änderung (lost update) [=11] AIFB [=12] Synchronisation paralleler Transaktionen read Flug.Plätze(Rio) SS2001 Zwei Kunden wollen am selben Tag mit dem selben Flug nach Rio de Janeiro 3 Schalter 1 Schalter 2 read Flug.Plätze(Rio) [=11] read Hotel.Zimmer(Rio) [=1] Plätze:= Plätze – 1 write Flug.Plätze(Rio) [=10] read Flug.Plätze(Rio) [=10] read Hotel.Zimmer(Rio) [=1] Zimmer:= Zimmer – 1 writeHotel.Zimmer(Rio) [=0] Schalter 1 bietet jetzt Flug an, obwohl kein Hotelzimmer mehr verfügbar ist! inkonsistente Sicht AIFB Situation 2: Zwei Kunden wollen am selben Tag mit dem selben Flug nach Rio de Janeiro fliegen, aber nur dann, falls sie auch jeweils ein Zimmer im einzigen Hotel bekommen. SS2001 (4/8) Synchronisation paralleler Transaktionen 4.1 Probleme im Mehrbenutzerbetrieb 4 Der Kunde entscheidet sich schließlich für Florida als Urlaubsland, und eine Liste der Hotels in Florida wird neu erstellt und angezeigt. Diese Liste enthält nun ein Hotel, das vorher nicht angezeigt wurde. Phantom-Problem AIFB Situation 3: An Schalter 2 wird ein Kunde beraten, der ein Hotel in den USA sucht. Es wird ein Verzeichnis aller vermittelbaren Hotels in den USA angezeigt. Während der Kunde das Verzeichnis ansieht, wird an Schalter 5 ein neues Hotel in Florida in die Datenbank eingefügt. SS2001 (5/8) Synchronisation paralleler Transaktionen 4.1 Probleme im Mehrbenutzerbetrieb 5 (6/8) Zwei Änderungen treten ein: 1. Wegen Steuererhöhung erhöhen sich die Preise um 10%. 2. Das Reisebüro beschließt, grundsätzlich um 20$ zu erhöhen, da Autos nur noch mit Vollkasko vermietet werden sollen. Synchronisation paralleler Transaktionen AIFB Situation 4: Der Autoverleih in den USA hat zwei Niederlassungen in Kalifornien: in Los Angeles (LA)und in San Francisco (SF), die einheitlich 100$ pro Woche für ihre Wagen nehmen. SS2001 4.1 Probleme im Mehrbenutzerbetrieb 6 4.1 Probleme im Mehrbenutzerbetrieb Schalter 5 read Auto.Preis(LA) [=100] write Auto.Preis(LA) [=110] AIFB read Auto.Preis(LA) [=110] Preis:= Preis + 20 write Auto.Preis(LA) [=130] read Auto.Preis(SF) [=100] Preis:= Preis + 20 write Auto.Preis(SF) [=120] read Auto.Preis(SF) [=120] Preis:= Preis * 1,1 write Auto.Preis(SF) [=132] Der Mietpreis für beide Städte ist nun nicht mehr gleich. inkonsistente Datenbank SS2001 Schalter 2 Änderung-2 an Schalter-2 durchgeführt: Vorlauf Beispiel 4-4 Synchronisation paralleler Transaktionen Änderung-1 wird an Schalter-5; (7/8) 7 Beobachtung 2 Eine zusammengehörige Aktionsfolge muss unbeeinflusst von anderen Aktionen ausgeführt werden. D.h. sie muss ablaufen, als wäre sie die einzige im System. In den vorangehenden Beispielen wären die Resultate korrekt, wenn die zusammengehörenden Aktionsfolgen nacheinander abgelaufen wären AIFB Beobachtung 1 Es gibt Folgen von Aktionen, die zusammengehören und nur in ihrer Gesamtheit eine sinnvolle Handlung beschreiben. SS2001 (8/8) Synchronisation paralleler Transaktionen 4.1 Probleme im Mehrbenutzerbetrieb (bei beliebiger Reihenfolge der Aktionsfolgen untereinander). 8