情報処理技術者試験対策のページ>午前対策 目次
テクノロジ系 技術要素 データベース
データベース基本
- トランザクションのACID特性
- 原子性 ( atomicity )
トランザクションがデータベースに対する更新処理を完全に行うか、全く処理しなかったかのように取り消すか、のいずれかを保証する特性で、トランザクションが完了したときの状態は、処理済みか未処理のどちらかしかない
- 一貫性 ( consistency )
データベースの内容が矛盾のない状態であることで、整合性の取れたデータベースに対して、トランザクション実行後も整合性が取れている性質である
- 永続性、耐久性 ( durability )
正常に終了したトランザクションの更新結果は、障害が発生してもデータベースから消失しないこと
- 隔離性、独立性 ( sisolation )
複数のトランザクションを同時に実行した場合と、順番に実行した場合に互いに干渉せず、それぞれの処理結果が一致すること
- 透過性
- 規模透過性
OSやアプリケーションの構成に影響を与えることなくシステムの規模を変更できること
- 並行透過性
複数の作業が平行して行われることが意識されないこと
特にオブジェクトの共有に関して同時に実行される複数の処理の干渉が意識されないこと
- アクセス透過性
ネットワークに接続されている資源に対して、オブジェクトの物理的な位置に関係なく同一の操作でアクセスできること
- 位置透過性
オブジェクトの存在する物理的な位置が意識されないこと
- 複製透過性
オブジェクトがネットワークに複製を持っていても分割されていても意識されないこと
- 障害透過性 ( 障害透明性 )
ハードウェア、ソフトウェアの障害が意識されないこと。傷害が発生した場合、性能が若干低下しても機能が維持できなくてはならない
分散処理システムにおいて、利用者は、システムに障害が起きていることを意識せずに、システムを利用できること
- 移送透過性
オブジェクトの移送が意識されないこと
- 性能透過性
負荷の変化に伴い性能を向上させるために、システムを再構築することを可能にすること
- データベースの制約
- 一意性制約
データベースのテーブル定義において、あるカラムの値が全てのレコードで異っていなければいけないという制約
- 参照制約
- DBMSの整合性(一貫性)制約のうち、データの追加、更新及び削除を行うとき、関連するデータ間で不一致が発生しないようにする制約
-
”社員扶養家族”表の列”社員番号”の値が”社員”表の候補キーに存在しなければならないという制約
- 定義域制約
属性の値がこれ以上細分化できない単純な値(原子値)でなければならないという制約
- 表検査制約
データ挿入、更新時に制約条件をチェックし,条件を満たさないデータの場合は操作を抑止することで表データの整合性を保つための制約
-
形式制約
ある項目のデータ型やけた数などについての制約
-
ドメイン制約
列のとり得る値の範囲を定義すること
- メタデータ
データ自身に関するデータで、データの定義情報が記述されている
データベース方式
- データベースの種類と特徴
- オブジェクト指向データベース
データと手続きをカプセル化して扱う
構造は複雑であるが、動作を含む対象を扱うことができる
データとその処理手順のカプセル化に見られるように、オブジェクト指向の方法論をデータベース設計に応用しようとする試み
-
関係データベース
-
データの集合をいくつかの2次元の表によって表現し、表間は相互の表中の列の値を用いて関連付けたデータベース
- データを表として表現する
表間はポインタなどではなく、相互の表中の列の値を用いて関連付けられる
- 関係データベースの操作
- 結合 ( join )
-
二つ以上の表を連結して、一つの表を生成する
- 関係データベースにおいて、タプル数nの表二つに対する結合操作を入れ子ループ法によって実行する場合の計算量
n^2
- 射影 ( projection )
-
表の中から特定の列だけを取り出す操作
- 次数がnの関係Rに属性なし(φ)も含めて存在する異なる射影:2^n個
- 選択 ( selection )
- 和 ( union )
- 関係データベースのビュー
- 仮想の表(ビュー)を作る目的
セキュリティを向上させるためや表操作を容易にするため
- ビューでは、元の表の列名を異なる名称で定義することができる
- 更新不可能なビュー
ビュー定義にGROUP BY句が含まれるビュー
- ビューのSELECT権限
元の表に対するSELECT権限にかかわらず、ビューに対するSELECT権限があれば、そのビューに対して問い合わせすることができる
- 一つの表に対して更新可能なビューが定義されているときに、このビューの所有者に自動的に付与されるビューに対する権限
元となる表に対してそのビューの所有者が持っているすべての権限
- キー
-
候補キー
-
候補キーのうちの一つが主キーとなり、残りは代替キーとなる
- 関係のタプルを一意に識別できる属性。又は属性の組で極小のもの(極小の組とは、その組から属性が一つでも欠落すると唯一識別性を失ってしまう組をいう)
- タプルごとに、候補キーの値は異なる
-
表の行を唯一に識別できるものが関係データベースの候補キーとなる
-
関係Rのリレーションスキーマ(関係スキーマ)がR(A,B,C,D,E)であり、関数従属A→BC,CD→Eが成立する場合、これらの関数従属から決定できるRの候補キー(ここで、A,B,C,D,Eは属性集合であり、XYはXとYの和集合を表す):AD
- 関係データベースの主キー
一つの表において、複数の項目を組み合わせて主キーとしてもよい
一つの表の中に、主キーの値が同じ行が複数存在することはない
主キーに指定した属性(列)で、レコード(行)を一意に識別できるようにする
レコード(行)を一意に識別するための情報
表と表を特定のフィールドで関連付けることもできる
- 外部キー
- 関係データベースにおいて、外部キー定義を行う目的
関係する相互のテーブルにおいて、レコード間の参照一貫性が維持される制約をもたせる
- 関係データベース上に実装するエンティティの主キーが複合キー
- 複合キーを構成している属性数が多いと扱いにくくなるので、複合キーを連番などの代用キーに置き換え、複合キーを構成している属性を代替キーにすることで扱いやすくする
- 関係データベース上に実装するエンティティの主キーが複合キーであり、複合キーを構成している属性数が多すぎるので、少なくして扱いやすくしたい。この場合の対応
複合キーを連番などの代用のキー(surrogate key)に置き換え、複合キーを構成している属性を代理キー(slternate key)にする
- 関係データベースにおいて、レコード(行)を一意に識別するための情報を主キーと言い、表と表を特定のフィールドで関連づけることもできる
- 関係データベースを3層構造のクライアントサーバシステムで扱うとき、中間層では入力データに基づきデータベースに問い合わせて計算や分析処理を行う
- 定義域
関係データモデルにおいて属性が取り得る値の集合
定義域が異なる属性同士の比較は、本質的には意味がない
- トリガ(trigger)
データの変更操作時に動作させる
- 実表と導出表
- 実表
実際にファイルとして存在する表
- 導出表(ビューテーブル)
実表に対する射影、結合などによって得られた仮想的な表
- 組
関係R(A, B)において、属性Aの定義域の要素は{a1, a2, a3}、属性Bの定義域の要素は{b1,
b2}であり、a1とb1を結ぶ線は、(a1, b1)のように関係Rの要素を表しているときの関係Rの要素を表す語
- 関係データベースにおけるインデックスの設定
-
インデックスの設定に際しては、検索条件の検討だけでなく、テーブルのレコード数についての考慮も必要である
- 主キー以外の列に対してもインデックスを指定できる
- 関係データベースの表の列に利用者がインデックスを設定する目的
データの格納位置への効率的なアクセスが可能となり、検索速度の向上が期待できる
- 関係データモデルにおいて、属性A、Bを考える。
属性Aのドメイン(定義域)はm個の要素から成る集合であり、
属性Bのドメインはn個の要素から成る集合であるとする。
このとき、関係RをR(A, B)とすると、Rには最大何個のタプルがあるか
mn個
- 関係データベースの表を設計する過程で、A表とB表が抽出された。主キーはそれぞれ列aと列bである。この二つの表の対応関係に基づいた表の設計
A表とB表の対応関係が1対1の場合、列aをB表に追加して外部キーとしてもよいし、列bをA表に追加して外部キーとしてもよい
- データベースのモデル
- スキーマ
-
データの性質、形式、他のデータとの関連などのデータ定義の集合
- 外部スキーマ
概念スキーマが変化しても追うようプログラムができるだけ影響を受けないようにするための考え方である
実世界が変化しても応用プログラムができるだけ影響を受けないようにするための考え方
外部スキーマは、データの利用者からの見方を表現する
- 内部スキーマ
直接編成ファイルやVSAMファイルなどの物理ファイルを用いて、概念スキーマをコンピュータ上に実装するための記述
概念スキーマをコンピュータ上に実装するための記述である
- 概念スキーマ
内部スキーマと外部スキーマの中間に位置し、エンティティやデータ項目相互の関係に関する情報を持つ
関係データベースのビューやネットワークデータベースのサブスキーマのことではない
- サブスキーマ
データベースを記録媒体にどのように格納するかを記述したもの
- ANSI/SPARC 3層スキーマ
- ANSI/SPARC 3層スキーマの意義は、物理的データ独立性および論理的データ独立性を確保すること
-
データの論理的関係を示すスキーマと、利用者が欲するデータの見方を示すスキーマを用意することによって、論理データ独立性を実現している
- データベースの3層スキーマアーキテクチャ
概念スキーマは、内部スキーマと外部スキーマの間に位置し、エンティティやデータ項目相互の関係に関する情報をもつ
- データモデル
- 概念データモデル
-
対象世界の情報構造を抽象化して表現したもの
- 弱エンティティ ( 弱実体 )
概念データモデルにおいて、実体Aのインスタンスa
がほかの実体Bのインスタンスb と関連しており、a
が存在しなくなれば、b も存在しなくなるような実体B
- 強エンティティ
エンティティタイプがインスタンスを一意に識別する属性を持ち、ほかのエンティティに依存しない
- 論理データモデル
階層構造、ネットワーク構造、データ構造などの特性を加味して作成したデータモデル
BDMSに依存しない
- 物理データモデル
BDMS固有のデータ構造や性能を考慮して作成したデータモデル
- E-Rモデル
データベースの概念設計に用いられ、対象世界を、実体と実体間の関連という二つの概念で表現するデータモデル
- DBMS(DataBase Management Syste)データベース管理システム
- 排他制御機能
-
同時実行処理でのデータの整合性を保つ
-
DBMSにおいて、同じデータを複数のプログラムが同時に更新しようとしたときに、データの矛盾が起きないようにするための仕組み
- 複数の人が同時に更新する可能性のあるデータには、排他制御が必要である
- 機密保護機能
- 障害回復機能
- ログファイル
- データベースの回復処理のため、データの更新前後の値を書き出してデータベースの更新記録を取ったもの
-
データベースの障害回復に用いられ、データベースの更新に関する情報が格納されているファイル
-
ロールフォワードに備えて、データベースの更新されたページに対する更新後情報を取得する
-
データベースの更新前や更新後の値を書き出して、データベースの更新記録として保存するファイル
- ダンプファイル
ある瞬間のデータベースの内容をまるごとコピーしたファイルで、データベースのバックアップのために作成する
- データベースのデータを更新中のトランザクションが、実行途中で異常終了した際、更新中のデータに対して行われる処理
更新処理をなかったことにするために、ロールバックしてトランザクション開始前の状態に回復する
- ログデータ
媒体障害時のデータベース回復に備え、あるバックアップ時点から次のバックアップ時点までの間のデータとして、稼働中のデータベースとは別の媒体に保存しておく必要のあるもの
- DBMSの媒体障害時の回復法
バックアップコピーでデータベースを復元し、バックアップ取得移行にコミットした全てのトランザクションをロールフォワードする
- システム障害発生時には、データベースの整合性を保ち、かつ、最新のデータベース状態に復旧する必要がある。このために、DBMSがトランザクションのコミット処理完了とみなすタイミングとして適切なもの
ログファイルへのコミット情報書出し完了時点
- 定義機能
スキーマを決める機能
- 保全機能
- 再編成機能
データベースに対する変更操作が繰り返されると、データの物理的な格納位置が複雑複素区になったり、削除領域が利用できない状態になったりする。これを修復し、アクセス性能を向上させるための機能
- DBMSの記憶管理
クラスタリングとは、磁気ディスク装置へのアクセス効率向上を目的とした格納手法
- DBMSがデータベースの更新に対して保証すべき原子性の単位
トランザクションの開始からコミット又はロールバックまで
- トランザクションの同時実行制御に用いられるロックの動作
-
共有ロック中に発生した共有ロックの要求は認める
- 2相ロック方式を用いたトランザクションの同時実行制御
トランザクションは、必要なロック獲得命令をすべて実行した後にだけ、ロック解除命令を実行できる
- TPモニタの配下で動作するアプリケーションプログラムからデータベースをアクセスするときの動作
TPモニタへのコミットとロールバックの指示はアプリケーションプログラムが行い、DBMSへの指示はTPモニタが行う
- 更新前情報と更新後情報をログとして使用するDBMSにおいてログを先に出すWAL
( Write Ahead Log )プロトコルに従う処理
- begin transactionレコードの書出し
- ログに更新前レコードの書出し
- ログに更新後レコードの書出し
- データベースの実更新
- commitレコードの書出し
- end transactionレコードの書出し
- 直列可能性
二つのトランザクションT1とT2を並列に実行した結果が、T1の実行後にT2を実行した結果、又はT2の完了後にT1を実行した結果と等しい場合、このトランザクションスケジュールの性質
- DBMSの記憶管理
クラスタリングとは、磁気ディスク装置へのアクセス効率向上を目的としたデータ格納手法
- スレッド
複数のクライアントからの要求を効率よく処理するために、マルチスレッドが利用される
- DBMSがトランザクションのコミット処理完了とみなすタイミング
ログファイルへの書出し完了時点
- B+木
DBMSにおいて用いられるデータ格納形式のうち、レコード数に応じて索引を階層化し、オーバフローエリアを持たず、根から葉までの深さが一定な方式
- DBMSが提供するトリガ機能
指定した事象が発生したときに定義しておいた動作を実行する
- DBMSのトランザクション管理
同時実行制御の目的は、データベースの一貫性を保ちながら複数のトランザクションを並行に処理すること
- データディクショナリ/ディレクトリ
- データベース中の蓄積されているデータがどのような種類で、分類や登録されているかをまとめたもの
- DBMSが管理するデータ、利用者、プログラムに関する情報、及びそれらの間の関係を保持するデータの集合体
- 関係データベース管理システム(RDBMS)のデータディクショナリに格納されるもの
スキーマの定義情報
- 配置方法
集中管理方式では、データディクショナリ/ディレクトリを保有するサイトの障害が、分散データベースの重大な障害になる
- 関係データベース管理システム(RDBMS)におけるビューに関する記述
ビューとは、名前をつけた導出表のことである
- RDBMSのロック
X,Yはトランザクションとするとき、XがA表内の特定行aに対して共有ロックを獲得しているときは、YはA表に対して専有ロックを獲得することができない
データベース設計
- データ分析
- データベースの論理設計
- データの正規化
- データベースの論理的なデータ構造を設計する際の技法であり、データの矛盾や重複を排除することを目的とした作業
- 正規化を行うと、複数の項目で構成される属性は、単一の項目を持つ属性に分解される
- データが重複したり、データ更新の際に矛盾が生じたりしないようにする
- データの冗長性を排除して保守性を高める
-
データベースの論理モデルであるボイス・コッド正規形は、関係モデルで使用される
- 非正規形:レコード内に繰り返し属性が存在している状態
リレーショナルデータベースではデータの登録ができない
- 第1正規形:繰り返し属性が存在しない
- 第2正規形:第1正規形であり、どの非キー属性も、主キーの真部分集合に対して関数従属しない
主キーの一部に対して関数従属している非キー属性を別の表へ分割する
- 第3正規形:第2正規形であり、どの非キー属性も、推移的に関数従属しない
非キー属性に対して関数従属している非キー属性を別の表へ分割する
- 事例
- 帳票データを正規化
データ項目に繰り返し部分がある場合、その部分の分離を行う
- 関係データベースの設計でデータの正規化を行う場合、ボイス・コッド正規形がよく用いられるが、検索処理を高速化するため、あえて正規形を崩すことがある
- 情報無損失分解
リレーションが、その分解された成分の自然結合で復元されるという条件をみたす分解
- 第2正規形である関係Rが、第3正規形であもあるための条件(A→Bは属性Bが属性Aに関数従属している)
推移従属性が存在しない
- データベースのパフォーマンス設計
- 正規化を行うとテーブルが分割され、テーブル結合処理や集計処理において検索処理に時間がかかるため、速度を優先するため第3正規形を崩し、第2正規形、第1正規形に戻す
- 性能処理改善のため「合計」のような計算による導出項目をテーブルに追加する
- データベースの物理設計
データ操作
- データベースの操作
- SQL
- データベースを操作するための言語
- SQLでトランアクションの隔離性水準をREAD COMMITTEDに指定したときに発生する状態
ダーティリードは発生しないが、アンリピータブルリードとファントムリードが発生する
- 埋込みSQL
-
カーソル操作
-
SQLでは一度に0行以上の集合を扱うのに対し、親言語では通常一度に1行のレコードしか扱えないので、その間をカーソルによって橋渡しする
-
プログラム言語は通常レコード単位の処理を行うのに対しSQLでは集合単位の処理を行うのでその間をカーソルによって橋渡しする
-
埋込み型SQLにおいて使用し、会話型SQLでは使用できない
- SQL構文
- SQLにおけるオブジェクトの処理権限
権限を取り上げるにはREVOKE文を用いる
-
UNIQUE
- 関係データベースの表定義において、列の値の重複を禁止するために指定する字句
-
DBMSの表において、指定した列にNULL値の入力は許すが、すでに入力されている値の入力は禁止するSQLの制約
-
GRANT
-
権限を付与する
-
表の所有者や許された人だけが処理できる
-
RDBMSの表へのアクセスにおいて、特定の利用者だけにアクセス権を与える
-
関係データベース管理システム(RDBMS)の表へのアクセスにおいて、特定の利用者だけにアクセス権を与える方法
-
表の所有者が設定するアクセス権限
-
表の利用者に対し、表への問合せ、更新、追加、削除などの操作を許可する
- 次のSQL文をA表の所有者が発行した場合を説明したもの
GRANT ALL PRIVILEGES ON A TO B WITH GRANY OPTION
A表に関する、SELECT権限、UPDATE権限、INSERT権限、DEKETE権限などの
すべての権限、及びそれらの付与権限を利用者Bに対して付与する
- 表の所有者が、SQL文のGRANTを用いて設定するアクセス権限
表の利用者に対し、表への問い合わせ、更新、追加、削除などの操作を許可する
- WITH GRANT OPTION指定によって、権限を付与可能にすることができる
-
REVOKE
権限を取り上げる
-
COMMIT
正常終了したトランザクションの更新内容が、その後のシステム障害で無効になることはない
-
CREATE
ビューの定義をする
-
SELECT文
重複を排除した検索結果を作ることはできない
選択項目リストとして、同一の列を異なる選択項目に重複して指定できる
-
SET DEFAULT
主キーをもつある行を削除すると、それを参照している外部キーへ既定値を自動的に設定するために指定する
-
SQLの例
- 更新可能なビューの定義
ここで、ビュー定義の中で参照する表はすべて更新可能とする
CREATE VIEW VIEW3(SNO, STATUS, CITY)
AS SELECT S.SNO, S.STATUS, S.CITY
FROM S
WHERE S.STATUS >15
- 行の追加と削除が可能なビューを作成するSQL
ここで、SQL文中に現れる表はすべて更新可能とする
CREATE VIEW 高額商品(商品番号,商品名)
AS SELECT 商品番号,表品名 FROM 商品 WHERE 商品単価 >1000
- 8823のユーザが所在地が"東京"の行を参照できるようにする
CREATE VIEW 東京取引先 AS
SELECT * FROM 取引先
WHERE 取引先.所在地 = '東京'
GRANT SELECT
ON 東京取引先 TO "8823"
- 同じ処理を別の書き方で表した例
- SELECT DISTINCT TBL1.COL1 FROM TBL1
WHERE COL1 IN (SELECT COL1 FROM TBL2)
- SELECT DISTINCT TBL1.COL1 FROM TBL1
WHERE EXISTS
(SELECT * FROM TBL2 WHERE TBL.COL1 = TBL2.COL1)
- ”社員番号”と”氏名”を列としてもつR表とS表に対して、差(R-S)を求めるSQL文
ここで、R表とS表の主キーは”社員番号”であり、”氏名”は”社員番号”に関数従属する
SELECT 社員番号, 氏名 FROM R
WHERE NOT EXISTS (SELECT 社員番号 FROM S
WHERE R.社員番号 = S.社員番号)
- SQLにおいて、A表の主キーがB表の外部キーによって参照されている場合、
行を追加・削除する操作の制限について、
正しく整理した表
△は操作が拒否される場合があることを表し、○は制限なしに操作できることを表す
追加|削除
A表 ◯ |△
B表 △ |◯
- ”社員”表から、男女それぞれの最年長社員を除くすべての社員を取り出すSQL文
”社員”表の構成、下線部は主キー
社員(社員番号、社員名、性別、生年月日)
────
SELECT 社員番号, 社員名 FROM 社員 AS S1
WHERE 生年月日 > ( SELECT MIN(生年月日) FROM 社員 AS S2
WHERE S1.性別=S2.性別 )
- 関係代数
- 等結合演算と同等の演算を実現できる演算の組み合わせ
直積と選択
- 直積集合
二つの関係から、任意のタプルを1個ずつ取り出し連結したタプルの集合で、すべてのタプルの組み合わせの集合となる
- 関数従属
A,B,Cはある関係の属性の集合とする場合、BとCの和集合がAに関数従属すれば、BとCはそれぞれがAに関数従属する
属性Xの値を決めると他の属性Yの値が一位に決まるとき、「YはXに関数従属する」といい、「X→Y」と表記する
- 完全関数従属
二つの属性XとYにX→Yが成り立ち、かつ、Xのいかなる真部分集合X'についてもX'→が成り立たない場合、「YはXに完全関数従属する」という
- 地域別に分かれている同じ構造の三つの商品表、”東京商品”、”名古屋商品”、
”大阪商品”がある。次のSQL文と同等の結果が得られる関係代数式
ここで、三つの商品表の主キーは”商品番号”である
また、X^YはXからYの要素を除いた差集合を表す
SELECT * FROM 大坂商品
WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
UNION
SELECT * FROM 名古屋商品
WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
(大阪商品 ∪ 名古屋商品) - 東京商品
- 関係Rと関係Sから、関係代数演算R÷Sで得られるもの。ここで、÷は商の演算を表す
- −差集合
∩共通集合
∪和集合
×直積
÷商
トランザクション処理
- 排他制御(同時実行制御)
-
データベースシステムにおいて、複数のトランザクション処理プログラムが同一データベースを同時に更新する場合、論理的な矛盾を生じさせないために用いる技法
- 複数のユーザが同時に同じデータを更新しようとしたとき、データの整合性を保つために、そのデータへのアクセスを一時的に制限する仕組み
- ロック法
-
排他制御により同時実行制御を行う
-
データを更新する前に、そのデータにロックをかけ、処理が終了するまでほかのユーザからのアクセスを制御する
- 専有ロック:ロックをかけたトランザクションがデータ資源を専有して排他的に使用するため、ほかのトランザクションから更新も参照もできない
- 共有ロック:データ資源が複数のトランザクションから参照される
あるトランザクションによって共有ロックがかけられている資源に対して、別のトランザクションから共有ロックをかけることは可能である
- 時刻印方式
トランザクションの発生した時刻印(タイムスタンプ)と書き込み対象となるデータを最新の時刻印を比較して読み書きの判定を行う
ロックをかけないのでロックによる待ちやデッドロックは発生しない
- 楽観的方式
読み取りだけのトランザクションが多く、書き込みがある場合はトランザクション間に共通データが少ないときに有効
トランザクションがデータを書き込むときに、読み込んだデータがほかのトランザクションによって更新されたかどうかをチェックする
処理中にほかのトランザクションによる更新があった場合にはロールバックを行い処理をやり直す
ロックをかけないのでロックによる待ちやデッドロックは発生しない
- デッドロック
- 排他制御により複数のトランザクションが、互いに相手のロックしている資源を要求して待ち状態となり、実行できなくなること
- 複数のトランザクションが、互いに相手のロックしている資源を要求して待ち状態となり、実行できなくなること
-
二つのタスクが共用する二つの資源を排他的に使用するとき、デッドロックが発生する可能性がある
- トランザクションの並行制御の問題解決
変更消失(lost update)の問題、コミットされていない依存性(uncommitted dependency)の問題、不整合分析(inconsistent analysys)の問題が起こる可能性を解決するためにはロックを使うとよいが、新たに、デッドロックの問題が発生する
- デッドロックの原因
- 一度割り当てられた資源は、プロセスがその資源を終了するまで強制的には取り上げられない
- プロセスが他のプロセスを待ちあうという関係が、環状になっている
- プロセスは、一つの資源を占有しながら他の資源へ要求を出す
-
すべてのトランザクションにおいて、ロック対象のデータは一定の順序でロックを行い、
すべてのロックが完了するまで、アンロックを行わない方式
- トランザクションの同時実行制御である2層ロッキングプロトコルにおいては
デッドロックが発生することがある
- デッドロックが発生する原因とならないもの
全てのプロセスに対し、決められた順序に従って資源が割り当てられている場合
- 並行プロセス環境においてデッドロックが発生する原因とはならないもの
すべてのプロセスには、決められた順序によって資源が割り当てられる
- デッドロックの発生を防ぐ方法
資源獲得の順序を両方のタスクで同じにする
- 待ちグラフ
DBMSにおいて、デッドロックを検出するために使われるデータ構造
- デッドロックが発生する可能性のある排他制御の方式
2相ロックプロトコルに従ってロックする方式
- 複数の利用者が同一データベースに同時アクセスする処理
- データの整合性を保つための対策が不要な処理
図書情報の検索処理
- 対策が必要
- オークションの入札処理
- オンラインショッピングの申し込み処理
- 列車座席の予約処理
- リカバリ処理
- トランザクション管理
- オンライントランザクション処理システムを構成するサーバ上のソフトウェアのうち、データベース管理システムの役割
アプリケーションプログラムからデータの検索や更新の要求を受け付けて、データベース内のデータの検索や更新をする
- 複数の利用者が同時にデータベースを利用する場合に、1人の利用者がデータ更新中に、同一のデータを別に利用者が参照しようとした。
このとき、データの整合性を保証するためのデータベース管理システムでの制御
更新中の利用者の処理が終了してから参照させる
- データベースの性能向上
- データ制御
- ダーティリード(dirty read)
トランザクションT1が行を更新し、トランザクションT2がその行を検索する。その後T1がロールバックされると、T2はその行に存在しない値を読んだことになる
- アンリピータブルリード
同じデータを複数回読むとき、結果が違うこと
- ファントムリード
異なるデータ集合を読んでしまうこと
データベース応用
- データウェアハウス
- 概要
-
情報分析と意思決定を支援する目的で、基幹業務システムからデータを抽出し、再構成して構築されるデータベース
-
企業の様々な活動を介して得られた大量のデータを整理・統合して蓄積しておき、意思決定支援などに利用するもの
- 物流や汎愛などの部門ごとに散在していた、過去から現在までの全社のデータを統合して管理することによって、経営戦略の立案に役立てる仕組み
- 定義
- 合目的(Subject-Oriented)
ビジネスの主題に密接に関わるデータを処理の対象とする
- 統合化(Integrated)
部署横断的・総合的な分析を可能とするためデータ形式を統一する
- 時系列(Time-Variant)
数年にわたる変化を分析することもあるので、長期間のデータを一つのファイルに保持する
- 非更新(Non-Volatile)
更新処理を行わず、検索処理やデータ分析・加工処理を行う
- 構築ツール
- ETLツール
データウェアハウスに業務データを取り込むとき、データを抽出して加工し、データベースに書き出すツール
- 体現ビュー(Materialized view)
実表のようにデータベースに格納されるビュー
- マイグレーションツール
基幹システムのデータを、必要な変換と修正を施してデータウェアハウスに移転させるソフトウェア
- ファクトテーブル
-
関係データベースを利用して、データウェアハウスをスタースキーマ構造で作成するときの分析の対象とするトランザクションデータを格納するテーブル
-
例)顧客、商品、注文、販売店という四つのテーブルをスタースキーマでモデル化した場合のファクトテーブル
注文(販売店コード、顧客コード、商品コード、注文年月日、数量)
- ディメンションテーブル
ファクトテーブルのファクトレコードを説明する属性を格納する
- クレンジング ( データクレンジング )
データウェアハウスを構築するために、業務システムごとに異なっているデータ属性やコード体系を統一する処理
業務系のデータベースから抽出したデータをデータウェアハウスに格納するために、整合されたデータ属性やコード体系などに合うように変換及び修正を行う処理
- 多次元データベース
-
複数の項目(次元)を切り替えて集計・分析を行うデータベース
- ダイシング(ダイス)
データ集計の観点を、商品、販売チャネルごとから、商品、顧客タイプごとに切り替える操作
販売データの分析において、売上額の見方を商品分類ごとから、曜日ごとに販売担当者ごとに変えて見る操作
商品の販売状況分析を商品軸、販売チャネル軸、時間軸、顧客タイプ軸で行う。データ集計の観点を、商品、販売チャネルごとから、商品、顧客タイプごとに切り替える操作
- スライシング
多次元データベースを断面で切り取って二次元の表にする操作
数多くの視点から分析の切り口を変化させていく作業
- ドリリング
-
全体像から次々に分析対象を絞り込んで詳細化していく作業
- ドリルアップ
集計・要約を行う操作
- ドリルダウン
詳細を展開する操作
- ダイシング・スライシング・ドリリングの関係
[元データ]→ダイシング→[軸の変わったデータ]→スライシング→[着目したい軸で切り出したデータ]→ドリリング→[詳細化したデータ]
- OLAP ( Online Analytical Processing )
-
ユーザのためのデータ分析様アプリケーション
-
集計単位をより大きくする操作をロールアップという
- MOLAP ( Multi-dimensional OLAP )
多次元データベースの形式でデータを持ち、合計などの計算処理を登録時に行う
検索処理は高速であるが、登録には時間がかかる
- ROLAP ( Relational OLAP )
リレーショナルデータベースの形式でデータを持ち、合計などの計算処理は検索時に行う
検索処理は低速だが、登録は高速
データ構造の変化に対しても該当部分のテーブルのみで対応できる
- データマイニング ( Data Mining )
-
大量のデータを分析し、単なる検索だけでは分からない隠れた規則や相関関係を見つけ出すこと
-
大量に蓄積されたデータに対して統計処理などを行い、法則性の発見を支援する
-
大規模データベースにおけるスタースキーマを実装するのに適した、索引ファイルを作成すること
-
企業が保有する顧客や市場などの膨大なデータから、有用な情報や関係を見つけ出す手法
-
データベースに蓄積された大量のデータを統計的、数学的な手法で分析し、単なる検索だけでは発見できない法則性や因果関係の発見を支援する技術
-
大量に蓄積されたデータから、ビジネスなどに有効な情報を統計学的手法などを用いて新たに見つけ出すプロセス
-
ニューラルネットワークや統計解析などの手法を使って、大量に蓄積されているデータから、顧客購買行動の法則などを探し出すこと
-
データベースに直接記述されていない情報を抽出する
-
データを、いろいろな視点や切り口から、発見形の手法や統計的手法を使って分析することで、隠れているデータ間の関連性や規則性を見つけ出すこと
-
データマイニングの手法
-
マーケットバスケット分析
データマイニングの利用法の1つで、POSデータやECサイトの取引データを分析して、“一緒に買われる商品”の組み合わせを発見する探索的データ分析
POSシステムで収集した販売情報から、顧客が買い物をした際の購入商品の組み合わせなどを分析する
-
決定木
ある商品を購入する顧客を、年齢の境界値、収入の境界値、性別などの発生頻度で区分し、これらの条件を階層的に順次判断して、商品購入の振る舞いを予測する
- データマイニングの応用分野
顧客に応じた商品の推薦
- データマイニングの事例
ある商品と一緒に買われることの多い商品を調べた
- データマート ( Data Mart )
小規模なデータウェアハウスで目的に合わせてデータを絞り込んだもの
- 分散データベース
- 2相コミット
分散データベースシステムにおいて、一連のトランザクション処理を行う複数サイトに更新処理が確定かを問い合せて、すべてのサイトの更新処理が確定可能である場合、更新処理を確定する方式
主サイトは、各データベースサイトにコミットが可能であることを確認した後、コミットを発行する
- 分散データベースのトランザクションは複数のサブトランザクションに分割され、複数のサイトで実行されるが、2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある
- 分散データベースシステムにおける"分割に対する透過性"
一つの表が複数のサイトに分割されて格納されていても、ユーザはそれを意識せずに利用できること
- 分散データベースにおける"複製に対する透過性"
複数のサーバに一つの表が重複して存在しても、プログラムは表の重複を意識する必要がない
- 分散データベースの透過性
クライアントのアプリケーションプログラムが複数のサーバ上のデータベースをアクセスする場合において、アプリケーションのプログラムは、データベースがあたかも一つのサーバ上で稼動しているかのようにアクセスできる
- 分散データベースシステムにおいて、複数のデータベースを更新する場合に用いられる2相コミットの処理手順
主サイトは、各データベースサイトにコミットが可能であることを確認した後、コミットを発行する
- 調停者のトランザクションが、コミット又はロールバックの決定を参加者に送る直前に障害になった
2相コミットで分散トランザクションの原子性を保証する場合、ネットワーク障害の発生によって参加者のトランザクションが、コミットすべきかロールバックすべきかを判断できなくなることがある
- 分散データベースが備えるべき要件
クライアントのアプリケーションプログラムは、複数のサーバ上のデータベースをアクセスする。アプリケーションプログラムは、データベースがあたかも一つのサーバ上で稼働しているかのように透過的にアクセスできる
- 分散トランザクション処理で利用される2層コミットメントプロトコルでは、コミット処理を開始する調停者(coordinator)と、調停者からの指示を受信してから必要なアクションを開始する参加者(participant)がいる
- 分散データベースシステムにおいて、複数のデータベースを更新する場合に用いられる2層コミットの処理手順
主サイトは、各データベースサイトにコミットが可能であることを確認した後、コミットを発行する
調停者に障害が発生するポイントによっては、その回復処理が終わらない限り、参加者全員がコミットもロールバックも行えない事態が起こる
-
セミジョイン法
- 分散型データベースで結合演算を行うとき、サイト間にまたがる結合演算の最適化を行い、通信負荷を小さくすることができる手法
- 分散型DBMSにおいて、二つのデータベースサイトの表で結合を行う場合、どちらか一方の表を他のデータベースサイトに送る必要がある
その際、表の結合に必要な属性だけを送り、結合に成功したものだけを元のデータベースにサイトに転送して最終的な結合を行う
- 分散型データベース(異なるコンピュータ上に格納されて、かつ結合演算を行う表の行数が、双方で大きく異ならない)で結合演算を行うとき、通信負荷を最も小さくすることができる手法
- 入れ子ループ法
2つの表の結合において一方の表の行を外側のループとして取り出し、それに対して他方の表のすべての行を内側のループとして照合して結合演算する。
外側ループとなる表が大きいと通信負荷が高くなる。
- マージジョイン法
両方のサイトでデータのソートを行い、一方からもう一方へソートの結果を送信し、結合処理を行う
- ソートマージ法
分散型データベースで、結合したい関係の結合対象となっている列でソートし、ソート結果をどちらかの才知に送信して結合処理を行う手法
- 分散データベースにおけるコマンドシーケンスの例(ロールバック要求)
- ストアドプロシージャ
- クライアントサーバシステムにおいて、データベースにアクセスするときに、利用頻度の高い命令郡をあらかじめサーバに用意しておくことによって、ネットワーク負荷を軽減できる機能
-
応用プログラムからネットワークを介してDBMSにアクセスする場合、両者間の通信量を減少させる
-
標準SQLによるアクセスと比べて有利な点:アプリケーションからDBMSにネットワークを介してアクセスする場合、その間の送受信回数を減少させることができる点
-
共通のSQL文によるアクセス手続きをアプリケーションに提供できる
-
機密性の高いデータに対する処理を特定プロシージャ呼び出しに限定することによって、セキュリティを向上させることが出来る
-
システム全体に共通な処理をプロシージャとして格納しておくことによって、処理の標準化を行うことができる
-
複数のSQL文から成る手続を1回の呼出しで実行できるので、クライアントとサーバ間の通信回数を減らすことができる
データベース管理
- ジャーナルファイル
データベースの更新前や更新後の値を書き出して、データベースの交信記録として保存するファイル
- インデックスファイル
-
インデックスが格納されているされているファイル
- 関係データベースのインデックス
主キー以外の列に対してもインデクスを指定できる
- データベースの維持・管理
-
プライバシーに関する情報が含まれる場合には、権限を設定して検索できる項目を限定する
- データベースの障害に備えて作成するバックアップファイルの管理
定期的にデータベース全体のバックアップファイルを新しい媒体に作成し、毎日変更のあったデータだけの差分バックアップファイルを別の媒体に作成している
- 再編成
-
データベースのアクセス効率を低下させないために、定期的に実施する処理
- データベースにデータの追加、削除などが多数繰り返されて、データベース全体のアクセス効率が低下したときに、データベースに対して行う処理
- 運用中のデータベースに対し、定期的に再編成処理を行う目的
データベースに対して追加、更新、削除を繰り返すと、再利用されない領域が発生しデータベース容量の増大と処理速度の低下を招くため、不連続な空き領域を整理して性能劣化を回避するために行う
- スタンドアロンで使用しているPC上のデータベースを処理するのに、順次アクセスを伴う処理に時間がかかるようになった。データ件数はほとんど変わっていないとき、原因として考えられるもの
データの追加・削除が繰り返され、データベースファイルの記録領域が断片化している
- データベースの障害回復
- 回復手法
- ロールバック(後退復帰)
データベースを更新するトランザクションが異常終了したとき、DBMSが行うべき処理
OLTP などの実行中に障害が発生したとき、トランザクション開始直前の状態にデータベースを復旧する処理
更新前ジャーナルを用いて、トランザクション開始直前の状態にまでデータを復旧させる
更新前ジャーナルを用いて、トランザクション開始前の状態にまでデータを復旧させる
ジャーナルファイルに記録されているデータを使用して、ファイルを障害発生以前の状態に戻す
- ロールフォワード(前進復帰)
データベースが格納されている記憶媒体に故障が発生した場合、バックアップファイルとログを用いてデータベースを回復する操作
ディスク障害時に、バックアップテープからデータをリストアした後、バックアップ時以降のジャーナルを反映させて最新の状況にデータベースを回復する方法
DBMSのロールフォワード:定期的に確保しておいたバックアップファイルと更新後ログ情報を使って回復する
トランザクションTはチェックポイント取得後に完了し、その後にシステム障害が発生した。データベースをトランザクションTの終了後の状態に戻すために用いられる復旧技法。ここで、チェックポイントのほかに、トランザクションログが利用できる
チェックポイント情報と更新後ログ情報を使って回復する
システムの停止で処理が中断したジョブについて、それまでに採取されたチェックポイント情報によって回復作業を実施する
- DBMSをシステム障害発生後に再立上げするとき、前進復帰(ロールフォワード)すべきトランザクションと後退復帰(ロールバック)すべきトランザクションの組合せ
前進復帰:T2, T5
後退復帰:T6
- データベースの回復手段の例
- デットロックによるトランザクション障害:後退復帰(ロールバック)
- DBMS以外のソフトウェアのバグによるシステム障害:前進復帰(ロールフォワード)
- データベースの一部が使用不可能となる媒体障害:前進復帰(ロールフォワード)
- バックアップ時点の状態に復元した後、ジャーナルファイルの更新後情報を使用してロールフォワード処理を行う
- トランザクション処理プログラムでデータベースの更新頻度が多い場合には、チェックポイントを設定してデータの回復に備えることがある
- ウォームスタート方式の再始動では、チェックポイントまで戻り、更新情報のログを使用してデータベースを回復する
- システムが媒体障害以外の原因によって停止した場合、チェックポイントの取得以前に終了したトランザクションについての回復作業は不要である
- 障害発生時にデータベースを復旧するために使用するファイル
バックアップファイル
ログファイル
- データの追加・変更・削除が、少ないながらも一定の頻度で行われるデータベースがある。このデータベースのフルバックアップを磁気テープに取得する時間間隔を今までの2倍にしたとき、ジャーナル情報からの復旧処理時間が平均して約2倍になる
- 障害対策
- データベースが格納されているハードディスクの障害対策として、障害が発生したときも、中断することなく業務が続行できる確立を最も高くする方策
サーバのハードディスクを二重化し、通常化同時は同時に二つのハードディスクに書き込む
- ユーザID ( 利用者ID )
ユーザIDごとに、表の利用を制限したり、許可したりする
- データベース管理者 ( DBA ; Database Administrator )
- データベースの設計(物理設計)、アクセス制御機構とアクセス手順の確立、保守、運用の監視、障害からの回復などデータベースの総合的な管理を行う
- データ管理者 ( DA ; Data Administrator )
-
組織全体のデータ管理、情報資源全体の方針、戦略、計画の作成を行う
-
システム開発の設計工程では、主に論理データベース設計を行い、データ項目を管理し標準化する
- データの分割格納
-
ひとつの表に大量のデータが格納されるとき、並列処理のために異なったディスクにデータを分割格納することがある
- キーレンジ分割方式
分割に使用するキーの値をあらかじめ決めておき、その値に割り当てられたディスクに分割格納する
- レプリケーション
元のデータベースと同じ内容の複製データベースをあらかじめ用意しておき、元のデータベースが更新されると、独立のプロセスが、指定された一定時間後にその内容を複製データベースに反映する手法
元のデータベースと同じ内容の複製データベースを予め用意しておき、元のデータベースの更新に対し、非同期にその内容を複製データベースに反映する手法
- トランザクション管理の直列化可能スケジュール
トランザクションを順番に実行した場合と同じ結果を持つように、同時実行するスケジュール