Halloween-Problem
Das Halloween-Problem bezeichnet ein Phänomen, das bei einem Datenbankzugriff auftreten kann, bei dem eine Aktualisierung durch eine angeknüpfte Bedingung von dem, was es ändert, abhängt. Entdeckt wurde es von Datenbankentwicklern bei IBM in den 1970er-Jahren. Der Name leitet sich vom Tag der Entdeckung her, dem 31. Oktober, an dem das Fest Halloween gefeiert wird.
Beispiele für das Halloween-Problem
Ein Halloween-Problem tritt beispielsweise bei den folgenden Anwendungen auf:
- In jeder Zeile, in der der Wert der Spalte A einem Kriterium K gerecht wird, soll der Wert der Spalte A geändert werden.
- Die ursprüngliche Form des Halloween-Problems. Im konkreten Fall sollte allen Mitarbeitern eines Betriebes eine Gehaltserhöhung gegeben werden, wenn diese nicht bereits mehr als $25.000 verdienten. Ein Statement mit der Intention „Gib jedem Mitarbeiter, der weniger als $25.000 verdient, eine Gehaltserhöhung von 10 %“ führte dazu, dass die glücklichen Mitarbeiter alle mindestens $25.000 verdienten, da das System das Gehalt so lange erhöhte, bis die Bedingung des Update-Statements nicht mehr griff.
- Für jede Zeile in einer Tabelle soll eine weitere Zeile hinzugefügt werden.
- Ein konkretes Beispiel für diese Inkarnation des Halloween-Problems ist eine Tabelle, in der jeder Datensatz dupliziert werden soll. Wenn das Halloween-Problem hierbei auftritt, äußert es sich so, dass die Ergebnisse der Verdopplung ihrerseits ebenfalls verdoppelt werden.
Vermeidung
Der SQL-Standard sieht vor, dass vor der Anwendung von Triggern alle Datensätze in eine temporäre Tabelle kopiert werden müssen. Änderungen wirken sich dann nicht mehr auf Trigger aus. Um ein Halloween-Problem bei anderen Aufgabenstellungen zu vermeiden, können solche temporäre Tabellen manuell für die Laufzeit einer Datenbankabfrage angelegt werden. Das bedeutet, dass beispielsweise eine Gehaltserhöhung für alle Mitarbeiter mit einer Bezahlung unterhalb eines Mindestgehalts so durchgeführt werden kann, dass in einem ersten Arbeitsschritt alle Mitarbeiter mit entsprechend geringem Gehalt ermittelt und in einer temporären Tabelle abgelegt werden. Anschließend wird allen Mitarbeitern, die in der temporären Tabelle enthalten sind, einmalig das Gehalt erhöht.
Technische Details zur Entstehung
Ein möglicher Grund für das Auftreten eines Halloween-Problems ist, dass der Speicherort einer Zeile durch eine Aktualisierung geändert wird. So kann beispielsweise eine Aktualisierung eine Verlegung der Daten einer Zeile ans Ende oder an eine andere freie Stelle einer Datenbank erfordern. Geht das Datenbanksystem bei der Abarbeitung des Update-Statements dann einfach alle Datensätze der Reihe nach durch, kann es geschehen, dass diese verschobenen Datensätze ein weiteres Mal bearbeitet werden.
Weblinks
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.