我正在和一个在 ATM 崩溃时使用 ATM 的人交谈(显然它运行的是 Windows XP)并拿走了他的钱。
具有预写日志记录的事务数据库可以确保您的数据库保持一致状态,即使 ATM 崩溃(即您将始终知道ATM 和客户帐户中应该有多少钱)。然而,出金不仅是数据库事务,也不是即时操作,那么您应该在出金之前还是之后提交交易呢?在这两种情况下,如果 ATM 在正确的时间崩溃,银行或客户都有可能蒙受损失。
是否有任何完美(或至少相当完美)的解决方案来解决这个问题?
我能想到的一种方法是 ATM 是否有能力计算其中的金额。如果 ATM 先进行交易,然后分发现金,那么在从崩溃中恢复后,ATM 可以立即分发超出根据保证一致数据库应包含的任何额外资金。
但从硬件的角度来看,我不知道这是否真的可行。
你怎么看?有没有其他方法可以处理这个问题?