SSブログ
午前Ⅱ ブログトップ

午前Ⅱ_自分用まとめ [午前Ⅱ]

復習用問題
1.多対多のエンティティに対して行うモデリングは?
2.関数従属と部分集合について説明せよ
3.隔離性水準を4つ述べよ。またそれぞれの許容する独立性阻害要因を3つ述べよ
4.チェックポイントって何してるポイント?
5.WALプロトコルって何?





■連関エンティティとは
二つのエンティティが多対多の関係の時に、その間に1つエンティティを作ってやる。
たとえば「学生 対 資格」とか「学生 対 授業」とか。。
上記の間に学生一人一人の資格取得状況を持つ「資格取得」とか学生ごとの授業情報を持つ「授業一覧」とかを
挟んでやると1対多という関係になる。



■関数従属とは

”関数従属性とは、「ある属性Aの値が決まるとき、属性Bが一意に決まる」ことをいい、「A→B」と表記します。正規化では、関数従属性に基づいてテーブルの分解を行っていくため、この言葉は非常に大切です。

参考:http://www.atmarkit.co.jp/ait/articles/0605/11/news124_2.html

要するに、さっきの学生 対 資格なら学生番号がわかれば資格取得情報がわかり、その資格の詳細がわかる、的なことだろうか。

★関数従属と部分集合

「BはAの部分集合である」場合、A→B(BはAの関数従属)が成り立つらしい。
数学的にはさっぱりだが、「まあAが全部わかれば、Bもおのずとわかるでしょ」ってことだと思う。


■ISOLATION LEVEL(隔離性水準)
独立性阻害要因を許容するかどうかのレベル。
下に行くほど隔離レベルが強くなる。
・READ UNCOMMITTED:全部保証しない
・READ COMMITTED:ダーティリードだけ発生しない
・REPEATABLE READ:ダーティリード、ノンリピータブルリードが発生しない
・SERIALIZABLE:全部発生しない。ただし、ここまでやるか、という隔離性でスループットは悪くなるみたい。

■独立性阻害要因
・ダーティリード
→別トランザクションAのコミット前の更新情報を読んでしまうもの。
Aがロールバックしてもそのまま更新情報を使ってしまうというダーティなやつ。
・ノンリピータブルリード(ファジーリード)
→一回目でselectした後、別トランザクションAが更新してコミットする。
んで二回目にまた同じselectしたら、更新された値を読んでしまう。
同じデータselectをリピートできないという微妙なやつ
・ファントムリード
→別トランザクションAでデータをinsertする(コミット前)。コミットされてないのでselectしても何も表示されない。
ここでAがコミットする。
するとselectすると急にファントムのごとくAがinsertしたデータが浮かび上がるというホラーのような話。



■チェックポイント
データ更新は、メモリ上(バッファ)で更新→DBに反映、という流れになる。この同期タイミングがチェックポイントだ。


■WAL(Write Ahead Log)プロトコル
⇒ログ先書き。下の順番でコミットを実行
①更新前イメージのログファイルへの書き出し
②更新後イメージのログファイルへの書き出し
③DBの更新

午前Ⅱ ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。