ACID特性の解説(基本情報技術者シラバス用語)

目次

ACID特性とは

ACID特性とは、データベースにおけるトランザクション処理が満たすべき、システムの信頼性を保証する4つの重要な性質の頭文字をとったものです。それぞれの意味は、処理が全か無かの「原子性(Atomicity)」、ルール通りのデータ状態を保つ「一貫性(Consistency)」、他の処理と混ざって邪魔し合わない「独立性(Isolation)」、完了した処理が障害でも消えない「耐久性(Durability)」です。これらが保たれることで安全にデータベースが運用されます。

具体例

オンラインコンサートのチケット販売において、残り1枚の座席を同時に2人のユーザーが予約しようとした場面を考えます。ACID特性の「独立性」により、2つの処理は順番に行われ、一方の予約が完了した時点で、もう一方のユーザーには売り切れという一貫した結果(一貫性)が表示されます。また、完了した予約データは、その直後にデータセンターが停電しても消えずに保存され続けます(耐久性)。

もう少し詳しく

ACID特性は、データベースマネジメントシステム(DBMS)が信頼できるデータ処理を行うための標準的な設計指針です。4つの性質について詳しく解説します。

1. 原子性(Atomicity):トランザクションに含まれる一連の処理が、「すべて実行される(All)」か、「一切実行されない(Nothing)」かのいずれかであることを保証します。途中で失敗した場合はロールバックにより何もしなかった状態に戻り、中途半端な状態(A口座から引かれたがB口座に増えていない等)を許しません。
2. 一貫性(Consistency):トランザクションの実行前後で、データベースのあらかじめ定義されたルール(一意性制約、参照制約などの整合性制約)が常に満たされていることを保証します。また、銀行残高がマイナスになってはならないというビジネスルールがある場合、それを違反するような更新処理はエラーとしてはじかれます。
3. 独立性(Isolation / 隔離性):複数のトランザクションが同時に実行された場合でも、それぞれの処理が互いに干渉せず、順番に1つずつ実行された場合と同じ結果になることを保証します。これを実現するために「ロック(排他制御)」を行います。データベースには、独立性の厳格さと処理速度のトレードオフを調整するための「トランザクション分離レベル(Read UncommittedからSerializableまでの4段階)」が規定されています。
4. 耐久性(Durability / 永続性):トランザクションが正常に完了(コミット)した後は、その結果がその後のシステム障害(停電やディスク破損など)が発生しても決して失われないことを保証します。これは、データをメモリからHDDやSSDなどの永続的な記録媒体に書き出すことや、トランザクションのログ(ライトアヘッドログ:WAL)を即座にディスクに記録しておくことで実現されます。

これらの特性がDBMSによって厳格に制御されることで、私たちはマルチユーザー環境下でも安心して重要なビジネスデータを処理できます。

試験でのポイント

IT試験においては、ACID特性の4つの英語名、日本語名、およびそれぞれの具体的な説明を正しく結びつける問題が定番です。

試験対策としての重要ポイントは以下の通りです。
・原子性(Atomicity):「All or Nothing(全か無か)」という記述や、「途中で失敗したら元の状態に戻す(ロールバック)」という説明と結びつけましょう。
・一貫性(Consistency):「整合性制約を満たし、矛盾のない状態を保つ」という説明と結びつけます。
・独立性(Isolation):「同時実行される他のトランザクションの影響を受けない(排他制御)」という説明や、「あたかも直列(順番)に処理されたかのような結果を保証する」という説明と紐付けます。
・耐久性(Durability):「コミットされたデータは、障害が発生しても失われない(ログ等を用いて復旧可能である)」という永続性と結びつけます。

「トランザクション処理において、処理が途中でエラーになった場合にすべてを実行前の状態に戻し、中途半端な状態を残さない性質はどれか」という問いに対しては、「原子性(Atomicity)」を正答として選べるようにしておきましょう。

関連する用語

ACID特性を満たすべき処理の単位である「トランザクション」や、それを管理するソフトウェア「DBMS」、一貫性を守るための「整合性制約(主キー・外部キー制約など)」が関連します。また、独立性を実現するための「排他制御(ロック)」、耐久性や原子性を支える「コミット」「ロールバック」や「ジャーナル(ログ)ファイル」も極めて重要な関連ワードです。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ