Я разговаривал с парнем, который пользовался банкоматом, когда он сломался (очевидно, он работал под управлением Windows XP) и забрал свои деньги.
Транзакционная база данных с записью в журнал может гарантировать, что ваша база данных останется в согласованном состоянии, даже если банкомат выйдет из строя (т. е. вы всегда будете знать, сколько денег должно быть в банкомате и на счете клиента). ). Однако выдача наличных — это не просто транзакция БД и не мгновенная операция, поэтому следует ли фиксировать транзакцию до или после выдачи наличных? В обоих случаях банк или клиент могут потерять деньги, если банкомат выйдет из строя в нужное время.
Существуют ли идеальные (или, по крайней мере, достаточно совершенные) решения этой проблемы?
Один из способов, которым я могу думать, - это если бы банкомат имел возможность подсчитывать сумму денег в нем. Если банкомат сначала зафиксировал транзакцию, а затем выдал наличные, то после восстановления после сбоя банкомат мог бы немедленно выдать любые дополнительные деньги сверх того, что он должен содержать в соответствии с гарантированно непротиворечивой базой данных.
Но с аппаратной точки зрения я не знаю, будет ли это действительно возможно.
Что вы думаете? Есть ли другие способы справиться с этой проблемой?