ACIDデータベースモデル

のACIDモデル データベース設計 データベース理論の重要な概念です。 これは、データベース管理システムが達成しなければならない4つの目標、つまり、アトミック性、一貫性、分離、および耐久性を設定します。 これらの4つの目標のいずれも達成できないリレーショナルデータベースは、信頼できるとは見なされません。 逆に、これらの特性を備えたデータベースは、ACID準拠と見なされます。

酸、定義済み

4つのACID属性はそれぞれ、明確に定義された標準に従います。

  • Atomicityは、データベースの変更はオールオアナッシングルールに従う必要があると述べています。 各トランザクションは アトミック. トランザクションの一部が失敗すると、トランザクション全体が失敗します。 データベース管理システムは、DBMS、オペレーティングシステム、またはハードウェアに障害が発生した場合でも、トランザクションのアトミックな性質を維持することが重要です。
  • 一貫性 有効なデータのみがデータベースに書き込まれると述べています。 データベースの整合性ルールに違反するトランザクションが実行されると、トランザクション全体がロールバックされ、データベースはそれらのルールと整合性のある状態に復元されます。 一方、トランザクションが正常に実行されると、データベースは、ルールと一致する1つの状態から、同じくルールと一致する別の状態になります。
  • 隔離 同時に発生する複数のトランザクションが互いの実行に影響を与えないことが必要です。 たとえば、ジョーがデータベースに対してトランザクションを発行すると同時に、メアリーが別のトランザクションを発行する場合、両方のトランザクションはデータベースに対して分離された方法で動作する必要があります。 データベースは、Maryのトランザクションを実行する前にJoeのトランザクションを実行するか、またはその逆を実行する必要があります。 これにより、Joeのトランザクションは、Maryのトランザクションの一部の副作用として生成され、最終的にデータベースにコミットされない中間データを読み取ることができなくなります。 分離プロパティは、どのトランザクションが最初に実行されるかを保証するものではなく、トランザクションが相互に干渉しないことだけを保証します。
  • 耐久性により、データベースにコミットされたトランザクションが失われることはありません。 耐久性は、データベースのバックアップとトランザクションログを使用して保証されます。これにより、その後のソフトウェアまたはハードウェアの障害が発生した場合でも、コミットされたトランザクションの復元が容易になります。

ACIDが実際にどのように機能するか

データベース管理者は、いくつかの戦略を使用してACIDを実施します。

原子性と耐久性を強化するために使用される1つの戦略は ログ先行書き込み、トランザクションの詳細は、最初に、やり直しと元に戻すの両方の情報を含むログに書き込まれます。 このアプローチにより、データベースに障害が発生した場合に、データベースがログをチェックし、その内容をデータベースの状態と比較できるようになります。

原子性と耐久性に対処するために使用される別の方法は シャドウページング、 データを変更するときにシャドウページが作成されます。 クエリの更新は、データベース内の実際のデータではなく、シャドウページに書き込まれます。 データベースは、編集が完了したときにのみ変更されます。

別の戦略は、 2フェーズコミット プロトコル、特に分散データベースシステムで役立ちます。 このプロトコルは、データを変更する要求を、コミット要求フェーズとコミットフェーズの2つのフェーズに分割します。 リクエストフェーズでは、すべて DBMS トランザクションの影響を受けるネットワークでは、トランザクションを受信し、トランザクションを実行する能力があることを確認する必要があります。 関連するすべてのDBMSから確認を受信すると、データが変更されるコミットフェーズが完了します。

データを管理するためのアプローチはACIDモデルだけではありません。 NS BASEモデル 非構造化データでうまく機能します。