銀行業務におけるデータの一貫性に関する記事を読んでいます。著者は、一般的な考え方とは異なり、銀行がサービスの高可用性を確保するためにBASE (基本的に利用可能、ソフト状態、最終的に整合性がある) トランザクションを採用しているという事実を強調しています。
簡単に言えば、迅速な対応を可能にするためにトランザクションは別のパーティションに書き留められ、データベースの整合性は後で実行されます。
たとえば、ATM からお金を引き出す場合、目的はできるだけ早くお金を受け取ることです。したがって、トランザクション操作は個別に保存され、お金が解放され、その後、トランザクションをデータベースに適用して一貫性を保つように注意が払われます。
これは、通信の技術的な制限によるものです。ACID (原子性、一貫性、分離、耐久性) トランザクションが使用された場合、応答性の高いサービスを提供することはできません。
もちろん、これは矛盾が生じる可能性があることを意味します。あなたが引き出す金額は利用可能な金額よりも多くなる可能性があり、取引が一貫する前に事前にそれを知る方法はありません. そして、ここで当座貸越ペナルティが発生します。これは、「過剰引き出し」に対して支払う手数料です。
問題は次のとおりです。銀行は、直面しなければならない制限が始まったときから気づいていたので、「過剰引き出し」トリックを導入したのでしょうか? 一種のハックのように技術的なコミュニケーションの問題を克服し、同時に可用性を提供するには? それとも、とにかく導入されたであろう「お金を稼ぐ」ための別の方法ですか?
この場合、両方のオプションが等しく価値があるように見えます。つまり、どちらも収益を大幅に高めることができます。