2011-07-04 4 views
1

ATM이 추락했을 때 ATM을 사용하고있는 사람과 통화 중이 었는데 (분명히 Windows XP를 실행 중이 었음) 돈을 가져갔습니다.실제 이벤트에 해당하는 데이터베이스 트랜잭션에서 완벽한 데이터 무결성이 가능합니까?

미리 쓰기 로깅을 사용하는 트랜잭션 데이터베이스는 ATM이 손상된 경우에도 데이터베이스가 일관된 상태를 유지할 수 있도록합니다. 즉, 이 ATM 및 고객 계정에 얼마나 많은 금액이 있는지 항상 알 수 있습니다. . 그러나 분배 현금은 DB 거래 일뿐만 아니라 즉각적인 작업이 아니므로 현금이 지급되기 전이나 후에 거래를 위탁해야합니까? 두 경우 모두 ATM이 적시에 작동하지 않으면 은행이나 고객이 돈을 잃을 수 있습니다.

이 문제에 대한 완벽한 (또는 적어도 합리적으로 완벽한) 해결책이 있습니까?

내가 생각할 수있는 한 가지 방법은 ATM에 금액을 계산하는 기능이 있는지 여부입니다. 현금 인출기가 먼저 거래를 위탁 한 다음 현금을 지급 한 경우 충돌 사고가 발생하면 현금 지급기는 보장 된 일관성있는 데이터베이스에 따라 추가 금액을 즉시 분배 할 수 있습니다.

그러나 하드웨어 관점에서 볼 때 실제로 실현 가능한지는 알 수 없습니다.

당신은 어떻게 생각하십니까? 이 문제를 해결할 다른 방법이 있습니까?

+0

대형 오렌지색 슈퍼마켓 밖의 ATM에서 현금화 된 현금을 잊어 버렸습니다. 몇 초가 지나면 (30?) 찍지 않은 분배 된 현금은 수거되어 기계 안에 저장되지만 분배 될 대기중인 현금은 분리됩니다. 내 은행에서 상점에 연락하여 현금이 청구되기를 기다리고있는 기계에 매달려 있는지 확인하라고 들었습니다. 말할 것도없이 내가 40 GBP를 잃어 버렸다. – onedaywhen

답변

1

트랜잭션 내에서 데이터베이스 시스템 외부의 활동이있는 경우 "상태"열을 사용하여 "수동 트랜잭션"을 빌드하는 것이 이러한 상황의 해결책입니다. 예를 들어

: 분배 캐시 상태 : 당신은 어려운 충돌 상황을 설명하기 위해 더 상태를 디자인 할 수 있습니다

0 - Check the account of user 
1 - Check passed, dispensing cache 
2 - Dispense cache sucessfully 
-1 - Updated status after reboot the ATM from crash if the status is 1 
-2 - Updated status after reboot the ATM for other erratic situations ... 

.

관련 문제