※ 本記事では、基本情報技術者試験の対策として私が勉強したことを備忘録的にまとめておきたいと思います。
少しでも参考になれば嬉しいです。
はじめに
さて今回は、基本情報技術者試験対策として、データベースの障害管理についてまとめたいと思います。
特に重要なのは、ロールバックとロールフォワードです。
どのようにして障害への対策を取っているのか理解しておきましょう。
また、今回の話を理解するためにはトランザクションについて知っておくことも非常に重要です。前回まとめていますので、まずはそちらをチェックしてくださいね。
それでは見ていきましょ~。
ちなみに私はこの参考書を使って勉強してました。
漫画形式で読みやすく、分かりやすい内容になっているため、無理なく学習を進められると思います。
過去問を解きまくり、不明点があれば参考書で知識を補う、このサイクルで試験対策するのが私のオススメです!
最新版はこちらです。
少し内容が異なる部分もあるかもしれませんが、大まかには変わらないはずですので、安心して下さい。
バックアップファイルとジャーナルファイル
バックアップファイルとは、元のデータのコピーを作成することでデータの損失に備えるためのファイルです。
一方ジャーナルファイルは、データの変更履歴を記録するためのファイルで、主にトランザクション処理やファイルシステムで使用されます。
項目 | バックアップファイル | ジャーナルファイル |
---|---|---|
用途 | データのコピーを保存して損失に備える | データの変更履歴を記録して復旧に使用 |
作成タイミング | 定期的または手動で作成 | リアルタイムで更新される |
保存内容 | 元のデータ全体または一部のコピー | データの変更内容やトランザクションの情報 |
復旧時の利用方法 | バックアップデータを使用してリストアする | ジャーナルファイルを基に再度変更を適用 |
コミットとロールバック
コミット
「コミット (Commit)」は、トランザクション処理が正常に完了した際に、その変更をデータベースに反映させる操作です。
データベースは複数の操作をまとめて処理することが多く、これを「トランザクション」と呼びます。トランザクションが成功すると、コミットによってその一連の操作が正式にデータベースに保存され、他のユーザーやシステムからも参照できるようになります。
例えば、Aさんの口座からBさんの口座へお金を送金する場合、次のような流れになります。
- Aさんの口座残高を確認
- Aさんの口座残高を減らす
- Bさんの口座残高を確認
- Bさんの口座残高を増やす。
これらの全ての処理が正常に完了した後、コミットを行うことで、データベースに反映されます。
ロールバック
一方、トランザクション中に何らかの障害が発生した場合、途中まで行われた処理を無効にして、データベースをトランザクション開始直前の状態に戻す必要があります。Aさんの口座残高は減ったのに、Bさんの口座残高は増えなかった・・・なんてなったら大問題ですもんね?
このように、データベースをトランザクション開始直前の状態に戻す操作を「ロールバック (Rollback)」と呼びます。
更新前ジャーナルから、データベースの更新前の状態を取得し、トランザクション開始直前の状態にまで戻します。
例えば、上記の送金処理でBさんの口座への送金が完了する前にエラーが発生した場合、すべての操作を無効化し、Aさんの残高も元の状態に戻します。
ロールフォワード
ロールフォワード(Roll Forward)は、データベースの障害から復旧する際の方法の一つです。
この手法では、バックアップファイルとジャーナルファイル(ログファイル)を用いて、データを最新の状態に回復します。
ロールフォワードのプロセスは以下の通りです。
- Step1バックアップの復元
障害発生前に取得していたデータベースのバックアップを使用して、データベースの基本状態を復元。バックアップは、システム全体のデータを定期的に取得して保存しておいたもの。
- Step2ジャーナルファイルの適用
ジャーナルやログファイルに記録されたトランザクションデータを適用。バックアップを取得した時点から、障害発生までの間に行われたすべてのトランザクションが記録されており、これらをデータベースに反映させることで、障害発生直前の状態までデータを復元。
ロールフォワードで復元されるのは、障害発生前にコミットされていたトランザクションです。コミットされていないトランザクションは適用されず、システム障害が起こった時点のコミット済みの処理のみが復元されます。
分散データベースと2相コミット
分散データベースは、複数の物理的に異なる場所に保存されたデータベースを、あたかも1つのデータベースのように扱うシステムです。これは、大規模なデータ処理や分散コンピューティングのニーズに対応するために開発され、ネットワークを介して連携します。この技術により、データの冗長性や可用性が向上し、障害発生時のリカバリーも容易になります。
分散データベース環境では、複数のデータベース間でトランザクションを同期させる必要があります。あたかも1つのデータベースのように扱っているのに、片方は更新されて、もう片方は更新されていないなんてこと、あってはならないですもんね?
そこで「2相コミット」という手法が使われます。これは、まず各データベースに「コミット可能か?」を確認し、すべてのデータベースがOKを返したら一斉にコミットを行い、問題があれば全体をロールバックするという手順です。これにより、データの一貫性を保ちながら処理が行われます。
- Step1全データベースにコミット可能か確認
- Step2全データベースがOKと返答
- Step3コミット実施
最後に
さて今回は、基本情報技術者試験対策として、データベースの障害管理についてまとめました。
特にロールバックとロールフォワードが非常に重要です。
また、そのためにはトランザクションとは何か?、バックアップファイルやジャーナルファイルとは何か?を理解しておくことも大切です。
しっかりと頭に入れておいてくださいね。
★バックアップファイル
元のデータをコピーしたファイル
★ジャーナルファイル
データの変更履歴を記録するためのファイル
★ロールバック
データベースをトランザクション開始直前の状態に戻す操作
★ロールフォワード
バックアップファイルとジャーナルファイルを用いてデータベースの障害から復旧する際の方法
以上!
前回まとめた記事も読んでもらえると嬉しいです!
基本情報以外の勉強記事も是非!
オススメ参考書 & Udemy講座
過去問編
兎にも角にも過去問を解かないことには始まりません。解いて解いて解きまくりましょう!
特に以下の参考書は問題数が多いのでオススメです。
この1冊だけ買って、とりあえず1周すれば合格がかなり近くなると思います!
科目A+B両方合わせて4セット収録されてるとかヤバすぎます・・・
知識網羅編
以下は知識網羅編として、講義系の参考書、動画をピックアップしています。
1からしっかりと学習し、知識を身に着けたい方はとてもオススメです。
過去問を解きまくり、不明点を参考書で補う。これが最高の勉強サイクルです~
私が勉強する際に使用していたオススメ参考書は以下です。
上記シリーズの最新版は以下です。(内容はそこまで変わらないはずですが・・・)
私がぜひオススメしたい、Udemyの講座もいくつかピックアップしておきます。
誰かに解説してもらった方が分かりやすい場合もありますからね~
画像でもボタンでも、どちらを押下しても講座へ飛べるようにしてありますので是非!
コメント