2016年4月3日日曜日

データベーススペシャリストの勉強メモ6

平成24年度春季の午前Ⅱ問題をやりました。
間違えた/間違えそうだった問題のポイントのまとめです。
体現ビューとは、ビューの結果を実表のようにデータベースに格納することで、通常のビューに比べて参照を高速化したビューのこと。体現ビューは通常のビューとは異なり、参照している実表のデータ変更を体現ビューに反映させるために、リフレッシュという作業が必要になる。
2相ロックプロトコルはロック獲得フェーズとロックの開放フェーズを2つに分離することであり、ロックの順番を一定にするわけではないので、デッドロックが発生することがある。
共通フレーム2007の企画プロセスの「システム化構想の立案」は、システム化を進めるにあたって、システム化の目的や方向、効果などを明確にし、経営レベルの実施可否を判断するためのアクティビティである。
そろそろ単純な知識不足による誤答は減ってきました。

7割程度は問題なく得点できるようになってきたので、午前2はほぼ大丈夫かもしれません。

直前でもう1回ぐらい復習するとして、残りの時間は午後問題の演習に費やしたほうが良さそうですね。

2016年4月2日土曜日

データベーススペシャリストの勉強メモ5

平成25年度春季の午前Ⅱ問題をやりました。
間違えた/間違えそうだった問題のポイントのまとめです。
WHERE句はグループ化されたデータに対して適用できない。グループ化された結果に条件を指定する場合は、HAVING句を用いる。SELECT文の一般的な構文は、下記のようになる。
SELECT 列名リスト FROM 表名 WHERE 抽出条件
          GROUP BY グループ化列名リスト HAVING グループの抽出条件
表やデータベースの中で、同じデータ型(デフォルト値、条件指定を含む)が頻繁に利用される場合、それらを新しいデータ型として定義することができる。それをドメインという。ドメインを定義するにはCREATE DOMAIN文を用い、ドメインを削除するにはDROP DOMAIN文を用いる。
CREATE DOMAIN {ドメイン名} [AS] {データ型} [DEFAULT句] [CHECK制約]
READ COMMITTED:
他のトランザクションの行った変更に関しては、常にコミットされたものだけを受け取る。そのため、他のトランザクションによる自身の更新結果の損失(ロストアップデート)、他のトランザクションの処理中の結果の読み込み(ダーティリード)は生じない。しかし、あるトランザクションがデータを複数回読み込む場合、その間に他のトランザクションの変更がコミットされて、読み込むたびに同一データの内容が異なる(アンリピータブルリード)、前回の読み込み時には存在しなかったデータを読み込む(ファントムリード)などの現象が生じる。

READ UNCOMMITTED:
他のトランザクションの行った変更前のデータを読み込む。したがって、ロストアップデートは生じないが、ダーティリード、アンリピータブルリード、ファントムリードが生じる。
REPEATABLE READ:
あるトランザクションが実行されている間は、データが途中で他のトランザクションによって変更されることなく、同じデータを何度読み込んでもその内容は同じである。そのため、ロストアップデート、ダーティリード、アンリピータブルリードは生じないが、ファントムリードが生じる。

SERIALIZABLE:
同時に実行されるすべてのトランザクションが、各トランザクションが順番に実行されたときと同じ結果になるように保障する。そのため、ロストアップデート、ダーティリード、アンリピータブルリード、ファントムリードは発生しない。

隔離生水準 ロスト
アップデート
ダーティ
リード
アンリピータブル
リード
ファントム
リード
READ UNCOMMITTED ×
READ COMMITTED × ×
REPEATABLE READ × × ×
SERIALIZABLE × × × ×
トランザクション処理でデータベース更新処理を行う場合、更新結果を定期的にディスクに反映するチェックポイントを設けて、チェックポイント以前に終了したトランザクションの更新処理を保障する。そのため、チェックポイント以前に終了したトランザクションの回復処理は不要である。
トランザクションは、メモリ上のバッファに読み込まれているデータに対して更新処理を行うため、障害が発生した時点で、バッファの内容がデータベースに反映されていない状況が起きる。ログファイルの内容とデータベースの内容が一致していなければ、ログファイルによる障害復旧は困難になる。そこでDBMSでは、バッファのデータの内容をデータベースに反映し、ログファイルの内容とデータベースの内容を一致させるタイミングとして、チェックポイントを設けている。チェックポイントでは、チェックポイントレコードをログに書き出すとともに、バッファのデータをデータベースに書き出す。
デッドロックは、複数の資源を共有している複数の処理において、互いに相手のロックが解除されるのを待って、処理が進まなくなる状態である。それぞれの処理が複数の資源に対し、逆の順番でロックをかけることによって生じる。したがって、それぞれの処理が複数の資源に対して同じ順番でロックをかけるようにしておけば、デッドロックは回避できる。
WAL(Write Ahead Log)プロトコルは、データベースシステムが実行した処理をログファイルに記録する場合に、ログを記録してから処理を実行するというログ先書きの手法である。WALを採用することで、コミット済みのデータをデータベースに書き込む前にDBMSが停止しても、記録してあるログを用いてデータを回復することができる。
セミジョイン法:
2つの表の結合演算において、一方のサイトの表の結合に必要な列(属性)だけをもう一方のサイトに転送し、結合演算した結果を返送してもらい、再度結合する。

入れ子ループ法:
一方の表の行を外側のループとして取り出し、もう一方の表のすべての行を内側のループとして比較照合して結合演算を行う。

ハッシュセミジョイン法:
一方の結合対象列の値をハッシュ関数で変換したハッシュ値をもう一方のサイトに転送し、もう一方のサイトでも結合対象列の値をハッシュ関数で変換し、ハッシュ値同士で結合演算を行う。

マージジョイン法:
2つの表の結合をする前にあらかじめ結合対象列でソートしておく。ソートマージ法ともいう。
ハミング符号:
データを構成するビット列の中に誤りがあったとき、それを検出し訂正できるように構成された誤り訂正符号である。データを構成するビット列(情報ビット)に、それらから作った冗長ビットを追加することによって、2ビットの誤り検出と1ビットの誤り訂正を可能にする。一方、パリティチェック方式は、通常1ビットの誤りは検出できるが、その誤りを訂正することはできない。
シンプロビジョニング:
ストレージ資源を仮想化して割り当てることで、物理容量を削減する技術である。利用者には要求通りの磁気ディスク容量(仮想容量)を提供し、使用時には必要とする物理容量を割り当てる。これによって、ストレージの無駄をなくし、有効活用が可能になる。また、システム使用開始時には、将来的に必要になるであろう容量を割り当てるだけで、実際にその容量が必要になった時点でストレージを増設することができるため、システム開発時の詳細な容量プランニングが不要になり、省力化に貢献できる。

コンソリデーション:
複数のコンピュータやアプリケーション等を整理統合すること。運用・保守費用の低減を実現する。

ライブマイグレーション:
仮想マシン上で動作しているOSやソフトウェアを、停止させることなく異なるコンピュータに移動させること。
カバレージモニタ:
テスト対象となる全経路のうち、どの程度(何%)テストしたかを計測する動的テスト支援ツール。テストの進捗度合いを評価するために使用される。
記号実行ツール:
実行データではなく記号化した形式のデータをテストデータに用い、プログラムの実行シミュレーションを行う静的テスト支援ツール。

コードオーディタ:
プログラミング規約を設定し、その規約に違反してないかを自動検査するコード検査ツール。静的テスト支援ツールの一つ。