할로윈 문제
Halloween Problem컴퓨팅에서 할로윈 문제는 업데이트 작업이 행의 물리적 위치에 변화를 일으켜, 작업 중 행을 두 번 이상 방문할 수 있는 가능성을 데이터베이스상에서 발생하는 현상을 말한다. 이로 인해 업데이트 작업을 수행하는 검색보다 업데이트 레코드를 계속 앞에 두는 일부 경우에는 무한 루프 현상이 발생할 수 있다.
이 데이터베이스 오류의 잠재성은 1976년 돈 체임벌린, 팻 셀링거, 모튼 아스트라한에 의해 할로윈 데이 때 처음으로 발견되었는데, 2만 5천 달러 이하의 수입을 올린 모든 직원들에게 10%의 임금 인상을 주기로 되어 있던 질의에 대한 작업을 하던 중이었다. 이 쿼리는 오류 없이 성공적으로 실행될 수 있었지만, 데이터베이스 내의 모든 직원이 완료되었을 때, 그들이 그 수준에 도달할 때까지 급여 인상을 계속했기 때문에, 적어도 2만 5천 달러를 벌어들였다. 정확히 한 번 연봉 2만5000달러 이하인 직원 기록을 일일이 반복해 질 것으로 예상됐다. 실제로 조회실행엔진에도 갱신된 기록도 눈에 띄어 조회 기준과 계속 일치했기 때문에, 급여기록은 여러 번 일치하고 매번 10%씩 인상되어 모두 2만 5천 달러 이상이 되었다.
그 이름은 문제의 본질을 설명하는 것이 아니라 발견된 날 때문에 붙여진 이름이다. Don Chamberlin이 설명한 대로:
팻과 모튼은 할로윈에 이 문제를 발견했다... 나는 그들이 내 사무실에 와서 '챔버린, 이것 좀 봐. 우리는 옵티마이저가 업데이트 처리를 위한 계획을 세울 때 업데이트되고 있는 분야를 기준으로 한 인덱스를 사용하지 않도록 해야 한다. 어떻게 그럴 수 있을까?' 마침 금요일이었는데, 우리는 '잘 들어, 우리는 오늘 오후에 이 문제를 해결할 수 없을 거야. 이름만 대보자. 우리는 그것을 할로윈 문제라고 부를 것이고 다음 주에 작업을 할 것이다.' 그리고 그 이후로 계속 그렇게 불리고 있는 것으로 밝혀졌다.
참조
- 1995년 SQL 재결합 (Protokoll)
- XML API에 대한 "할로윈 문제", Mike Champion의 웹로그.
- (아카이브) 선의의 질의와 할로윈 문제, 로스 알라모스 국립 연구소, 일화, IEEE 컴퓨터 역사 연보
- 도날드 D의 인용구. 체임벌린, 찰스 배비지 연구소, OH 329