データベーススペシャリスト資格|2022年10月挑戦ログ 8月7日|DB基礎知識(障害と復旧)|SQL(確認ドリル)

高度IT・基礎知識

この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。今回は知識およびSQL(確認ドリル)について書く。(SQLはGoogle Big Queryに準拠)

知識(障害と復旧)

障害の種類

  • トランザクションのACID特性のうちdurability(耐久性)について。
  • 障害にはトランザクション障害、システム障害、媒体障害がある。

トランザクション障害からの復旧

  • トランザクション障害とは、パソコンで言えばワードやエクセルが強制終了するようなもの。その場合はロールバックし再実行する。トランザクションはコミットかロールバックの二択だからだ。

システム障害からの復旧

  • システム障害とは、OSごと停止など、システムそのものの異常動作。この場合は、システムをリセットして再起動する。
  • このとき、メモリ中にだけ存在して、ディスクに書き出していないデータは消える。しかし、データベースは「情報が消失しました」では持たないので、ログを使う。
  • コミット済データについては、ログ(ジャーナル)の更新後情報を用いて、ロールフォワードにより最新の状態にまで復旧する。
  • また、未コミットデータは更新前情報を用いてロールバックして再実行する。

試験問題の例

  • なお、試験問題では時系列が用いられることが多い。まず「チェックポイント」が示される。これはメモリ中の情報をディスクに書き込むタイミングだ。(PCに例えば、ワードは5分ごとに自動保存してくれるがそのようなもの。1文字書くたびに保存していては、スループットが下がる)
  • まず、チェックポイントまでにコミットしたトランザクションは、対処不要。
  • 次に、”チェックポイントから障害までの間”にコミットしたトランザクションは、まだディスクに書き出されていないので、ロールフォワードにより復旧させる。
  • ただし、復旧する対象は「更新するトランザクション」。読むだけのトランザクションは復旧は不要。(何もデータを変えていないので)
  • 最後に、障害までの間にコミットしていないトランザクションは、ロールバックにより再実行して復旧させる。

媒体障害からの復旧

  • 媒体障害とは、ディスククラッシュなど。
  • まずバックアップからの復旧が必要。
  • 次に”バックアップから媒体障害までの間”については、ログを用いてロールフォワードし、最新の状態に復旧する。

媒体障害を避ける工夫

  • ディスクが1台クラッシュした程度で、即障害とならないような工夫がある。
  • RAID0(レイドゼロ)はストライピングの技術。ひとつのデータを複数のブロックに分け、これらを複数のディスクに分散して書き込むことでアクセスの高速化を実現する。
  • たとえば、ディスクaにデータ1と3、ディスクbにデータ2と4を書き込むなど。
  • ただし、どれか1つのディスクが破損すると困る。なお、OS(windowsなど)から見ると1台のディスクとして見える。
  • RAID1(レイドイチ)はミラーリングの技術。同じ内容を複数のディスクに書き込む。
  • たとえば、ディスクaにも、ディスクbにもデータ1~4を書き込むなど。
  • 少なくとも1台が正常に動作していればよくなる。しかし、何台ディスクを用意しても、1台分の容量しか書けない。
  • このためRAID10(レイドイチゼロ)が用いられる。ミラーリングとストライピングを両立させ、安全性と高速性を兼ねる。
  • たとえばディスクを4台用意し、ディスクaとb、ディスクcとdのセットに分け、セット内でミラーリングする。そしてデータは各セットに分散して書き込む。
  • RAID5は6は、パリティという復旧用のデータを別に用意するもの。RAID5はディスク3台以上で構成し、1台故障しても大丈夫。RAID6はディスク4台以上で構成し、2台故障しても大丈夫。

ログの書き出し方法について

  • ログの書き出し方法には、ログ先書き出し(WAL:Write Ahead Loggin)という、「まずログに書いて、次にDB本体を更新する」方式がある。
  • これにより、「DBは更新されているがログがない」という事態を防げる。

バックアップについて

  • 万が一の被災などに備え、データベースそのものを複製しておくことをレプリケーションと言う。

9月22日復習時追記

  • 障害復旧は、午前2では数問出題。TACテキストおよび過去5年分解いており、対策済。
  • 午後については「バックアップ」として過去問ベースで確認しており、対策済。

問題089(SQL確認ドリル)

問題文

  • web_logテーブルから、ページ(page)別のページビュー数を取得し
  • ページビュー数の多い順に、トップ5のページ(page)を表示してください。
  • パラメータ「?sys=abc123」が付いているページと、ついていないページは区別して集計します。
  • 結果テーブルは「page」と「pageviews」の2カラムとします。

group by, order by, limitのおさらい

  • group byは指定した列の情報で束ねて分析できる。
  • order byは並び替え、limitは表示データを絞り込める。
  • 具体的には以下のとおり。

考察

  • データベーススペシャリスト資格について。今回は知識(障害と復旧)の復習を行い、復旧方法等を学習した。また、SQLの確認ドリル(web_logテーブルにおけるページごとのビュー数)を解いた。
  • 考察。情報が多い現代こそ「自分を受け入れる」ことが大事と感じる。人生は有限で、人は万能ではないから、情報を仕分ける”軸”を持つためだ。でないと「こうあるべき」という空気に流され、自滅する恐れがある。あるゲームの「否定すると牙をむき、肯定すると寄り添う内なる力」のようなイメージだ。

考察のシンプル化と英訳(練習中)

  • I think accepting my inner is important. Because what I can do is limited.
  • (自分の内面を受け入れることが大事だと思います。なぜなら、私にできることは限られているからです)

参考資料

  • 集中演習 SQL入門/木田和廣/株式会社インプレス
  • 2022年度版 ALL IN ONE パーフェクトマスター データベーススペシャリスト/TAC

コメント

タイトルとURLをコピーしました