Halloween probléma
A számítástechnikában a Halloween probléma egy olyan jelenséget takar, amikor egy adatbázisban egy módosítás során megváltozik egy sor fizikai elhelyezkedése, és így fennáll annak a lehetősége, hogy ez a sor e művelet során többször is feldolgozásra kerül. Bizonyos esetekben ez végtelen ciklushoz is vezethet, amikor a módosítások a megváltoztatott sorokat áthelyezik a művelet által még feldolgozandó sorokhoz.
Ennek az adatbázishibának a lehetőségét Don Chamberlin, Pat Selinger és Morton Astrahan fedezték fel 1976-ban, Halloween napján, amikor egy olyan lekérdezésen dolgoztak, ami 10% emelést adott volna minden munkavállalónak, aki 25$-nál kevesebbet keresett. A lekérdezés nem tartalmazott hibát, de miután lefutott, minden munkavállalónak legalább 25$ volt a fizetése az adatbázisban, mert addig emelte az értéket, amíg annyi nem lett. Azt akarták elérni, hogy a lekérdezés pontosan egyszer módosítson minden rekordot, ahol a munkavállaló fizetése kisebb, mint 25$. Valójában az történt, hogy miután a már módosított rekordok is láthatóak voltak a lekérdezést futtató adatbázismotor számára, amennyiben továbbra is megfeleltek a lekérdezés szűrőfeltételének, a fizetés értéke többször is emelkedett 10%-kal, amíg el nem érte a 25$-t.
Az elnevezés nem a probléma természetére utal, hanem az után a nap után kapta a nevét, amikor felfedezték. Don Chamberlin elmondása szerint:
Pat és Morton Halloweenkor fedezték fel a problémát ... Emlékszem, az irodámba jöttek és ezt mondták: „Chamberlin, figyelj csak! Biztosnak kell lennünk abban, hogy amikor az optimalizáló tervet készít módosításhoz, nem használ olyan indexet, amiben a módosítandó mező benne van. Hogy csináljuk ezt?” Történetesen péntek volt, és így egyeztünk meg: „Figyeljetek, ma délután már nem tudjuk megoldani ezt a problémát. Adjunk neki valami nevet. Hívjuk Halloween problémának, és dolgozzunk rajta jövő héten.” És úgy néz ki, azóta is így hívják.
Fordítás
[szerkesztés]- Ez a szócikk részben vagy egészben a Halloween Problem című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.