ACIDはデータベースのデータを保護します
データベース設計のACIDモデルは、データベース理論の最も古く重要な概念の1つです。 これは、すべてのデータベース管理システムが達成すべき、アトミック性、一貫性、隔離性、耐久性の4つの目標を設定します。 これら4つの目標のいずれかを満たしていないリレーショナルデータベースは、信頼できるとはみなされません。 これらの特性を持つデータベースは、ACIDに準拠しているとみなされます。
定義されたACID
これらの特性を詳細に調べてみましょう。
- Atomicityによると、データベースの変更は "すべてか無か"のルールに従わなければならないということです。 各トランザクションは「アトミック」と呼ばれます。トランザクションの一部が失敗すると、トランザクション全体が失敗します。 データベース管理システムは、DBMS、オペレーティングシステム、またはハードウェアの障害にもかかわらず、トランザクションのアトミックな性質を維持することが重要です。
- 整合性は、有効なデータのみがデータベースに書き込まれることを示します。 なんらかの理由でデータベースの整合性ルールに違反するトランザクションが実行されると、トランザクション全体がロールバックされ、データベースはそれらのルールに一致する状態に復元されます。 一方、トランザクションが正常に実行されると、ルールと一致する1つの状態から、ルールにも合致する別の状態にデータベースが移動します。
- 分離は、同時に発生する複数のトランザクションがお互いの実行に影響を与えないことを必要とします。 たとえば、Maryが別のトランザクションを発行すると同時にJoeがデータベースに対してトランザクションを発行する場合、両方のトランザクションはデータベース上で独立した方法で動作する必要があります。 データベースは、Maryの実行前にJoeのトランザクション全体を実行するか、またはその逆のいずれかを実行する必要があります。 これにより、Joeのトランザクションは、最終的にデータベースにコミットされないMaryのトランザクションの一部の副作用として生成された中間データを読み取ることができなくなります。 分離プロパティは、最初に実行されるトランザクションを保証するものではなく、単にトランザクションが相互に干渉しないことに注意してください
- 耐久性は、データベースにコミットされたトランザクションが失われないことを保証します。 後続のソフトウェアやハードウェアの障害にもかかわらず、コミットされたトランザクションの復元を容易にするデータベースバックアップとトランザクションログの使用により、耐久性が保証されます。
ACIDがどのように実際に働くか
データベース管理者は、ACIDを実施するためのいくつかの戦略を使用します。
アトミック性と耐久性を強化するために使用されるものは、 ライト・アヘッド・ロギング (WAL)です。トランザクションの詳細が、REDOとUNDO情報の両方を含むログに最初に書き込まれます。これにより、ログを記録し、その内容をデータベースの状態と比較します。
原子性と耐久性に対処するために使用されるもう1つの方法は、データを変更するときにシャドウページを作成するシャドウページングです。 クエリの更新は、データベース内の実際のデータではなく、シャドウページに書き込まれます。 データベース自体は、編集が完了したときにのみ変更されます。
別の戦略は、 2フェーズコミットプロトコルと呼ばれ、分散データベースシステムで特に役立ちます。 このプロトコルは、データを変更する要求を、コミット要求フェーズとコミットフェーズの2つのフェーズに分けます。 要求フェーズでは、トランザクションの影響を受けるネットワーク上のすべてのDBMSは、トランザクションを受信したことを確認し、トランザクションを実行する能力を持っている必要があります。 すべての関連DBMSから確認が受信されると、データが実際に変更されるコミット・フェーズが完了します。