2021-02-07 オンライン プログラミング勉強会の記録

この記事は5分で読めます

このサイトは学部では早稲田で物理を, 修士では東大で数学を専攻し, 今も非アカデミックの立場で数学や物理と向き合っている一市民の奮闘の記録です. 運営者情報および運営理念についてはこちらをご覧ください.

中高の数学の復習から専門的な数学・物理までいろいろな情報を発信しています.
中高数学に関しては自然を再現しよう役に立つ中高数学 中高数学お散歩コース
大学数学に関しては現代数学観光ツアーなどの無料の通信講座があります.
その他にも無料の通信講座はこちらのページにまとまっています.
ご興味のある方はぜひお気軽にご登録ください!


進捗

  • 前回の進捗
    • 基礎知識編:「参考:楽観ロック」まで
    • 本編:04-02終了
  • 今回の進捗
    • 基礎知識編:「6.8.4 問合せ処理の効率化」まで
    • 本編:05-01終了

課題

TODO

自分用メモ

Matplotlib

  • 本当に簡単な図を描く
  • これを参考に scipy お絵描き
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm

m,l = 3,7
theta = np.linspace(0, np.pi, 1001)
phi = np.linspace(0, 2 * np.pi, 1501)
theta, phi = np.meshgrid(theta, phi)

r = sph_harm(m, l, phi, theta).real
x = np.abs(r) * np.sin(theta) * np.cos(phi)
y = np.abs(r) * np.sin(theta) * np.sin(phi)
z = np.abs(r) * np.cos(theta)

fig = plt.figure(figsize=(8, 8))
ax = fig.gca(projection="3d")
ax.plot_surface(x, y, z, color="aqua", edgecolor="k")
plt.axis("off")
plt.show()
png

日々の勉強

Julia

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
  • ネットワークの話もいい加減飽きたので、しばらく DB の話

復習

  • 3 つのスキーマ
    • ユーザーが見るレベル
    • 正規化などをかけておいたデータベースにもっていけるレベル
    • 個々のデータベースに合わせた具体的なレベル
  • インメモリの DB:コンピューターの基本的なハードウェア構成と意味を復習しよう

本の記述を追いかける

P.336 障害回復管理

P.336 障害の種類

  • データベースに発生する障害の三大分類
  • 媒体障害:記憶媒体の故障でデータが消失
  • システム障害:DBMSやOSのバグ・オペレータの誤操作によるシステムダウン
  • トランザクション障害:プログラムのバグ・デッドロック発生でのトランザクションの強制終了など、実行中のトランザクションが異常終了

P.336 目標復旧時点

  • RPO:Recovery Point Objective
  • システム再稼働時に障害発生前のどの時点の状態に復旧させるかを示す概念で、データ損失の最大許容範囲
  • 目標復旧時間(RTO、Recovery Time Objective)
    • 災害による業務の停止が深刻な被害とならないために許容される時間

P.336 事前対策

  • 障害回復:障害からデータベースを復旧して一貫性が保たれた元の状態に戻すこと
  • 障害回復には次のファイルを事前に取得しておく必要がある
  • ログファイル
    • 障害やバグ対策の基本
    • トランザクション処理でデータベースが更新されるとき,更新前ログ、更新後ログなどの更新履歴(変更情報)を取り、時系列に記録する
    • ジャーナルファイル、ジャーナルログともいう
    • 大量に出るので復旧や原因追及に必要十分な要素をピックアップする必要がある
    • ログファイル容量などを見て自動でファイルが切り替わる(ローテーション)
  • バックアップファイル
    • 媒体障害に備えてデータベースとログファイルを定期的に別の媒体にバックアップ(退避)する
    • データベースのバックアップは定期的に取る
    • ログファイル切り替え時にログファイルのバックアップも取る
      • ふつうn個のログファイルに対してログデータをログファイル1から順に書き込む
      • ログファイル1が一杯になるとログファイル2へと切り替える(ローテーション)
      • このタイミングでバックアップ

P.337 参考 バックアップの種類

  • フルバックアップ:すべてのデータをバックアップする
  • 差分バックアップ:直前のフルバックアップ
    からの変更分だけをバックアップする。
  • 増分バックアップ:直前のフルバックアップ
    または増分バックアップからの変更分だけをバックアップする。
  • メリット・デメリット
    • フルバックアップは何も考えずにドカンと復旧できるが容量を食う
    • 差分バックアップはバックアップに使う容量を減らせるが、復旧時に手間がかかる

P.337 媒体障害からの回復

  • 媒体障害発生時:バックアップファイルとログファイルの更新後ログを使ってロールフォワード処理でデータ ベースを回復させる
    • 参考:P.338 図6.8.6
    • T1:バックアップファイル取得
    • T2:媒体障害発生
      • バックアップファイルを別の媒体にリストア、T1時点に復帰
      • T1-T2間の更新データ回復:ログファイルの更新後ログによるデータベースの各レコードを順番に再現するロールフォワード処理
  • 参考:差分バックアップ方式採用時
    • フルバックアップファイルをリストア
    • 直近の差分バックアップファイルのデータを追加
    • 更新後ログでロールフォワード

P.338 トランザクション障害からの回復

  • アプリケーションプログラムのバグやデッドロックを解除するための強制終了などでアプリケーションが異常終了したとき
  • ログファイルの更新前ログを使ったロールバック処理でデータベースの内容をトランザクション開始時点の状態に戻す
  • 参考:P.338 図6.8.7
    • データxとyを更新しなければならないトランザクションがT1で開始
    • データyの更新を行う前にT2で異常終了
    • このままではデータxとyのつじつまが合わない
      • T1からT2の間に行われたxの更新を取り消す必要が出る
    • ログファイルの更新前ログによるロールバック処理
      でトランザクション開始時点(T1)の状態に戻す
  • 参考:データとログをメモリ上にバッファリングしている場合
    • まだCOMMITされていないトランザクションはログ・バッファの内容で自動的にロールバック(ROLLBACK)される

P.339 システム障害からの回復

  • 現在のデータベース管理システムでのディスクの入出力効率向上のための工夫
    • データとログをメモリ上にバッファリング
    • まずデータベース・バッファに対してデータの更新
    • ある時間間隔でデータベース・バッファの内容をデータファイル(データベース)へ書き出す
    • 書き出し時点を行った時点:チェックポイント
    • チェックポイントの発生:トランザクションのCOMMITとは非同期で、トランザクションがCOMMITされてもデータベース・バッファの内容はデータファイルに書き出されない
      • チェックポイント発生時、稼働中のトランザクション情報もログファイルに書き出される
ログ・バッファの内容
  • トランザクションのCOMMITまたはチェックポイント発生でログファイルに書き出される
  • システム障害発生時の問題
    • データファイルに書き出されていないデータベース・バッファ上の更新データの消失
  • P.340 図6.8.9 の TR2
    • システム障害が発生した時点でCOMMITされていない
    • データベース・バッファの内容が消失しても問題ない:再処理で対応
    • 問題になるのはチェックポイント(T1)の前に開始されたTR1
    • TR1はシステム再立上げ後に更新前ログを用いたロールバック処理で
    • トランザクション開始時点の内容に戻す
図6.8.10の例
  • チェックポイント(T1)後
  • システム障害発生(T2)前にCOMMITされたトランザクションTR3,TR4による更新内容はまだデータファイルに書き出されていない
  • システム障害が発生した直前のチェックポイント(T1)まではデータベースの内容が保証されている
  • ここから更新後ログを用いてロールフォワード処理によって回復
  • システム障害における障害回復はシステム障害
    発生時のトランザクションの状態に応じて変わる
  • チェックポイントを作ることでそれまで行われてきた更新内容はすべてデータベース・バッファからデータファイルに書き出される
  • システム障害が発生してもチェックポイント以降の更新後ログだけでロールフォワード処理で回復できる
    • 回復時間が短縮される

中高の数学の復習から専門的な数学・物理までいろいろな情報を発信しています.
中高数学に関しては自然を再現しよう役に立つ中高数学 中高数学お散歩コース
大学数学に関しては現代数学観光ツアーなどの無料の通信講座があります.
その他にも無料の通信講座はこちらのページにまとまっています.
ご興味のある方はぜひお気軽にご登録ください!

  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

このサイトについて

数学・物理の情報を中心にアカデミックな話題を発信しています。詳しいプロフィールはこちらから。通信講座を中心に数学や物理を独学しやすい環境づくりを目指して日々活動しています。
  • このエントリーをはてなブックマークに追加
  • LINEで送る

YouTube チャンネル登録

講義など動画を使った形式の方が良いコンテンツは動画にしています。ぜひチャンネル登録を!

メルマガ登録

メルマガ登録ページからご登録ください。 数学・物理の専門的な情報と大学受験向けのメルマガの 2 種類があります。

役に立つ・面白い記事があればクリックを!

記事の編集ページから「おすすめ記事」を複数選択してください。