一貫性 (データベース)
データベースシステムの一貫性、整合性 (英: consistency)とは、特定のデータベーストランザクションが影響を受けるデータを許可された方法でのみ変更する要件のこと。データベースに書き込まれるデータは、制約、カスケード、トリガーなどの定義されたすべてのルールでの操作で一貫性を保つ必要がある。これは、アプリケーションプログラマーが望んでいたすべての方法でトランザクションの正確さを保証はしない(つまり、アプリケーションレベルのコードの責任)が、プログラミングエラーが起きてもデータベース制約の違反は発生しないようになっている[1]。
ACID保証として
[編集]一貫性は、 ACIDトランザクションを定義する4つの保証の1つである。ただし、この保証の性質については、かなりのあいまいさが存在する。これは、次のようにさまざまに定義されている。
- 将来開始されるトランザクションが、過去にコミットされた他のトランザクションの影響を必ず確認するという保証[2][3]
- 特にトランザクションがコミットされた後は、データベースの制約に違反しないことの保証[4][5][6][7]
- アプリケーションのセマンティクスに関して、トランザクションの操作が正確、かつ有効に実行されることの保証[8]
これらの定義は相互排他的でないため、今日一般的に使用されているほとんどの関係データベース管理システムは、「一貫性」をほぼ間違いなく保証するシステムとして設計されている。
CAPのトレードオフとして
[編集]CAP定理は3つのトレードオフに基づいており、そのうちの1つは「一貫性」もしくは「アトミック整合性」である。著者は次のように述べている。
「一貫性はACIDの不可分性とは異なる。データベースの一貫性はトランザクションのことを指すが、アトミック整合性は単一の要求/応答操作シーケンスの属性のみを指すためだ。また、アトミック整合性は、不可分性 (atomic)と一貫性 (Consistent)の両方のデータベース概念を包含しているためだ[2] 。」 CAP定理によると、整合性、可用性、分断耐性の3つの属性のうち2つしか持つことができない。したがって、一部のデータベースシステムでは、一貫性を犠牲にする必要がある場合がある。
関連項目
[編集]脚注
[編集]- ^ C. J. Date, "SQL and Relational Theory: How to Write Accurate SQL Code 2nd edition", O'reilly Media, Inc., 2012, pg. 180.
- ^ a b “Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services”. 2019年6月29日時点のオリジナルよりアーカイブ。2020年12月21日閲覧。
- ^ Ports, D.R.K.; Clements, A.T.; Zhang, I.; Madden, S.; Liskov, B.. “Transactional Consistency and Automatic Management in an Application Data Cache”. Mit Csail .
- ^ Haerder, T; Reuter, A. (December 1983). “Principles of Transaction-Oriented Database Recovery”. Computing Surveys 15 (4): 287–317. doi:10.1145/289.291 2020年12月21日閲覧。.
- ^ Mike Chapple. “The ACID Model”. About. 2020年12月21日閲覧。
- ^ “ACID properties”. 2020年12月21日閲覧。
- ^ Cory Janssen. “What is ACID in Databases? - Definition from Techopedia”. Techopedia.com. 2020年12月21日閲覧。
- ^ “ISO/IEC 10026-1:1998 - Information technology -- Open Systems Interconnection -- Distributed Transaction Processing -- Part 1: OSI TP Model”. 2020年12月21日閲覧。