データベースの原子性はどの条件で見分けるか
基本情報技術者試験 令和6年度 問7 / データベース › トランザクション処理
過去問にチャレンジ
DBMSに実装すべき原子性(atomicity)を説明したものはどれか。
- ア
同一データベースに対する同一処理は,何度実行しても結果は同じである。
- イ
トランザクション完了後にハードウェア障害が発生しても,更新されたデータベースの内容は保証される。
- ウ
トランザクション内の処理は,全てが実行されるか,全てが取り消されるかのいずれかである。
- エ
一つのトランザクションの処理結果は,他のトランザクション処理の影響を受けない。
会話形式の解説
講師原子性を見分けるには、一つのトランザクションの処理を途中まで確定できるかに注目します。
受験者途中まで確定しないなら、全て実行するか全て取り消すか、という説明が合いそうです。
講師その判断で合っています。一部の処理だけを確定させない性質が原子性です。
受験者同じ処理を何度行っても結果が同じ、という説明も気になりました。これも一つの処理をまとめて扱う話ですか。
講師それは冪等性、つまり繰り返しても結果が変わらない性質です。処理を全て確定するか取り消すかは述べていません。
受験者障害が起きても確定済みの更新を保持する、という説明はどう区別しますか。
講師それは耐久性です。確定した後の更新を保持する話で、処理の一部だけを確定させないという話とは判断する点が違います。
受験者他のトランザクションの影響を受けないという説明は、処理同士の関係を見ていますね。
講師はい。それは独立性です。原子性では、一つのトランザクションの処理を全体として確定するかどうかを見ます。
受験者原子性なら、一部だけ確定する余地があるかを確かめればよいのですね。
講師そうです。障害後に確定済みの更新を保持する耐久性と混同しやすいので、確定の前後で何を問うているかにも注目しましょう。
まとめ
原子性は、一つのトランザクションの処理を全て実行するか、全て取り消すかという性質です。一部だけを確定させないことが見分ける手掛かりです。繰り返しても結果が同じことは冪等性、確定済みの更新を障害後も保持することは耐久性、他のトランザクションの影響を受けないことは独立性に当たります。
解答・解説
正解はウです
この問題のテーマ
DBMSのACID特性のうち、原子性に当たる説明を見分ける問題です。
解き方の考え方
原子性は、一つのトランザクションを分割できない処理として扱う性質です。処理の途中までを確定させず、全てを確定するか、全てを取り消すかで判断します。その条件に当てはまる選択肢を探します。
選択肢ごとの解説
- ×ア 同一データベースに対する同一処理は,何度実行しても結果は同じである。アの同じ処理を繰り返しても結果が変わらないという説明は、冪等性に当たります。トランザクション内の処理を一体として確定・取消しする性質を述べていません。
- ×イ トランザクション完了後にハードウェア障害が発生しても,更新されたデータベースの内容は保証される。イの障害後も確定済みの更新を保持するという説明は、耐久性に当たります。処理の一部だけが確定しないことを示す説明ではありません。
- ○ウ トランザクション内の処理は,全てが実行されるか,全てが取り消されるかのいずれかである。ウは、トランザクション内の処理を全て実行するか、全て取り消すかを述べています。一部の処理だけを確定させないため、原子性の説明です。
- ×エ 一つのトランザクションの処理結果は,他のトランザクション処理の影響を受けない。エの他のトランザクションの影響を受けないという説明は、独立性に当たります。ここで扱うのは並行する処理との関係であり、一つの処理を全体として確定させるかどうかではありません。
POINT
- 原子性は、一つのトランザクションを全体として扱う性質です。
- 一部の更新だけが確定する状態を防ぐことが、原子性を見分ける手掛かりです。
- 確定した更新を障害後も保持する性質は耐久性です。
