ITパスポート 技術要素 データ操作とトランザクション・障害回復

関係データベースからデータを取り出す基本操作は3つ。これに、複数人で同時に使うための制御と、障害からの回復を加えれば、この分野の骨格は完成です。

3つの基本操作とSQL

  • 選択:条件に合うを取り出す(例:東京都の顧客だけ)
  • 射影:特定のだけを取り出す(例:氏名と電話番号だけ)
  • 結合:共通の項目で複数の表を結び付ける(例:注文表と顧客表を顧客番号で)

「選択が行、射影が列」の対応は混同しやすいので、区別して覚えましょう。データベースの操作は取り出すだけではなく、データの挿入(追加)・更新(変更)・削除も基本の操作です。これらの操作に使う言語がSQLで、集計や並べ替えもできます。

トランザクションと排他制御

銀行振込の「出金と入金」のように、途中で止めてはいけない一連の処理をトランザクションという1つの単位で扱います。すべて確定(コミット)か、すべて取り消し(ロールバック)かの「全か無か」が原則です。

トランザクションに求められる4つの性質をまとめてACID特性といいます。

  • 原子性:すべて実行されるか、まったく実行されないかのどちらかになる(全か無か)
  • 一貫性:処理の前後でデータの整合性が保たれる
  • 独立性:複数のトランザクションを同時に実行しても互いに処理途中の影響を受けず、順番に実行した場合と同等の結果になる
  • 永続性:確定した結果は、障害が起きても失われない

複数人が同じデータを同時に更新すると不整合が起きるため、更新中のデータにロックをかけて待たせるのが排他制御です。整合性を守る仕組みであり、速度はむしろ低下しえます。互いにロック解除を待ち合って止まる状態がデッドロックです。複数のデータベースにまたがる処理では、2相コミットメントという方式がとられます。第1段階で関係する各システムへ確定できるかを問い合わせ、第2段階で全体の確定または取消しを指示する、2段階の手順です。

障害回復

  • バックアップ:別媒体・別場所に保管が原則。同じディスクでは共倒れに
  • ログ(ジャーナル):更新履歴の記録
  • ロールフォワード:バックアップを復元し、ログの履歴を反映して障害直前の整合した状態へ復旧
  • チェックポイント:データベースの状態とログの対応を記録し、障害回復の開始点として使う時点。ここを起点にできるため、復旧にかかる時間を短くできます(このときメモリ上の更新内容をディスクへ反映することもあります)

「ロールバックは開始前へ戻す取り消し、ロールフォワードは直前まで進める復旧」と方向で覚えましょう。

関連する問題


コメント

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