ACID特性

問題

応用情報技術者平成23年特別 午前問32

トランザクションの原子性(atomicity)の説明として,適切なものはどれか。

  • データの物理的格納場所やアプリケーションプログラムの実行場所を意識することなくトランザクション処理が行える。
  • トランザクションが完了したときの状態は,処理済みか未処理のどちらかしかない。
  • トランザクション処理においてデータベースの一貫性が保てる。
  • 複数のトランザクションを同時に処理した場合でも,個々の処理結果は正しい。

答え

トランザクションが完了した時の状態は、処理済みが未処理のどちらかしかない。

解説

データベースのACID特性


ACIDとは、信頼性のあるトランザクションシステムの持つべき性質として1970年代後半にジム・グレイが定義した概念で、これ以上分解してはならないという意味の原子性(: atomicity、不可分性)、一貫性(: consistency)、独立性(: isolation)、および永続性(: durability)は、トランザクション処理の信頼性を保証するために求められる性質であるとする考え方である[1]


出典: フリー百科事典『ウィキペディア(Wikipedia)』

原子性 Atomicity

トランザクションは、完全に実行されるか、全く実行ないかの、どちらかでなければならない。


口座Aから口座Bに対し1万円送金する場合を考えたとき、送金操作は次の2操作によって行われる。
口座Aの残高から1万円を引く
口座Bの残高に1万円を加える
原子性が保証されるとは、上の操作1、2が全て行われるか、あるいは全く行われないことを指す。どちらか片方だけが実行された場合、銀行全体の預金残高に矛盾が発生してしまう。


出典: フリー百科事典『ウィキペディア(Wikipedia)』

コミットメント制御(コミットやロールバック)により実現される。

一貫性 Consisitancy

トランザクション開始と終了時にあらかじめ与えられた整合性を満たすことを保証する性質を指す 。


預金残高を例にすると、その値は一般的に0あるいは正の値を取る条件を満たす必要がある。よって、口座Aから送金を行うとき、その前後でAの口座残高が負になるような額は送金できないようにする。このようなルールを保証するのが一貫性の役割である。


出典: フリー百科事典『ウィキペディア(Wikipedia)』

分離性 Isolation

トランザクション中に行われる操作が、他のトランザクションに影響を与えない事を保証する。


預金残高の例では、残高100万円の口座Aから残高200万円の口座Bに1万円送金する場合の操作が
口座Aの残高から1万円を引く
口座Bの残高に1万円を加える
の順序で行われたとする。取りうる内部状態は、

時点口座A口座B
送金前100万円200万円
実行中99万円200万円
送金後99万円201万円


の3つになるが、外部からは送金前送金後のいずれかの状態しか観測できない。


出典: フリー百科事典『ウィキペディア(Wikipedia)』

永続性 Durabirity

トランザクション処理結果は永続的であることを保証する。

システム障害が起こったときの障害回復機能で実装されます。