ACID特性 とは?ページ内リンク ↓ウィキペディア(Wikipedia)記事 ↓Yahoo!知恵袋ACIDとは、Atomicity, Consistency, Isolation, Durabilityから合成された頭字語である。 出典: 『ウィキペディア(Wikipedia)』 ウィキペディア(Wikipedia)記事ACIDとは、Atomicity, Consistency, Isolation, Durabilityから合成された頭字語である。 これ以上分解すると意味のないものとなる最小の処理単位という意味の原子性(Atomicity:アトミック性)、一貫性(Consistency)、独立性(Isolation)、および永続性(Durability)は、トランザクション処理を行うにあたって不可欠な機能であると考えられている。もしACIDがなければデータベースの完全な状態は保証されない。ISO/IEC 10026-1:1992 Section 4に詳述されている。
概要データベースにおいては、データに対する一つの論理的操作の事をトランザクションと呼ぶ。ACIDの各性質を銀行での口座間送金を例にして示す。 Atomicityトランザクションに含まれるタスクが全て実行されるか、あるいは全く実行されないことを保証する性質をいう。日本語ではアトミック性または原子性とも呼ばれる。 口座Aから口座Bに対し1万円送金する場合を考えたとき、送金操作は次の2操作によって行われる。
Atomicityが保証されるとは、上の操作1、2が全て行われるか、あるいは全く行われないことを指す。どちらか片方だけが実行された場合、銀行全体の預金残高に矛盾が発生してしまう。 Consistency日本語では一貫性とも呼ばれる。トランザクション開始と終了時にあらかじめ与えられた整合性を満たすことを保証する性質を指す。つまり、データベースのルール、つまり整合性条件を満たさない状態を起こすようなトランザクションは実行が中断される。 預金残高を例にすると、その値は一般的に0あるいは正の値を取る条件を満たす必要がある。よって、口座Aから送金を行うとき、その前後でAの口座残高が負になるような額を送金することはできないが、これを保証するのがConsistencyの役割である。 Isolationトランザクション中に行われる操作の過程が他の操作から隠蔽されることを指し、日本語では独立性または隔離性ともいう。より形式的には、isolationとはトランザクション履歴が直列化されていることと言える。この性質と性能はトレードオフの関係にあるため、一般的にはこの性質の一部を緩和して実装される場合が多い。 残高100万円の口座Aから残高200万円の口座Bに1万円送金する場合の操作が
の順序で行われたとする。取りうる内部状態は、
の三つになるが、外部からは送金前と送金後のいずれかの状態しか観測できない。 Durability永続性と呼ばれる。トランザクション操作の完了通知をユーザが受けた時点で、その操作は永続的となり、結果が失われないことを指す。これはシステム障害に耐えるということであり、DBMSは整合性制約をチェック済みでありトランザクションを中止する必要はないということである。多くのデータベース実装では、すべてのトランザクション操作をログに記録し、システムに異常が発生したらそのログを用いて異常発生前の状態まで復旧することで永続性を実現している。 実装システムが検索を高速化するのに使用するインデックスの更新のように、トランザクション処理の過程は複数の変更によって構成される場合が多いことから、ACIDを厳密に実装することは難しい。 また、この手続き自体がシステム要因にて失敗してしまう場合もあり、その失敗要因を回避した後に復旧できるような対処を取る必要がある。例えば、UNIXのファイル実装に関して、ジャーナルファイルシステムによるファイルの一貫性の保護や、データのフルバックアップなどの対処など、多くの改善と処理の工夫が取り入れられている。 ACIDはデータベースが全ての処理を一度に処理できることを要求している。実際にはこの処理の手筈を整えるのは難しい。しかし、これを行うのにログ先行書き込み(Write ahead logging)とシャドウページング(Shadow paging)という2つの一般的なテクニックが存在する。どちらの場合でも、読み書きする情報全てに対してロックを取得しておかなくてはならない。ログ先行書き込みの場合、データベースへの実際の書き込みが行われる前にすべてのREDOとUNDOの情報がログに書き込まれることで、アトミック性が保証される。シャドウページングの場合、更新はデータベースのコピーに対して行われ、トランザクションがコミットされたときに新しいデータベースがアクティブ化される。このコピーは全体をコピーするのではなく、変更のない部分は古いバージョンのデータベースへの参照という形で行われる。 分散トランザクションにおけるACID特性分散トランザクションの場合は、ツーフェーズコミット(2PC)が一般的に利用される。ツーフェーズコミットでは各参加者がトランザクションのコミットに同意するか否かについて一致することを保証する。 トランザクションをパラレルに実行するときは注意が必要である。完全な独立性を保証するためにツーフェーズロッキングが一般的に使用される。 ファイルシステム
この記事は、ウィキペディアの記事を複製、改変、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。ことなびに掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。 Yahoo!知恵袋
|
↓ニュース ↓YouTube ↓テレビ番組 ↓はてブ ↓ヤフオク ↓このページへのリンク
PageRank5以上の相互リンク |
![]() |
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |