原子性:すべてまたは何も
データベースとトランザクションのコンテキストでの原子性とは、操作が不可分であるという概念を指します 。 トランザクションは、すべてののいずれかの場合、アトミックと見なされます その操作は正常に完了します、または none それらのです。それは化学反応のようなものです:反応全体が起こるか、何も起こらないかのどちらかです。
説明する2つの例を次に示します。
例1:銀行譲渡
当座預金口座から普通預金口座に100ドルを転送することを想像してください。このトランザクションには、2つの操作が含まれます。
1。デビット: 当座預金口座から100ドルを差し引く。
2。クレジット: 普通預金口座に100ドルを追加します。
原子トランザクション: システムが原子性を保証する場合、これらの両方の操作が正常に発生するか、どちらもそうではありません。借方操作が完了したが、クレジット操作が失敗した場合(たとえば、システムエラーのため)、お金は失われません。当座預金口座に残ります。
非原子トランザクション: 原子性が保証されていない場合、普通預金口座に到達することなく、当座預金口座からお金が消える可能性があり、システムの矛盾につながります。
例2:オンラインショッピングカート
オンラインストアから製品を購入することを検討してください。トランザクションにはこれらの操作が含まれる場合があります。
1。在庫控除: 購入したアイテムの利用可能な在庫を削減します。
2。カードを請求: クレジットカードから支払いを処理します。
3。注文ステータスを更新: 注文を「配置」としてマークします。
原子トランザクション: トランザクションがアトミックの場合、3つの操作すべてが正常に発生するか、それらのどれも実行しません。在庫が差し引かれたが、カードの支払いが失敗した場合、注文は配置されず、在庫が復元されます。
非原子トランザクション: 原子性がなければ、在庫は控除される可能性がありますが、支払いは処理されない場合があります。 これは矛盾につながります:あなたはアイテムに対して請求されますが、それはあなたに出荷されません。
本質的に、Atomicityは、トランザクションが信頼性と一貫性を保証することを保証します。 データの腐敗を防ぎ、予期しないイベントやエラーに直面しても、データベースが有効な状態のままであることを保証します。