一貫性 (データベース)

データベースシステムの一貫性、整合性 (英: consistency)とは、特定のデータベーストランザクションが影響を受けるデータを許可された方法でのみ変更する要件のこと。データベースに書き込まれるデータは、制約、カスケード、トリガーなどの定義されたすべてのルールでの操作で一貫性を保つ必要がある。これは、アプリケーションプログラマーが望んでいたすべての方法でトランザクションの正確さを保証はしない（つまり、アプリケーションレベルのコードの責任）が、プログラミングエラーが起きてもデータベース制約の違反は発生しないようになっているC. J. Date, "SQL and Relational Theory: How to Write Accurate SQL Code 2nd edition", O'reilly Media, Inc., 2012, pg. 180.。 

 ACID保証として 
一貫性は、 ACIDトランザクションを定義する4つの保証の1つである。ただし、この保証の性質については、かなりのあいまいさが存在する。これは、次のようにさまざまに定義されている。

 将来開始されるトランザクションが、過去にコミットされた他のトランザクションの影響を必ず確認するという保証
 特にトランザクションがコミットされた後は、データベースの制約に違反しないことの保証
 アプリケーションのセマンティクスに関して、トランザクションの操作が正確、かつ有効に実行されることの保証

これらの定義は相互排他的でないため、今日一般的に使用されているほとんどの関係データベース管理システムは、「一貫性」をほぼ間違いなく保証するシステムとして設計されている。

 CAPのトレードオフとして 
CAP定理は3つのトレードオフに基づいており、そのうちの1つは「一貫性」もしくは「アトミック整合性」である。著者は次のように述べている。

「一貫性はACIDの不可分性とは異なる。データベースの一貫性はトランザクションのことを指すが、アトミック整合性は単一の要求/応答操作シーケンスの属性のみを指すためだ。また、アトミック整合性は、不可分性 (atomic)と一貫性 (Consistent)の両方のデータベース概念を包含しているためだ 。」 CAP定理によると、整合性、可用性、分断耐性の3つの属性のうち2つしか持つことができない。したがって、一部のデータベースシステムでは、一貫性を犠牲にする必要がある場合がある。

 関連項目 

 一貫性モデル
 CAP定理
 参照整合性
 結果整合性

 脚注 

Category:トランザクション処理
Category:データ管理