2016年6月17日金曜日

データベーススペシャリスト合格!



データベーススペシャリストは無事に合格でした。

午後試験はそれなりに手応えはあったのですが、こうして見てみると結構ギリギリですね。

今回はDB設計の問題を選択したので、もし落ちていたら来年は運用系の問題を選択しようかなどとと考えていました。

試験対策の都合上、運用系の勉強はほとんどできなかったので、これで「データベーススペシャリスト」を名乗るのも少々おこがましいような気もします。

今年の秋季試験はネットワークスペシャリストを受けてみます。

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

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

2016年3月27日日曜日

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

平成26年度春季の午前Ⅱ問題をやりました。
間違えた/間違えそうだった問題のポイントのまとめです。
クレジットカードシステムの家族会員情報のように、本会員情報と関連しており、本会員情報が存在しなくなれば、家族会員情報も存在しなくなるような実体を、弱実体(week entity)という。
弱実体に対して、通常の実体を強実体(strong)と呼ぶことがある。
第3正規形において存在する可能性がある関数従属は、従属キーの真部分集合から他の候補キーへの真部分集合への関数従属だけ。
カーソルで示された行の指定された列値を更新する構文は下記のようになる。
UODATE 表名 SET 列名 = 値 WHERE CURRENT OF カーソル名
属性がn個ある関係の異なる射影の数は2^nとなる。
※射影の数をビットで表す。n=4の場合は、0000〜1111。
複数のトランザクションが同時実行された結果と逐次実行された結果が等しい場合、トランザクションの直列可能性(serializability)が保証されているという。直列化可能性は、ACID特性の独立性と同等な性質を意味する。直列化可能性を保証する仕組みとして、2相ロック方式、木制約方式がある。

隔離生水準が低く、トランザクション間の干渉が起こり得る状態は、直列化可能性が保証されていない状態である。直列化可能性が保証されていれば、隔離生水準は高くなる。
ダーティリード(Dirty Read)とは、あるトランザクションが更新したコミット前のデータを別のトランザクションが読むことによって発生する不都合である。トランザクションT1が更新した行をトランザクションT2が読んだ後、T1がロールバックされる。この場合、更新された行は元に戻ってしまい、T2は存在しない値を読んだことになってしまう。
DBMSにおけるデッドロックの検出は、待ちグラフやタイマー監視によって行われる。
資源割当表と時刻印管理表は、デッドロックを回避するために使用されるもので、デッドロックの検出はできない。
トランザクションの優先順位管理表は、トランザクションのスケジューリングに使用するデータ構造であり、デッドロックの検出はできない。
RPO(Recovery Point Objective):目標復旧時点 RTO(Recovery Time Objective):目標復旧時間
必要なDBサーバのコネクション数=最大トランザクション件数(TPS)×Webアプリケーションサーバ内留保時間

2016年3月26日土曜日

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

TACの平成28年度春季合格目標の公開模試に行ってきました。
午前Ⅱ試験の間違えた問題のポイントのまとめです。
関係モデルは、論理データベースを作成する際に用いられる。
データ構造上の制約条件がほとんどなく、数学的な概念に基いて理論付けされている。
関係演算の除算の結果は、下図のようになる。
B列の値が異なるため、"A=2 / B=c" と "A=3 / B=a"の組み合わせは該当しない。
R
A B
1 a
2 b
2 c
3 a
3 b
4 c
S
A
2
3
R÷S
B
2
2相ロック方式では、トランザクションが獲得するロック数が単調に増加し、単調に減少する。
トランザクション間の干渉許容度は、高い順に下記のようになる。
1. read uncommited
2. read commited
3. repeatable read
4. serializable
パスワードリスト攻撃の被害を防ぐための利用者側の対策としては、インターネットサービスごとに異なるパスワードを設定することが有効。
依存関係のない並列実行可能な処理を一つにまとめて実行できるようにすることで、プロセッサの高速化を実現する技術は、VLIW
上記以外にケアレスミスで間違えた問題が1問あったので、25問中18問正解という結果でした。正答率は72%なので、合格ラインの60%はクリアできています。

午後Ⅰ試験に関しては、記述式なので正確な得点は採点結果が戻ってくるまでわかりませんが、解答を覧る限りでは、選択した問1、問2ともにほぼ満点です。少なくとも、合格ラインの60%はクリアできています。

午後Ⅱ試験も記述式なので、正確な得点はわかりませんが、解答を覧る限りでは、選択した問2の7〜8割は正しく解答できていました。合格ラインの60%はクリアできているように思えます。時間内に完璧な回答を仕上げるのは困難ですが、問題文を丁寧に読み込んで、エンティティタイプ、リレーションシップ、関係スキーマを整理していけば、なんとかなりそうです。

2016年2月21日日曜日

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

平成27年度春季の午前Ⅱ問題とTACの午前Ⅱ対策実力テストをやりました。
間違えた問題のポイントのまとめです。
R÷Sの関係演算結果は、Sの行値をすべて含むRの行値を抜き出し、その中からSの列を除いたものとなる。
ビットマップインデックスは、その条件を満足するか否かを表したインデックス。ビットマップ間の論理積や論理和の計算は非常に高速に行われるので、不定形の検索に適し、ビットマップインデックスを適切に設定しておくことで、小数の異なる値を持つ列への検索が有効にできる。データウェアハウスやOLAPなどで用いられる。
ダーティリードとは、あるトランザクションが更新したコミット前のデータを他のトランザクションが参照することによって発生する不具合。
複製サイト間で更新内容を厳密に同期させずに、同期の一時的な遅れを許容することが結果整合性。
AESの鍵長は、128ビット/192ビット/256ビットから選択できる。鍵長を任意に指定することはできない。
割込みには、外部割込みと内部割込みがある。
外部割込みは、プログラムの実行とは独立した原因による割込みで、入出力割込み、タイマ割込み、電源異常割込み、各種装置の異常などがある。
内部割込みは、プログラムの実行が原因で発生する割込みで、SVC割込み、モード違反、ページフォールト、オーバフロー、メモリ保護違反などがある。
シェアードエブリシングとは、複数のサーバが同一のデータベースに対して操作する技術のこと。
アクティブ-アクティブ構成では、その複数のサーバを同時に稼働させて並列に処理を行うことができる。
概念データモデルは、企業のモデルから、データベースに格納すべきデータを全体的に整理したデータモデル。
多くのDBMSにおいて、索引は前方一致で利用され、中間一致や後方一致には利用されない。したがって、複合索引においても、先頭の項目からつなげて指定しない場合、有効性は低くなる。
ファイル間接近配置は、複数のテーブル(ファイル)の関連するレコードを、同一テーブルに格納する方法。
ストアドプロシージャの呼び出しは、DBMSの通常機能を用いて行うことができるので、言語に制約されることなく利用できる。
2相コミットメント制御での協調的終結プロセスでは、指揮プロセス(主サイト)からの指示がないまま一定時間経過した関係プロセス(従サイト)が、他の関係プロセスに状態を問い合わせることによって、コミットまたはアボートを決定する。

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

TACのデータベーススペシャリスト精選問題集のp.1~p.60を勉強しました。
間違えた問題のポイントのまとめです。
情報モデルによって現実世界から抽象化された概念データモデルを、DBMSの表現規約に従って変換したデータモデルのことを、論理データモデルという。
ON DELETE NO ACTION:参照制約が崩れるような削除を行うとエラーになる。
ON DELETE CASCADE:参照しているテーブルの値も同時に更新される。(削除される。)
ON DELETE SET NULL:参照しているテーブルの値がNULLになる。
等結号:=で結びつけた結合演算。片方の表に存在しない行は削除される。
自然結号:等結合であり、2つの表に共通の属性は片方しか含まない。
外結合:片方の表に存在しない項目はNULLになる。
和演算:共通の行は一つの行にまとめられる。
直積演算:2つの表の次数を加えたもの。
トランザクションの正規化:トランザクションを標準データと標準プロセスのカプセル化と対応させて分割すること。
NOT EXISTS:trueとfalseしか返さないため、NULLの行も、存在しない=trueになる。
副問い合わせで*を使うと、複数の属性が同時に選択されるので、NOT INではエラーとなる。
更新可能なVIEW:UNION
更新不可能なVIEW:DISTINCT、GROUP BY、HAVING、副問い合わせ
B+木の特徴:
・実レコードのポインタは葉ページにある。
・葉ページはポインタのみ、実レコードではない。
・動的に更新される。
・逐次アクセスに向いている。
ロストアップデート:トランザクションが更新した値を、別のトランザクションが別の値に更新してしまうこと。
ノンリピータブルリード:トランザクションがコードを参照後、別のトランザクションがレコードを更新してコミットした結果、再度、レコードを参照したときに値が異なること。
再構成機能:データベースの利用法の変化に合わせて、項目の追加や変更、インデックスの追加設計を行うなど、運用中のデータベースのデータ構造を変更して新たにデータベースを構成する機能。
再編成機能:データベースの内部スキーマを変更せず、データの追加、更新、削除で発生したオーバーフロー領域や再利用できない未使用領域を解消し、物理ファイルのアクセス効率をアップする機能。
共有ロック中に専有ロックはできる。
DB単位だけでなく、テーブル単位、ページ単位、レコード単位でロックできる。
直列可能性判定グラフが閉路になっている場合、トランザクションは直列可能にならない。
時刻印アルゴリズム:トランザクションの時刻印と更新時刻印を照合する。
楽観アルゴリズム:更新されていた場合、トランザクションをやり直す。
時刻印アルゴリズムも楽観アルゴリズムもロックをかけない。
2相コミットメントでセキュアを送信しても、いきなりコミットされるわけではない。
セキュア中に指揮プロセスに異常が発生すると、ブロック状態となる。
ACID特性とDBMSの機能の対応:
原子性(Atomicity):ロールバック
一貫性(Consistency):ドメイン制約
独立性(Isolation):2相ロック
耐久性(Durability):バックアップ
情報検索の再現率(Recall Ratio):(検索された中の質問に適合する件数)/(全データベース中の検索した質問に適合する件数)
情報検索の精度(Precision Ratio):(検索された中の質問に適合する件数)/検索された件数)