学習帳@Wiki
データベース分野
最終更新:
imakigawai
-
view
データベース管理システム
データベースとは、企業内のデータを、ある決まりをもとに整理・統合したデータの集まりのことです。なかでも全社的な情報が管理される基幹データベースの場合、情報システム部門や社内のユーザだけでなく、外部の関連会社などからも利用されます。そのため、セキュリティ保護の手段が重要になります。
排他制御(同時実行制御)
DBMSは、複数のユーザ(プログラム)が同時に同じデータに対する更新要求を行っても、データに矛盾が起こらないように制御します。
例えば、座席予約システムで、同じ座席に対して同時に予約処理を許してしまえば、予約が重複してしまいます。このような事態が発生するのを防止し、データの一貫性を保つ機能が排他制御機能です。
具体的には、あるプログラムがデータ更新のためのアクセスを行っている間は、他のプログラムからの同一データに対するアクセスを禁止(ロック;lock)しておき、先のプログラムの処理が完了してから、ロックを解除(アンロック;unlock)します。
このように排他制御機能はデータベースを制御するうえで欠かせませんが、タイミングによってデッドロック状態が発生することがあります。
例えば、座席予約システムで、同じ座席に対して同時に予約処理を許してしまえば、予約が重複してしまいます。このような事態が発生するのを防止し、データの一貫性を保つ機能が排他制御機能です。
具体的には、あるプログラムがデータ更新のためのアクセスを行っている間は、他のプログラムからの同一データに対するアクセスを禁止(ロック;lock)しておき、先のプログラムの処理が完了してから、ロックを解除(アンロック;unlock)します。
このように排他制御機能はデータベースを制御するうえで欠かせませんが、タイミングによってデッドロック状態が発生することがあります。
Q&A
同時に共有できない資源をいくつかのプロセスが使用したいとき、資源を巡る競合、衝突が起こらないようにするデータベース機能はどれか。
- DBMS
- 排他制御
- デッドロック
- ストアドプロシジャ
- スキーマ
解説
正解:排他制御
- DBMS
- データベースの構築から運用まで総合的に制御・管理を行うソフトウェア。つまりデータベース専用のOSのような機能を果たす。
- 主なDBMSの機能は、データ定義機能、データ操作機能、データ制御機能に分けられる。
- 排他制御
- データベースなどを、複数のプログラムが同時に使用しても矛盾が起こらないよう制御すること。
- デッドロック
- 複数のタスクが互いに相手が必要とする資源を保持してしまい、永久に待ち状態から抜け出せなくなる状態。排他制御により、他のプログラムからのアクセスを禁止(ロック)することにより起こる。
- ストアドプロシジャ
- データベースの操作手続き(プログラム)をデータベースサーバ側にプロシジャとして格納しておき、クライアント側から必要なプロシジャを呼び出して実行する方式。サーバとクライアント間の通信トラフィックを軽減できる。
- スキーマ
- データベースを構築するために必要となる、具体的なデータ定義の集合。データの性質、形式、他のデータとの関連などを定義する。
データベースの障害対策
データベースに障害が発生した場合の業務への影響は、通常のファイルよりはるかに大きいため、障害からの迅速な回復(リカバリ)機能が重要になります。障害が発生したときには、データベースの更新情報を書き出しているログ(ジャーナル)ファイルを利用してデータベースを回復します。
①コミットメント制御
座席やチケットの予約や取消、銀行のATMを利用した預金の引き出しなど、利用者から見た一連の取引(処理)をトランザクションと呼びます。
データベースの更新は、常にトランザクション単位で管理されます。取引が正常に完了した場合は更新を確定(コミット)し、途中で異常終了した場合は元に戻すロールバック処理が行われます。
データベースの更新は、常にトランザクション単位で管理されます。取引が正常に完了した場合は更新を確定(コミット)し、途中で異常終了した場合は元に戻すロールバック処理が行われます。
②分岐データベースで矛盾を起こさない仕組み
ネットワークを利用した分散型データベースの場合は、通常の制御では、分散されたいずれかのデータベースで更新時に障害が発生すると、データベースの内容に矛盾が生じます、これを避けるため、確定もロールバックもできる中間状態(セキュア状態)を設定して、すべてが正常であれば更新を確定する2段階の処理(2相コミットメント制御)を行います。
Q&A
データベース操作において障害が発生した際に、データベースの状態をトランザクション開始前の状態に戻す障害回復処理はどれか。
- ログファイル
- コミット
- ロールフォワード
- ロールバック
解説
正解:ロールバック
- ログファイル
- データベースの更新記録を保存しているファイル。更新の前と後の値を書き出すので、データ消失時にこれを利用して復旧することができる。ジャーナルファイルともいう。
- コミット
- トランザクション処理(利用者から見たひとまとまりの処理単位)が正常に終了した状態。データベースに対する更新を確定させること。
- ロールフォワード
- 直近のバックアップでデータベースを復元し、ログの更新後情報(AI)を反映させて障害発生直前の状態に回復すること。
- ロールバック
- 障害発生時、その時点のデータベースの内容と、ログの更新前情報(BI)を利用して、障害児発生直前の状態までデータベースを戻すこと。通常DBMSが自動的に行う。