データベース(3)
DBMS
データベース管理を行うミドルウェア
主な機能
データベース言語機能 | :SQLによるデータ定義と操作を提供 |
トランザクション管理機能 | :トランザクションの管理を行う |
同時実行制御機能 | :複数のトランザクションによる同時更新での |
矛盾を防止 | |
障害回復機能 | :障害時の回復手段を提供 |
機密保護機能(セキュリティ) | :データへのアクセス制限管理や暗号化を行う |
データベース生成/再構成 | :データ領域の確保や再構成を行う |
トランザクション管理
ACID特性
トランザクション管理を実現するうえで重要なことは、トランザクションのACID特性を保つこと
Atomicity | 原子性:正しく安全に処理されるor異常時には全く処理されない |
Consistency | 一貫性:データベースの内容に矛盾がないこと |
Isolation | 独立性:複数が同時に実行されても影響を受けない |
Durability | 耐久性:正しく完了したものは、障害が発生しても失われない |
コミットとロールバック
コミット | :トランザクションを正しく完全に処理させる |
ロールバック | :異常となってまったく処理させない |
同時実行制御(排他制御)
複数のトランザクションによる同時更新時に、データベースの整合性を保つための機能
ロック方式
あるユーザが更新したり参照したりしているデータを、他のユーザが使用できないようにすること
占有ロック・共有ロック
占有ロック(排他ロック):データの更新と参照の両方をロックする
共有ロック(参照ロック):データの更新だけをロックする
占有ロック | 共有ロック | |
---|---|---|
更新 | × | × |
参照 | × | ◯ |
削除 | × | × |
他のプログラムによる占有ロック | × | × |
他のプログラムによる共有ロック | × | ◯ |
◯:利用可能 ×:利用不可
先に実行して獲得しているロック | |||
---|---|---|---|
占有ロック | 共有ロック | ||
後から実行して 獲得するロック | 占有ロック | × | × |
共有ロック | × | ◯ |
◯:ロックを獲得可 ×:ロックを獲得不可
ロック粒度
ロックをかける単位(範囲)のこと
基本はデータベース管理システムが自動的に設定するが利用者が設定することも可能
レコード < ページ < 表 < データベース全体 |
デッドロック
複数のトランザクションがデータをロックし合うことで、お互いに処理が進まなくなる状態
●ロック粒度を低くし、データベースへのアクセスの順番を決める
●DBMSによりデッドロックを検出し、回避する
障害管理
データベースの障害発生時の回復を行う機能のこと
回復準備
ログファイルの取得
トランザクションによる更新のつど、それを記録するログファイル(ジャーナルファイル)を取得する
バックアップの取得
データファイルとログファイルのバックアップを定期的に取得、保管する
チェックポイントの取得
トランザクション実行中の状態を保存、リスタートに必要な情報を取得すること
データベース障害と回復処理方法
障害 | 障害内容 | 回復方法 | 必要な情報 |
---|---|---|---|
トランザクション障害 | トランザクション実行中に発生した障害。該当トランザクション以外は正常に実行している | ロールバック | 更新前ログ |
媒体障害 | ディスクに障害が発生し、データの読み書きができなくなる障害 | ロールフォワード | バックアップ 更新後ログ |
システム障害 | トランザクション処理が中断され、リスタートが必要になる障害 | ロールバックor ロールフォワード | 更新前ログ 更新後ログ |
ロールバック
トランザクション実行前の状態にデータベースを戻す。チェックポイントまでデータを巻き戻して、改めて、処理を開始する。バックアップ時のデータは再現されるが、それ以降に行った処理は失われる
ロールフォワード
記録してあるチェックポイントのデータを再現した上で、ログファイルに残っているチェックポイント後の処理を再現し、障害直前の状態まで戻すこと。障害直前のデータが再現される
システムを再始動する方法
ウォームスタート
ロールフォワードでも復旧できなかった障害について、トランザクションを再処理してデータベースを回復する
ウォームスタート方式の再始動では、チェックポイントまで戻り、ログを使用してデータベースを回復し、未完了のトランザクションを見つけて実行し、データベースを回復する
ハードウェアには影響のないトラブルによる再起動なので、ハードディスクなどの二次記憶上にあるデータベースへの被害はない
コールドスタート
システムを完全に初期状態に戻して回復する方法
コールドスタート方式の再始動は、一度電源を遮断して、メモリの内容などを完全にクリアしてからコンピュータを起動することで、チェックポイントでのログなどは使用されない
ハードディスククラッシュなどで、二次記憶上のデータベースが失われる媒体障害などのケースが考えられる
性能向上
インデックス方式
表への処理を高速化するためのデータ構造。表の中の1個以上の列を対象に作成され、ランダムな参照処理や一定の順序でのレコードへのアクセスの効率を高めることができる
B+木インデックス
木構造のページ群にアドレス情報を格納し、インデックス値を比較しながら二分探索法でデータを探索する場合に使用される。B+木ではデータの木の最下層の葉のノード(リーフノード)に格納され、キーは内部ノードに記録される
ハッシュインデックス
キー値を基に、ハッシュ関数を用いてデータの格納位置を求め、直接探索する場合に使用される。異なるキー値が同一格納位置(シノニム)になることがある
ビットマップインデックス
キー値ごとにビットマップ(ビットの配列)を作成し、各ビットはレコードの位置に対応していて、キーを含んでいるかを表す。ビット演算を行うことにより複数のビットマップインデックスを同時に利用することが可能なので、複雑な検索に適している
配置インデックス
配列の各要素を探索する場合や文書を全文検索する場合に使用される。一つの行から複数のキーが抽出される。転置索引、逆引き索引
応用
アーカイブ
データを圧縮して保存した大規模な記録や資料、または複数のファイルを一つにまとめたもの。アーカイブの保管施設・仕組みをアーカイブズという。より少ない情報量でデータを保存可能
コーパス
自然言語の解析などの目的で収集された大量の文章を蓄積したテキストデータベースのこと。品詞や活用後の基本形などの情報が単語ごとに標識(タグ)として付与され、タグ情報によって、語彙の品詞別出現頻度などを調べることも可能。言語研究や辞書編纂の場で広く使われている
シソーラス
単語を上位/下位関係、部分/全体関係、同義関係、類義関係などによって分類し、体系づけた辞書、データベース
ハイパテキスト
文書表示のためのユーザインタフェースの一つ。複数の文書(テキスト)を相互に関係づけ、結び付けられて文書
データウェアハウス
時系列に蓄積された大量の業務データの中から、各項目間の関連性を分析するシステム。多次元データベースであり、OLAP(オンライン分析処理)ツールを用いて様々な分析処理を行う
ダイス
多次元分析において、サイコロのように視点を変えてデータ分析を行う手法のこと
データクレンジング
業務システム間のデータ属性/形式、不完全なデータ、コード体系の不完全一致などを統一すること
ドリルダウン
分析データの階層構造に従って、概要から詳細へとデータ分析を進めること
ロールアップ
分析データの階層構造に従って、詳細から概要へとデータ分析を戻すこと
データマイニング
大量の時系列データを分析して、その関連性や規則性を発見する手法のこと
 

