ホーム » 2011 » 1月 » 18

日別アーカイブ: 2011年1月18日

2011年1月
« 12月   2月 »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

最近の投稿(電子情報)

アーカイブ

カテゴリー

PTAMを使うためにC++再学習が必要

画像処理の制御ネタで、PTAMを使って…と思っているのだが、 実際にコードを見てみると、C++のテンプレートやらauto_ptrやらを、 たっぷり使っている。 まだまだC++でも理解不足があるので、 改めてSTLやらコンテナやらを読み直し。 以下のページは、説明がなかなかよくまとまっている。

情報構造論のテストで、このあたりの基本データ構造をCで書いて出題するのもアリだよな…

電子情報のインフルエンザ状況

周囲でのインフルエンザの拡大の中、 今日は今シーズン最初の4Eにてクラス閉鎖が発生となった。

そして、今日担任クラスでも1名のインフルエンザが発生した。 電子情報の現状は、以下の通り。

3年 インフルエンザA?×2名
4年 インフルエンザB(寮生)×1名
5年 インフルエンザA×1名
  インフルエンザB×2名
  類似症状および欠席×4名

データベースの内部構造(ロックとB木)

データベースの内部構造の説明として、排他処理やB木について解説を行う。

トランザクションとは、首尾一貫したデータに対する一連のデータベースの操作の集合で、 データの一貫性が保証されなければならない。 (A)原子性、(C)一貫性、(I)隔離性、(D)耐久性が重要であり、 一貫性を完全に反映させたCOMMIT状態から、トランザクションを受けつけ、 一貫性が保証されない時はROLLBACK文により処理が無かったものとして、 改めてトランザクションを行ったりする。

排他処理

トランザクションは並行して行われたりするが、一貫性を保つために順序が重要。 同時実行制御では、(a)ロッキング方式(b)時刻印方式(更新の不都合の検知にタイムスタンプを使う)などがある。 ロッキング方式では、ロックの粒度(カラム/レコード/テーブル/DB全体)も重要。 粒度が大きいと、排他処理で待ちが増える。 ロックの種類には、共有ロック(Readロック:一般的に読み出しで他のアクセスを許す)や、 専有ロック(Writeロック:書き込み時で他のアクセスを許さない)がある。 ロックで排他状態になれば、待たされる…

ロックでは、資源解放を待つ状態になるが、資源が複雑に絡み合い、お互いがUnlock待ちになると、デッドロック状態が発生する。これを防ぐために、(a)ロックの一括獲得、(b)使用データの順序付け、(c)トランザクションの優先順位などを設けたりするけど、完璧なデッドロック解消は不可能。

DB内部構造:B木

2分木などの方式では、データの登録順序によっては木の左右のバランスが悪くなって、 検索効率の低下が発生する。2分木であれば、AVL木の手法でバランスを取るけど、 面倒な処理となる。

B木では、1つの節は位数Nのデータと、N+1件の節へのポインタを持つ。 1つの節の中のデータ件数は、N/2以上、N以下になるようにする。 データをB木に追加する時、データ個数がN+1個になった時、 中央値のデータを、上位ノードに繰り上げて2つの節に分ける。 このようにすることで、木のバランスを保つようにする。 (参考:昨年度資料)


Wikipediaより引用

Wikipediaより引用