ITパスポート 令和6年度 問74:databaseに関する問題
トランザクション処理に関する記述のうち、適切なものはどれか。
- aコミットとは、トランザクションが正常に処理されなかったときに、データベースをトランザクション開始前の状態に戻すことである。
- b排他制御とは、トランザクションが正常に処理されたときに、データベースの内容を確定させることである。
- cロールバックとは、複数のトランザクションが同時に同一データを更新しようとしたときに、データの矛盾が起きないようにすることである。
- dログとは、データベースの更新履歴を記録したファイルのことである。正答
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは d です。
ログとは、データベースに「いつ・何を・どう変えたか」を順番に書き残しておく“作業日記”のこと。これがあると、もし途中で問題が起きても「ここまで戻そう」と立て直せます。
👉 覚え方:ログ=データベースの“更新の作業日記”。
ほかの選択肢は説明と言葉が入れ替わっています:a の「失敗したら開始前に戻す」は本当はロールバックの説明/b の「正常なら内容を確定する」はコミットの説明/c の「同時更新で矛盾を防ぐ」は排他制御の説明。言葉と意味のペアがズレているのがこの問題のワナです。
なぜこれが正解か
正解は d。ログ(ジャーナル)はデータベースの更新履歴を時系列に記録したファイルで、障害発生時の回復(ロールバック/ロールフォワード)に使われる。記述として正しい。
各選択肢の解説(用語が入れ替わっている)
- a「正常に処理されなかったとき開始前の状態に戻す」=実際はロールバックの説明。コミットの説明ではない。
- b「正常に処理されたとき内容を確定させる」=実際はコミットの説明。排他制御ではない。
- c「同時更新でデータの矛盾を防ぐ」=実際は排他制御(ロック)の説明。ロールバックではない。
覚え方・ひっかけ注意
この問題は「用語と定義の入れ替え」が手口。正しい対応を固定で覚える:コミット=確定/ロールバック=開始前に戻す/排他制御=同時更新の矛盾防止/ログ=更新履歴の記録。dだけが用語と定義が正しく一致している。
理論的背景
データベースのトランザクション処理はACID特性(Atomicity・Consistency・Isolation・Durability)によって保証される。本問のログ(トランザクションログ)はDurability(耐久性)を実現する核心的メカニズムであり、データベースへの全変更操作を「ビフォアイメージ(更新前の値)」と「アフターイメージ(更新後の値)」の形式でディスクに逐次記録する。障害発生時には、ログを使ったROLL FORWARD(REDO:コミット済みトランザクションの再適用)とROLL BACK(UNDO:未コミットトランザクションの取り消し)によってデータの一貫性と耐久性を回復する。WAL(Write-Ahead Logging)という手法では「データの実データ変更前に必ずログを先書きする」ことでクラッシュリカバリの安全性を確保する。PostgreSQL・MySQL(InnoDB)・SQL Serverはいずれもこのアーキテクチャを採用している。
実務での使われ方
トランザクションログはデータベース運用管理において複数の重要な用途を持つ。第一に障害復旧:データベースクラッシュ時にWALログをreplayして一貫した状態に復元する(PostgreSQLではWAL・MySQLではRedoログ/Undoログが対応)。第二にポイントインタイムリカバリ(PITR):任意の時点(特定のトランザクション前後)へのデータ復旧が可能であり、誤操作・論理破壊からの回復に活用する。第三にレプリケーション:プライマリからスタンバイへのストリーミングレプリケーションはログの転送・適用で実装される。近年のクラウドマネージドDB(AWS RDS・Azure SQL Database・Google Cloud SQL)では自動バックアップ・PITR・フェイルオーバーがログ基盤の上に構築されており、RPO(目標復旧時点)を数秒〜数分に設定できるマネージドサービスが標準化している。
試験での位置づけ
データベーストランザクション管理はITパスポートの「テクノロジ系/データベース」で頻出の重要テーマ。本問では4つの用語(コミット・排他制御・ロールバック・ログ)の定義を正確に識別することが求められる。選択肢の用語が互い違いに定義されており(aがコミットの説明→コミットの定義はそれではない、bが排他制御の説明→排他制御とは違う等)、全用語の正確な理解が必要。コミット(COMMIT)はトランザクションの確定・永続化、ロールバック(ROLLBACK)はトランザクション開始前への取り消し、排他制御はDeadlock(デッドロック)防止のためのLock(ロック)機構、ログはトランザクション記録ファイルというそれぞれの本質的定義を整理する。基本情報技術者(FE)ではデッドロックの発生原因と防止策・2相ロッキングプロトコル・分散トランザクション(2相コミット)まで問われる。
選択肢の発展補足
選択肢aはロールバックの定義(トランザクション失敗時のデータベース復元)を「コミット」と誤って表現しており、コミットの実際の意味(トランザクションが正常完了し変更を永続化すること)と真逆の説明をしている。選択肢bは排他制御(ロック制御)の定義を「コミット」と誤表現しており、排他制御の実際の意味(複数トランザクションの同時アクセスによる矛盾防止)を「ロールバック」と誤ラベリングしている。選択肢cはロールバックの実際の定義を「複数トランザクションの同時更新でデータ矛盾が起きないよう」という排他制御の説明と混在させている。日本語での覚え方として:コミット=「委任(確定)」・ロールバック=「巻き戻し」・排他制御=「排他(他を締め出す)」・ログ=「航海日誌(記録)」という語源で整理すると混同しにくくなる。
出典:IPA(情報処理推進機構)公式 ITパスポート試験 令和6年度 問74/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。