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




