あらけす屋>情報処理技術者試験
午前問題対策(データベース)
データベース全般/関係データベース/DBMS
データベース全般
- トランザクションのACID特性
- 原子性(atomicity)
トランザクションがデータベースに対する更新処理を完全に行うか、全く処理しなかったかのように取り消すか、のいずれかを保証する特性で、トランザクションが完了したときの状態は、処理済みか未処理のどちらかしかない
- 一貫性(consistency)
データベースの内容が矛盾のない状態であること
- 永続性、耐久性(durability)
正常に終了したトランザクションの更新結果は、障害が発生してもデータベースから消失しないこと
- 隔離性、独立性(isolation)
複数のトランザクションを同時に実行した場合と、順番に実行した場合に互いに干渉せず、それぞれの処理結果が一致すること
- 特性
- 規模透過性
OSやアプリケーションの構成に影響を与えることなくシステムの規模を変更できること
- 並行透過性
複数の作業が平行して行われることが意識されないこと
特にオブジェクトの共有に関して同時に実行される複数の処理の干渉が意識されないこと
- アクセス透過性
ネットワークに接続されている資源に対して、オブジェクトの物理的な位置に関係なく同一の操作でアクセスできること
- 位置透過性
オブジェクトの存在する物理的な位置が意識されないこと
- 複製透過性
オブジェクトがネットワークに複製を持っていても分割されていても意識されないこと
- 障害透過性
ハードウェア、ソフトウェアの障害が意識されないこと。傷害が発生した場合、性能が若干低下しても機能が維持できなくてはならない
- 移送透過性
オブジェクトの移送が意識されないこと
- 性能透過性
負荷の変化に伴い性能を向上させるために、システムを再構築することを可能にすること。
- データベースのメタデータ
データ自身に関するデータのことで、データの定義情報を記述している
- ジャーナルファイル
データベースの更新前や更新後の値を書き出して、データベースの交信記録として保存するファイル
- 正規化
データベースの論理的なデータ構造を設計する際の技法であり、データの矛盾や重複を排除することを目的とした作業
データベースの正規化の目的:データの重複を排除して、重複更新を避け、矛盾の発生を防ぐ
データベースの論理モデルであるボイス・コッド正規形は、関係モデルで使用される
- 第1正規形:繰り返し属性が存在しない
- 第2正規形:どの非キー属性も、主キーの真部分集合に対して関数従属しない
- 第3正規形:どの非キー属性も、推移的に関数従属しない
- 事例
- 帳票データを正規化
データ項目に繰り返し部分がある場合、その部分の分離を行う
- 関係データベースの設計でデータの正規化を行う場合、ボイス・コッド正規形がよく用いられるが、検索処理を高速化するためあえて正規形を崩すことがある
- SQL
- 埋込みSQL
-
カーソル操作
-
SQLでは一度に0行以上の集合を扱うのに対し、親言語では通常一度に1行のレコードしか扱えないので、その間をカーソルによって橋渡しする
-
プログラム言語は通常レコード単位の処理を行うのに対しSQLでは集合単位の処理を行うのでその間をカーソルによって橋渡しする
-
埋込み型SQLにおいて使用し、会話型SQLでは使用できない
- SQLにおけるオブジェクトの処理権限
権限を取り上げるにはREVOKE文を用いる
-
UNIQUE
DBMSの表において、指定した列にNULL値の入力は許すが、すでに入力されている値の入力は禁止するSQLの制約
指定した列の値としてナル(NALL)は許すが、すでに存在する値の入力を禁止するSQLの字句
-
GRANT
権限を付与する
表の所有者や許された人だけが処理できる
-
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
- 分散データベース
- 分散データベースのトランザクションは複数のサブトランザクションに分割され、複数のサイトで実行されるが、2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある
- 分散データベースシステムにおける"分割に対する透過性"
一つの表が複数のサイトに分割されて格納されていても、ユーザはそれを意識せずに利用できること
- 分散データベースシステムにおいて、複数のデータベースを更新する場合に用いられる2相コミットの処理手順
主サイトは、各データベースサイトにコミットが可能であることを確認した後、コミットを発行する
- 調停者のトランザクションが、コミット又はロールバックの決定を参加者に送る直前に障害になった
2相コミットで分散トランザクションの原子性を保証する場合、ネットワーク障害の発生によって参加者のトランザクションが、コミットすべきかロールバックすべきかを判断できなくなることがある
- データディクショナリ/ディレクトリの配置方法
集中管理方式では、データディクショナリ/ディレクトリを保有するサイトの障害が、分散データベースの重大な障害になる
- 分散データベースが備えるべき要件
クライアントのアプリケーションプログラムは、複数のサーバ上のデータベースをアクセスする。アプリケーションプログラムは、データベースがあたかも一つのサーバ上で稼働しているかのように透過的にアクセスできる
- 分散トランザクション処理で利用される2層コミットメントプロトコルでは、コミット処理を開始する調停者(coordinator)と、調停者からの指示を受信してから必要なアクションを開始する参加者(participant)がいる
調停者に障害が発生するポイントによっては、その回復処理が終わらない限り、参加者全員がコミットもロールバックも行えない事態が起こる
-
セミジョイン法
- 分散型データベースで結合演算を行うとき、サイト間にまたがる結合演算の最適化を行い、通信負荷を小さくすることができる手法
- 分散型DBMSにおいて、二つのデータベースサイトの表で結合を行う場合、どちらか一方の表を他のデータベースサイトに送る必要がある
その際、表の結合に必要な属性だけを送り、結合に成功したものだけを元のデータベースにサイトに転送して最終的な結合を行う
- 分散型データベース(異なるコンピュータ上に格納されて、かつ結合演算を行う表の行数が、双方で大きく異ならない)で結合演算を行うとき、通信負荷を最も小さくすることができる手法
- データモデル
- 概念データモデル
対象世界の情報構造を抽象化して表現したもの
- 弱エンティティ(弱実体)
概念データモデルにおいて、実体Aのインスタンスaがほかの実体Bのインスタンスbと関連しており、aが存在しなくなれば、bも存在しなくなるような実体B
- 強エンティティ
エンティティタイプがインスタンスを一位に識別する属性を持ち、ほかのエンティティに依存しない
- 論理データモデル
階層構造、ネットワーク構造、データ構造などの特性を加味して作成したデータモデル
BDMSに依存しない
- 物理データモデル
BDMS固有のデータ構造や性能を考慮して作成したデータモデル
- ANSI/SPARC3層スキーマ
ANSI/SPARC3層スキーマの意義は、物理的データ独立性および論理的データ独立性を確保すること
データの論理的関係を示すスキーマと、利用者が欲するデータの見方を示すスキーマを用意することによって、論理データ独立性を実現している
- スキーマ
データの性質、形式、他のデータとの関連などのデータ定義の集合
- 外部スキーマ
実世界が変化しても応用プログラムができるだけ影響を受けないようにするための考え方である
- 内部スキーマは
直接編成ファイルやVSAMファイルなどの物理ファイルを用いて、概念スキーマをコンピュータ上に実装するための記述
- 概念スキーマ
内部スキーマと外部スキーマの中間に位置し、エンティティやデータ項目相互の関係に関する情報を持つ
関係データベースのビューやネットワークデータベースのサブスキーマのことではない
- サブスキーマ
データベースを記録媒体にどのように格納するかを記述したもの
- データベースの維持・管理
-
プライバシーに関する情報が含まれる場合には、権限を設定して検索できる項目を限定する
- データベースの障害に備えて作成するバックアップファイルの管理
定期的にデータベース全体のバックアップファイルを新しい媒体に作成し、毎日変更のあったデータだけの差分バックアップファイルを別の媒体に作成している
- 運用中のデータベースに対し、定期的に再編成処理を行う目的
データベースに対し、追加、更新、削除を繰り返すと、再利用されない領域が発生し、データベース容量の増大と処理速度の低下を招くため、不連続な空き領域を整理して、性能劣化を回避するために行う
- 関係代数
- 等結合演算と同等の演算を実現できる演算の組み合わせ
直積と選択
- 直積集合
二つの関係から、任意のタプルを1個ずつ取り出し連結したタプルの集合で、すべてのタプルの組み合わせの集合となる
- 関数従属
ここでA,B,Cはある関係の属性の集合とする場合、BとCの和集合がAに関数従属すれば、BとCはそれぞれがAに関数従属する
- データベースの障害回復
- 回復手法
- ロールバック(後退復帰)
データベースを更新するトランザクションが異常終了したとき、DBMSが行うべき処理
OLTP などの実行中に障害が発生したとき、トランザクション開始直前の状態にデータベースを復旧する処理
更新前ジャーナルを用いて、トランザクション開始直前の状態にまでデータを復旧させる
- ロールフォワード(前進復帰)
データベースが格納されている記憶媒体に故障が発生した場合、バックアップファイルとログを用いてデータベースを回復する操作
ディスク障害時に、バックアップテープからデータをリストアした後、バックアップ時以降のジャーナルを反映させて最新の状況にデータベースを回復する方法
DBMSのロールフォワード:定期的に確保しておいたバックアップファイルと更新後ログ情報を使って回復する
- データベースの回復手段の例
- デットロックによるトランザクション障害:後退復帰(ロールバック)
- DBMS以外のソフトウェアのバグによるシステム障害:前進復帰(ロールフォワード)
- データベースの一部が使用不可能となる媒体障害:前進復帰(ロールフォワード)
- トランザクション処理プログラムでデータベースの更新頻度が多い場合には、チェックポイントを設定してデータの回復に備えることがある
- ウォームスタート方式の再始動では、チェックポイントまで戻り、更新情報のログを使用してデータベースを回復する
- オブジェクト指向データベース
データと手続きがカプセル化され一体として扱われるので、構造的に複雑で、動作を含む対象を扱うことができる
- ストアドプロシージャ
- クライアントサーバシステムにおいて、データベースにアクセスするときに、利用頻度の高い命令郡をあらかじめサーバに用意しておくことによって、ネットワーク負荷を軽減できる機能
-
応用プログラムからネットワークを介してDBMSにアクセスする場合、両者間の通信量を減少させる
-
標準SQLによるアクセスと比べて有利な点:アプリケーションからDBMSにネットワークを介してアクセスする場合、その間の送受信回数を減少させることができる点
-
共通のSQL文によるアクセス手続きをアプリケーションに提供できる
- データベース管理者(DBA:Database Administrator)
データベースの総合的な管理を行う
情報システムのデータベースへのアクセス制御機構とアクセス手順の確立
- データ管理者(DA:Data Administrator)
組織全体のデータ管理、情報資源全体の方針、戦略、計画の作成を行う
システム開発の設計工程では、主に論理データベース設計を行い、データ項目を管理し標準化する
- データの分割格納
ひとつの表に大量のデータが格納されるとき、並列処理のために異なったディスクにデータを分割格納することがある
- キーレンジ分割方式
分割に使用するキーの値をあらかじめ決めておき、その値に割り当てられたディスクに分割格納する
- レプリケーション
元のデータベースと同じ内容の複製データベースをあらかじめ用意しておき、元のデータベースが更新されると、独立のプロセスが、指定された一定時間後にその内容を複製データベースに反映する手法
- トランザクション管理の直列化可能スケジュール
トランザクションを順番に実行した場合と同じ結果を持つように、同時実行するスケジュール
関係データベース
-
データの集合をいくつかの2次元の表によって表現し、表間は相互の表中の列の値を用いて関連付けられる
- ユーザID
ユーザIDごとに、表の利用を制限したり、許可したりする
- データを表として表現する
表間はポインタなどではなく、相互の表中の列の値を用いて関連付けられる
- 結合(join)
- 射影(projection) 表の中から特定の列だけを取り出す操作
- 選択(selection)
- 和(union)
- 関係データベースを扱う3層構造のクライアントサーバシステムの中間層
入力データに基づきデータベースに問い合わせて計算や分析処理を行う
- 関係データベースのビュー
- 仮想の表(ビュー)を作る目的
セキュリティを向上させるためや表操作を容易にするため
- ビューでは、元の表の列名を異なる名称で定義することができる
- 更新不可能なビュー
ビュー定義にGROUP BY句が含まれるビュー
- ビューでは、元の表の列名を異なる名称で定義することができる
- 関係データベース上に実装するエンティティの主キーが複合キーであり、複合キーを構成している属性数が多すぎるので、少なくして扱いやすくする
複合キーを連番などの代用キーに置き換え、複合キーを構成している属性を代替キーにする
- 定義域
関係データモデルにおいて属性が取り得る値の集合
定義域が異なる属性同士の比較は、本質的には意味がない
- トリガ(trigger)
データの変更操作時に動作させる
- 候補キー
関係RのリレーションスキーマがR(A,B,C,D,E)であり、関数従属A→BC,CD→Eが成立する場合、これらの関数従属から決定できるRの候補キー(ここで、A,B,C,D,Eは属性集合であり、XYはXとYの和集合を表す):AD
- ビューのSELECT権限
元の表に対するSELECT権限にかかわらず、ビューに対するSELECT権限があれば、そのビューに対して問い合わせすることができる
- 関係データベースのキー
候補キーのうちの一つが主キーとなり、残りは代替キーとなる
- 関係データベース上に実装するエンティティの主キーが複合キーであり複合キーを構成している属性数が多すぎるので、少なくして扱いやすくする方法
複合キーを連番などの意味のない代用キーに置き換え、複合キーを構成している属性は非キー属性に替え、代替キーとして指定する
DBMS
- デッドロック
- 排他制御により複数のトランザクションが、互いに相手のロックしている資源を要求して待ち状態となり、実行できなくなること
-
二つのタスクが共用する二つの資源を排他的に使用するとき、デッドロックが発生する可能性がある
- トランザクションの並行制御の問題解決
変更消失(lost update)の問題、コミットされていない依存性(uncommitted dependency)の問題、不整合分析(inconsistent analysys)の問題が起こる可能性を解決するためにはロックを使うとよいが、新たに、デッドロックの問題が発生する
- 排他制御
データベースシステムにおいて、複数のトランザクション処理プログラムが同一データベースを同時に更新する場合、論理的な矛盾を生じさせないために用いる技法
- 同時実行制御方式
- ロック法
排他制御により同時実行制御を行う
- 専有ロック:ロックをかけたトランザクションがデータ資源を専有して排他的に使用するため、ほかのトランザクションから更新も参照もできない
- 共有ロック:データ資源が複数のと欄座宇ションから参照される
- 時刻印方式
トランザクションの発生した時刻印(タイムスタンプ)と書き込み対象となるデータを最新の時刻印を比較して読み書きの判定を行う
ロックをかけないのでロックによる待ちやデッドロックは発生しない
- 楽観的方式
読み取りだけのトランザクションが多く、書き込みがある場合はトランザクション間に共通データが少ないときに有効
トランザクションがデータを書き込むときに、読み込んだデータがほかのトランザクションによって更新されたかどうかをチェックする
処理中にほかのトランザクションによる更新があった場合にはロールバックを行い処理をやり直す
ロックをかけないのでロックによる待ちやデッドロックは発生しない
- デッドロックの原因
- 一度割り当てられた資源は、プロセスがその資源を終了するまで強制的には取り上げられない
- プロセスが他のプロセスを待ちあうという関係が、環状になっている
- プロセスは、一つの資源を占有しながら他の資源へ要求を出す
-
すべてのトランザクションにおいて、ロック対象のデータは一定の順序でロックを行い、
すべてのロックが完了するまで、アンロックを行わない方式
- トランザクションの同時実行制御である2層ロッキングプロトコルにおいては
デッドロックが発生することがある
- デッドロックが発生する原因とならないもの
全てのプロセスには、決められた順序に従って資源が割り当てられ
- デッドロックの発生を防ぐ方法
資源獲得の順序を両方のタスクで同じにする
- 待ちグラフ
DBMSにおいて、デッドロックを検出するために使われるデータ構造
- 機密保護機能
- 障害回復機能
- 定義機能
スキーマを決める機能
- 保全機能
- 再編成機能
データベースに対する変更操作が繰り返されると、データの物理的な格納位置が複雑複素区になったり、削除領域が利用できない状態になったりする。これを修復し、アクセス性能を向上させるための機能
- DBMSの記憶管理
クラスタリングとは、磁気ディスク装置へのアクセス効率向上を目的とした格納手法
- トランザクションの同時実行制御に用いられるロックの動作
共有ロック中に発生した共有ロックの要求は認める
- TPモニタの配下で動作するアプリケーションプログラムからデータベースをアクセスするときの動作
TPモニタへのコミットとロールバックの指示はアプリケーションプログラムが行い、DBMSへの指示はTPモニタが行う
- 並行プロセス環境においてデッドロックが発生する原因とはならないもの
すべてのプロセスには、決められた順序によって資源が割り当てられる
- 更新前情報と更新後情報をログとして使用するDBMSにおいてWAL(Write Ahead Log)プロトコルに従う処理
- begin transactionレコードの書出し
- ログに更新前レコードの書出し
- ログに更新後レコードの書出し
- データベースの更新
- commitレコードの書出し
- end transactionレコードの書出し
- 直列可能性
二つのトランザクションT1とT2を並列に実行した結果が、T1の実行後にT2を実行した結果、又はT2の完了後にT1を実行した結果と等しい場合、このトランザクションスケジュールの性質
- DBMSの記憶管理
クラスタリングとは、磁気ディスク装置へのアクセス効率向上を目的としたデータ格納手法
- 参照制約
DBMSの整合性(一貫性)制約のうち、データの追加、更新及び削除を行うとき、関連するデータ間で不一致が発生しないようにする制約
- スレッド
複数のクライアントからの要求を効率よく処理するために、マルチスレッドが利用される
- DBMSがトランザクションのコミット処理完了とみなすタイミング
ログファイルへの書出し完了時点
- B+木
DBMSにおいて用いられるデータ格納形式のうち、レコード数に応じて索引を階層化し、オーバフローエリアを持たず、根から葉までの深さが一定な方式
- DBMSが提供するトリガ機能
指定した事象が発生したときに定義しておいた動作を実行する