投稿

ラベル(データベーススペシャリスト)が付いた投稿を表示しています

データベーススペシャリスト(応用技術)

イメージ
網走で流氷を見ていたので2日間ほど間があいてしまいました(苦笑)。 流氷の速度計算と着氷予測とかの計算なんかも案外、観光には有効かも しれないです。さて本題、いよいよ最終章です。 行ってみましょう。 1: レプリケーション ・複数のデータベース間で更新したデータを自動的に反映させる。 ・ 同期レプリケーション(同期更新) 同一トランザクションで2つのサイトを更新する。→負荷が高い。 ・ 非同期レプリケーション(非同期更新) トランザクション完了後にバックアップサイトを更新→更新が遅い。  2: OLAP(多次元分析) ・ OLAP(On-Line Analytical Processing) データを多角的に見て法則性を分析する。 ・ MOLAP(Multi-Dimensional On-Line Analytical Processing) 多次元データベース を用いた分析処理 ・ ROLAP(Rerlational On-Line Analytical Processing)     関係データベースを用いた分析処理 ・ スライシング 2つの軸を選択して特定の面だけを参照する。 ・ ダイシング サイコロを転がすようにデータの軸を変える。 ・ ドリルダウン 集約されたデータを細かく砕いていく。 ・ SQL/OLAP SQLのOLAP拡張 3: データマイニング 大量に 蓄積されたデータから隠れた規則性を見つけ出す。 規則信頼度が高くても規則支持度が低ければ意味が無い。 規則支持度が高いと規則信頼度は低い。 ・規則信頼度 結論部の数/条件部の数 ・規則支持度 結論部の数/全体の数 4: データウエアハウス ・主題指向(Subject-Oriented) データ中心でデータを格納する。 ・ 統合(integration) データ体系を統一する。コード体系や意味、名称の統一 ・ 時系列(time-variant) 過去から最新のデータまでを保持する。 ・ 不変性(nonvolatile) データが不変。更新されない。 5:メタデータ、データ辞書、リポジトリ ・ メタデータ データに関する情報のこと、データベースだと 「表定義、ビュー...

データベーススペシャリスト(分散データベースシステム)

イメージ
さて2日間おやすみしてしまいましたが、本日は 分散データベース について 進めます。 実際の運用だとかなり大変そうですね。 1: 分散データベースシステム 定義 ・分散データベースシステムとは 地理的、論理的に分割した複数のシステムが 通信手段を介して結合、強調してまとまった処理を行うシステム ローカルサイトとリモートサイトからなる。 ・利点 危険分散:障害の局所化と災害時のリスク分散 負荷分散:複数マシンに分割して格納することで負荷を分散 2:分散データベースにおける 透過性 ・アクセス透過性 ローカルサイトでもリモートサイトでも同じ方法でアクセス可能 ・位置透過性 データの場所を利用者に意識させない。 ・重複透過性 1つの表が複数あったりサイト間でデータの複製が存在していても 利用者に意識させない。 ・分割透過性 1つの表が複数のサイトにまたがって格納されていても意識させない。 ・移動透過性 表を格納しているサイトを変更しても利用者に格納先の変更を意識させない。 ・障害透過性 いずれかのサイトで障害が発生しても隠蔽してしまう。 ・並行透過性 複数サイトから同時に並行して操作できる。 ・規模透過性 アプリケーションやOSに影響を与えずにシステム規模を変更できる。 3: 分散データベースでの表の結合方法  ・セミ結合(Semi-Join)   通信負荷を小さくする方式。射影結果を結合相手のサイトに 送信して表を結合してから自サイトにその結合結果を転送する。 ・ 分散入れ子ループ結合 一方のサイトから射影と選択を行った外表の行を1行ずつ他方の サイトに転送して受け取った各行に結合処理を行う。 *結合する表がリモートサイトの場合はセミジョインのほうがいい。 ・分散併合結合 一方のソート結果他方に転送してマージ処理を行ってから リモートの処理結果をローカルに転送する。 ・ 分散ハッシュ結合 行数が少ない方の表の検索結果を他方のサイトに転送して ハッシュ表を作成してからハッシュ結合を行う。 4: 2相コミットメントプロトコル コミット準備→コミット最終指示というパターン ・サブトランザクション 各サイト内のトランザクション ・グ...

データベーススペシャリスト(インデックスとアクセス手順)

今日は インデックス の話です。よくデータベースの検索スピードが遅いと インデックスを張ればいいとかいう人がいますが・・・・。 更新系、特に基幹系のシステムでは逆効果になるケースもあったりする ので要注意です。 1:インデックス ・ B+木インデックス バランス木 なので追加、削除、更新の際にすべての リーフページ の深さ (階層レベル)が同じになるようにメンテナンスされる。 ※ルートページを除く各ページ内の利用率が50%以上になるようメンテナンス ※B木インデックスの位数がnのとき最大「2n+1」の下位ページをもつ。    ORDER BY句でもインデックス効率を低下させないようにしたのがB+木     ・ ハッシュインデックス   ハッシュ関数の値からデータの位置情報を求めてそこから 行識別子(ROWID) を求める。      衝突(コンフリクト) :同じ関数値が求まってしまう。   同義語(シノニム) :同じ関数値のキー値同士 ・ ビットマップインデックス 格納される値の種類が少ない場合に使われる。データウェアハウスで有利。 ・リンクインデックス ポインタによって主キー⇔外部キーの参照を高速化 他のインデックスと組み合わせるとさらに高速化する。 ・ 結合インデックス   結合キーで検索するときに高速化するインデックス ・その他のインデックス n-gramインデックス :全文検索用 四分木インデックス :地図などの空間情報検用 UB木インデックス  : B木の改良版検索効率を向上させているよう 2:インデックスの効果と弊害  ・ インデックスの効果   アクセスデータ絞り込みによるI/O回数とCPU時間の削減 キー値順[昇順、降順]の行データ取得によるソート処理削除 *キー値の種類が多いほどキー値の重複が少なくなりインデックスによる 絞込み率もよくなるため検索効率がよくなる。 ・ インデックスの弊害   大量データの ランダムアクセス によるI/Oの増加   データ更新時のインデックスメンテナンスによるオーバーヘッド増大 3: クラスタインデックス 複数(n)行検索時の参照データページ数を削減する効果がある。 I/O削減: ヒット行数/ページ内...

データベーススペシャリスト(障害回復)

イメージ
昨日は飲んでて手が回りませんでした。今日は気を取り直して。 障害回復 です。データベースのファイルをコピーしてポンと戻す ってなわけには いかん みたいです。 1:障害の種類 ・ トランザクション障害 トランザクションが異常終了する。ロールバックも含む。 ・システム障害 DBMSの再起動が必要となる場合。 ・メディア障害(ディスク障害) データベースの物理的障害。 2: 前進復帰 と 後退復帰 3: ロギング 障害時にデータベースを復旧させるために必須 データベースを格納する記憶装置より高信頼性が 必要。 ・ディスクの ミラーリング ・ ログファイルの二重化 ・ 非同期遅延書き込み データベースの更新性能を向上させるために非同期で 記憶装置に書き込みを行う ・ 書出ログの種類 トランザクション開始ログレコード 更新前データログレコード=後退復帰 更新後データログレコード=前進復帰 コミットログレコード ロールバックログレコード トランザクション終了ログレコード ・ WAL(WriteAheadLog)プロトコル ログ先行書 更新データ書出前に更新ログ書出 コミット時ログ強制書出 トランザクションがデータベースに対して行ったすべての更新ログを コミット前に書き出す。 ・ トランザクションの障害からの回復 障害が発生したトランザクションを後退復帰させる。 ・ チェックポイント とシステム障害からの回復 チェックポイントである時点の更新状況リストを書出 ・メディア障害からの回復 バックアップファイル復旧後にロールフォワードで復旧 ・ フルバックアップと差分バックアップ フルバックアップで全体をバックアップ、差分バックアップは 前回バックアップとの差分だけをバックアップする。 バックアップからの回復には 「フルバックアップ+すべての差分データ」が必要。 データベースを停止してバックアップ するんならファイルコピーして やればいいけど オンラインバックアップ だとデータベースを動かしたまま コピーする必要がある。当然前者の方が処理は早く終わるけど今や24h365日 稼働が当たり前のシステムなので負荷が重くてもオンラインバック...

データベーススペシャリスト(トランザクション管理)

イメージ
本日IPAのページで申込しました。DBスペシャリスト。 まだ不十分かなと思いつつも、追い詰めんとやらないので 申し込みしときました。残り90日です。やれるだけのことは やっておこうと思います。  1: トランザクション とは ・論理的にそれ以上分割することができない一連の操作 ・回復に関する基本単位となるSQL文実行の並び トランザクション中のすべての操作は実行されるか実行されないかの いずれか(all or nothing) 2:トランザクションの指定 ・ COMMIT 文 該当のトランザクションで実行された更新を反映する。 ・ ROLLBACK 文 トランザクション処理が失敗したときに処理結果を反映させない。 ・ TPモニタ 配下の場合 アプリケーション→TPモニタ→DBMS ※TPモニタがDBMSにCOMMITやROLLBACKを発行 3: ACID特性 ・原子性(Atomicity): すべて実行されるか全く実行されないか ・一貫性(Consistency):   データベースの内容が矛盾のない状態 ・隔離性または独立性(Isolation): 同時実行でも順番に実行しても結果が一致  ・耐久性(Durability): トランザクションが正常終了すると更新結果はDBから消えない。 4: 同時実行制御 ・ロック方式 ロックをかけて他トランザクションからのアクセスを待たせる。 → デッドロック の可能性がある。 ・楽観的方式 データが他のトランザクションに更新されていないことを確認してから 更新する。 →デッドロックにはならないがトランザクションのロールバックが多い。 ・時刻印方式 トランザクションごとにタイムスタンプを保持して比較する。 データアクセスが競合した場合は先にアクセスした方を優先。 → 分散データベース で有効 5: 排他制御(ロック方式) ・ 更新の消失(lost update) あるトランザクションがデータを参照し更新している間に 他のトランザクションが同じデータを参照し更新すると データが不正になる。 ・ ロックの粒度 小さい範囲でロックをかけるオーバーヘッドが増加する。 ・ ロックモード 粒度の小さい資源→下...

データベーススペシャリスト(整合性機能、表定義・ビュー定義と権限)

イメージ
今回もSQLなんですが、 DDL の部分になります。 今日も張り切って行ってみます。 1: 整合性機能 データベース中のデータ整合性を維持する。 ・ 表制約定義、列制約定義 CONSTRAINT 制約名 ・ NOT NULL制約(非ナル値制約) 列名 NOT NULL 列の値としてナル値をもつことを許さない定義 ・ 一意性制約(UNIQUE) UNIQUE 列名 列の値が表の中で一意になるように制約する。 ・ 主キー制約(PRIMARYKEY) PRIMERY KEY 列名 表の主キーを定義する。一意性制約+NOTNULL制約を指定したのと 同じ効果がある。=>行を一意に識別する。 ・ 参照制約(REFERENCES) FOREIGM KEY 列名 REFERENCES 表名 REFERENCESの後に指定した表のキー ・ 参照制約での参照被トリガ動作 ON UPDATE 参照動作 ON DELETE 参照動作 ・ 表検査制約(CHECK) CHECK(条件)   条件を満たしていなければ行挿入できない。  ・ 定義域制約(DOMAIN) CREATE DOMAIN 定義域名 AS データ型   該当の列に入力できる条件を定義することができる。 ・ 表明(ASSERTION) CREATE ASSERTION 制約名 CHECK(探索条件) 表に制約条件をかける際に使用する。 よく分からないけど・・・。例えば予算表とかいうテーブルに 前年を超える予算しか登録できない様にするというケースで使う。 ・ 列の既定値 DEFAULT 列の既定値をセットする。DEFAULT句を設定しないとNull値が入る。 ・ トリガ CREATE TRIGGER トリガ名 ON 表名 被トリガSQL文 別のテーブルや列を更新したりする動作を定義する。 値の更新前や更新後の動作を定義する。 ・その他の整合性用語 外部キー制約 :参照制約と同義 形式制約 :桁数や型の制約 更新制約:データ更新時に条件を満たす値を持つように制約する。 存在制約 :あるデータが存在するためには別のデータが必要という ような制約のこと。 2: 表定義 、 ビュー定義 と 権限 ...

データベーススペシャリスト(データベース言語SQL)

イメージ
今日は SQL です。室内なのにすごく寒いです。氷点下8度やもんな・・・。 寒いほうが頭が回るはずですが、手がかじかんで寒い。 データベーススペシャリストのSQLは SQL92 がベースらしいです。 1:データモデルとSQL用語の比較 2: SELECT文 ・すべてのデータの選択 SELECT * FROM 表名 ・射影(表中の特定の列の検索) SELECT 列名1,列名2,...列名n FROM 表名 ・選択(表中の特定の行の検索) SELECT * FROM 表名 WHERE 検索条件 ・選択と射影(表中の一部分の検索) SELECT 列名1,列名2,...列名n FROM 表名 WHERE 検索条件 ・検索結果からの冗長行排除 SELECT DISTINCT 列名1,列名2,...列名n FROM 表名 3:検索条件で指定する 述語 ・ ブール演算子 優先順位「( )>NOT>AND>OR」 ・ 比較述語 、 BETWEEN述語 、 IN述語 A  比較演算子  B BETWEEN A AND B IN (A,B....) ・ LIKE述語 LIKE パターン文字列 パターン文字列「%」は任意の長さの文字列 「_」は長さ1の文字列 ・ NULL述語 列 IS NULL ・ 副問合わせ SELECT 列名1,列名2,...列名n FROM 表名 WHERE 条件= (SELECT 列名1,列名2,...列名n FROM表名) 条件部で別表への問い合わせをしたりするときに使う。   複数行の結果を返す副問合わせはエラーとなる。 ・ 限定比較述語 ANY、SOME:いずれかの行を満たすかどうか ALL:すべての行を満たすかどうか ・ EXISTS述語 EXISTS 副問合せ 単純に副問合わせの条件を満たすかどうかということ。 4:結合検索 ・直積演算 SELECT * FROM 表1,表2 2つの表のすべての組み合わせを表示・・・。 ・結合演算 SELECT * FROM 表1,表2 WHERE 表1.列名1=表2.列 1 2つの表を1つのキーで結びつけ ・ 自己結合 SELECT * F...

データベーススペシャリスト(関数従属性と多値従属性および正規化)

今日は幸い第3章と第4章進捗です。 一応、何となくは理解できるけど人に説明しろと言われると 説明できないという概念です・・・。言葉が難しいね。 1: 関数従属性 関係の中でXの値が決まるとYの値が一意に決まると 関数従属性が存在する。という以下の事例。 A→B:Aが決まればBの値が決まる。 {A,B}→C:AとBが決まればCが決まる。 C→{A,B}:Cが決まればAとBが決まる。   ・完全関数従属性: どんな組み合あわせだろうが必ず値が一意になる。 X={A1,A2,A3}のときX→Yならば完全関数従属(以下のケースが成立) {A1,A2}→Y、{A1,A3}→Y、{A2,A3}→Y、{A1}→Y {A2}→Y、{A3}→Y ・部分関数従属性 複数の候補キーもしくはいずれかのキーで値を特定できる。    {A,B}→Cであり、A→CまたはB→Cである場合、Cは{A,B}に部分関数従属する。 ・推移的関数従属性 ある値が決まると別の値が決まって最終的な値を特定できる。    A→B→Cのとき、CはAに推移的関数従属する。   ・ 自明な関数従属性 YがXの部分集合であるとき、X →Yが必ず成立する ・関数従属性の公理( アームストロングの公理系 ) 反射率:Y⊆X⇒X→Y 添加率:X→Y⇒X∪Z→Y∪Z  推移率:X→Y∧Y→Z⇒X→Z ごめんなさいさっぱり分かりません。なぜにこんな難しい言い回しなんだ(泣) さっぱりやけどどうやらひとつのキーが導き出せれば最終的に目的とする値を 取り出すことが出来るということらしい。で乱暴にまとめよう。 2: 多値従属性 教科書読んでもさっぱり意味不明なことが書いてあります。 先人 が調べてくれてます。 ココ の説明がしっくり来るとのことですが・・・ Aが決まればCがなんだろうがBが決まるってどういうこと? 余計にパニックです。まあ正規化が本チャンなんでここはこれで流そう。 3: 正規化 ついに来ました正規化、1つの事実を1箇所に( one fact in one place )です。    DBスペシャリストの天王山とも言えるところですね。 もうひとつは関係データモデルで扱える形...

データベーススペシャリスト(データモデルと関係代数)

今年の本命のひとつデータベーススペシャリストについても テキスト 2周目スタート このテキストはかなりイイです。過去問CDが付いてくるんで午前対策がやり易いです。 欠点としてはCDの問題に解説がないこと位かな・・・。 そのまま読み進んでも理解が薄くなりそうなので、とりあえずまとめてみようかなと ゆっくりとまとめていきます。気が向いたときに進めていこうかと思っています。 1:データモデル ・ データモデリング 実世界→ 論理モデル にすること= ネットワークモデル、階層モデル、関係モデル ・ 概念モデル 実体と関連の紐付け=>エンティティとリーレーションシップで表現する。 「多対多」を「1対多」と「多対1」に落としこむ( E-R図 、 UML記法 ) 2: 関係モデル ・ 候補キー :タプル(行)を一意に識別するための最小の属性をいう ・ 主キー  :候補キーのうち1つを選択したもの、1関係中に1つのみ。 ・ 代替キー :候補キーで主キー以外のもの ・ スーパーキー :これが決まればその関係が決定できるというキー ・ 外部キー :関係間をひもづけるためのキー 3: ANSI/SPARC3層スキーマ構造 ・概念スキーマ:実世界のデータ構造をまとめる ・外部スキーマ:データを利用者に見せる見せ方 ・内部スキーマ:実際にデータを物理配置する。 4: 関係代数 の種類・和集合互換 ・ 和集合 :R∪S(両方の合計) ・ 差集合 :R-S(片方でかぶっていないのだけ) ・ 共通集合 :R∩S=R-(R-S)(両方かぶってる) ・ 直積集合 :R×S(とりあえずかけ合わせた物) ・ 射影演算 :指定されたタテ(列)を抜き出す ・ 選択演算 :指定された横(行)を抜き出す ・ 結合演算 :一致したのを結びつける ・ 商演算 :条件と一致した列を抜き出す。 ・和集合互換:行、列が等しくないと和集合とか差集合、共通集合できないということ まあ言葉としてはたいしたことはないところで覚えてしまえばいいんですが キーの概念とか関係代数は身体で覚えこんだ方がいい気もします。 テキスト以外で補足的に使うためのメモ ◆集合関連初歩 http://noribeat.s38.xrea.com/math/...