基本情報技術者試験
情報技術者試験まとめへ

技術要素(4)

データベース

トランザクション処理


データベースはトランザクションという処理単位で実行し、排他制御や障害回復などの機能によって、データベースの整合性を維持する

例)「Aさんの口座からBさんの口座に5万円を振り込む」という場合
   1.Aさんの口座から5万円を引く
   2.Bさんの口座に5万円を加える
  これらの作業が完了して初めて「振り込み」という1つのトランザクションが完了する

ACID特性

Atomicity  原子性:正しく完全に処理されるor異常時には全く処理されない
Consistency 一貫性:処理されてもデータ間に矛盾が生じない
Isolation    分離性:複数が同時に実行されても影響を受けない
Durability  耐久性:正しく完了したものは、障害が発生しても失われない

排他制御

データに矛盾が生じることを防ぐために、複数のトランザクションが同時にデータベースの同じデータにアクセスしないように制御する機能のこと

ロック方式

あるユーザが更新したり参照したりしているデータを、ほかのユーザが使用できないようにすること

ロック方式
占有ロック・共有ロック

●占有ロック(排他ロック)・・・データの更新と参照の両方をロックする
●共有ロック(読込ロック)・・・データの更新だけをロックする

外部からのデータ利用とロックの状態
占有ロック共有ロック
更新××
参照×
削除××
ほかのプログラムによる排他ロック××
ほかのプログラムによる共有ロック×

  〇:利用可能  ×:利用不可


アクセスが重なった場合
先に実行しているロック
占有ロック共有ロック
後から実行して
獲得するロック
占有ロック××
共有ロック×

  〇:ロックを獲得可  ×:ロックを獲得不可


ロック粒度

ロックをかける単位(範囲)のこと
基本はデータベース管理システムが自動的に設定するが、利用者が設定することも可能

レコード < ページ < 表 < データベース全体
デッドロック

2つのトランザクションがお互いにデータのロックを獲得して、双方のロックの解放を待った状態のまま処理が停止すること
デッドロックの発生は完全に抑制できないが、ロック粒度を低くし、データへのアクセスの順番を決めることで、発生を少なくできる

コミットメント制御

トランザクションを正しく完全に処理させるか(コミット)、異常となって全く処理させないか(ロールバック)を制御すること

トランザクションのコミット(確定)

データベースへの更新処理を実施した後に「コミット」を実行した場合だけ、更新処理の結果をデータベースに反映する

トランザクションのロールバック(中止)

データベースへの更新処理を実施した後に「ロールバック」を実行した場合、更新処理の欠陥を無効としてデータベースには反映しない

コミットメント制御
コミット、ロールバック実行

●利用者がコミット(ロールバック)の命令を指定することによって実行される
●データベース管理システムによっては更新処理の実行後、自動的にコミットを
 実行するものもある
●トランザクションが実行途中に異常終了した場合、データベース管理システム
 によって自動的にロールバックが実行される

2相コミットメント(2フェースコミットメント)

トランザクションの整合性を保証する機能。トランザクションの同期処理を行う場合に使用
2フェーズ(段階)コミットは
 第1フェーズで更新準備処理(コミット可能かを問い合わせ、OK⇒第2フェーズ)行い
 第2フェーズで実際の更新処理を行うことにより、分散コンピューティングにおけるトランザクショントランザクショントランザクション内に含まれる総ての資源の整合性を保証

2相コミットメント
セマフォ方式

共有資源にデータの不整合が生じないようにするために共有資源を管理する方式。あるデータに対してセマフォ変数を設定し、セマフォ変数の値によってデータの使用を許可するか、しないかを決定する

OLTP(オンライントランザクション処理)

ネットワーク接続された端末がサーバに処理を要求し、サーバが要求に基づいた処理を行い、処理結果を端末に戻す処理のこと。通常、データベースの更新(追加・削除を含む)処理が多いが、処理の途中で中断されるとデータの整合性が取れなくなるため、信頼性が要求される

障害回復

データベース管理システムではデータベースに対する更新内容をログファイルに自動的に書き込む。障害が発生した場合、ログファイルを使用し、障害発生直前、バックアップ時までデータベースを回復(復旧)可能

障害の種類
トランザクション障害

●原因:トランザクションが異常終了したこと
●症状:データベース管理システムが停止しない
●対処:トランザクション開始直前までデータベースを回復する

システム障害

●原因:OSのシステムダウンなどシステムが停止したこと
●症状:データベース管理システムが停止する
●対処:データベース管理システムを再起動させることでデータベースを
    回復する

ハードウェア障害

●原因:ハードウェアが故障したこと
●症状:データベース管理システムが停止する
●対処:故障したハードウェアを交換後、バックアップ済データを利用して
    データベースを回復する

ログファイル

●データベースのあらゆる変更情報をすべて記録するジャーナル・ファイル
●トランザクションのコミットは、このログファイルにデータの変更情報を
 書き込むことで完了となる
●万一、データベースがダウンした場合、次回データベースを起動する際に、
 このログファイルを参照し、データベースに反映する

ハードウェア障害に備えたバックアップ

データベースとログファイルはハードウェア障害に備えて、定期的にバックアップしておく。ハードウェア障害が発生した場合でもハードウェア媒体を交換し、バックアップしたログファイルを復旧させることができる
●データベースのバックアップはデータベース全体を、運用スケジュールを決め、
 定期的に行う
●ログファイルのバックアップはデータベース管理システムに更新情報を自動的に
 書き込む。ログファイルは、容量と個数を決めて、複数のログファイルを循環
 させて運用する

障害とバックアップ
チェックポイント

メモリ上のデータベースバッファに存在する更新データを、ハードディスク上のデータベースに反映するタイミングのこと
データベースの更新は、いったん、メモリ上にあるデータベースバッファに対して更新を行い、チェックポイントの発生によって、データベースに反映される

ログファイルの更新

データベースの更新処理時にログファイルに書き込まれる情報は、メモリ上のログバッファに対して書き込まれる。ログバッファ上の更新情報は、コミットまたはロールバックのタイミングでファイルに反映される

ログバッファ

データベース管理システムが管理し、ログファイル(ハードディスク上)への更新処理を高速化するために、更新データを一時的に保存しておくメモリ上の領域のこと

リカバリ処理を実現する仕組み

リカバリ処理:ハードウェア障害が発生したとき、データベースを回復する処理

ロールバック

データベースに障害が発生したときに、記録したあるチェックポイントまでデータを巻き戻して、改めて処理を開始すること
バックアップ時のデータは再現されるが、それ以降に行った処理は失われる
主にデータベースの論理的障害に対して用いられる

ロールフォワード

データベースに障害が発生したときに、記録してあるチェックポイントのデータを再現した上で、ログファイルに残っているチェックポイント後の処理を再現し、障害直前の状態まで戻すこと
障害直前のデータが再現される
主にディスクの損傷などの物理的障害に対して用いられる

障害とバックアップ
リカバリ処理による回復方式
ウォームスタート方式

ロールフォワードでも復旧できなかった障害について、トランザクションを再処理してデータベースを回復する
ウォームスタート方式の再始動では、チェックポイントまで戻り、ログを使用してデータベースを回復し、未完了のトランザクションを見つけて実行し、データベースを回復する
ハードウェアには影響のないトラブルによる再起動なので、ハードディスクなどの二次記憶上にあるデータベースへの被害はない

コールドスタート方式

システムを完全に初期状態に戻して回復する方法
コールドスタート方式の再始動は、一度電源を遮断して、メモリの内容などを完全にクリアしてからコンピュータを起動することで、チェックポイントでのログなどは使用されない
ハードディスククラッシュなどで、二次記憶上のデータベースが失われる媒体障害などのケースが考えられる

データベースの性能向上

インデックスの活用

データの検索を高速化するために作成する索引のこと。インデックスは、検索の条件で指定するテーブルの項目に対して作成する。インデックスを作成することで、データベースの検索が速くなる。ただし、データの更新系処理時にインデックスも更新されるため、むやみにインデックスを作成すると、処理速度が遅くなる

複合インデックス

テーブルの複数のカラムを組み合わせて1つのインデックスとするもの

アクセスの分散

一つのデータにアクセスが集中すると、データベースの性能が悪くなる。アクセスが集中するようなデータは、できるだけ競合しないようにハードディスクを分散し、性能が向上するようにする
アクセスの分散はデータベースの物理設計の段階で考慮し、ログファイルは別の専用ハードディスクを割り当てるようにする

データベースの再構成

データベース運用後、追加、削除、更新を繰り返すことで格納効率が悪くなり、アクセス効率が悪くなるため、再構成が必要となる。再構成を行うことでデータを順番通りに並べ替え、格納効率を上がる
データベース管理システムの再構成の機能を利用

CSVファイル

データを「,(カンマ)」で区切って並べたテキスト形式のファイル。異なる種類のソフトウェア間でデータ交換をする時に良く利用される

ストアドプロシージャの利用
ストアドプロシージャ:データベースに対する一連の処理手順を一つのプログラ
ムにまとめ、データベース管理システムに保存したもの

すぐに実行できる形式に変換されてデータベースサーバに保存されるため、クライアントから呼び出し命令を送信するだけで処理が実行できる。通常のようにSQL文を一つずつ贈るのに比べて、処理時間の軽減にもつながる

データ制御

一般的に設定できるアクセス制限
●データベースに接続する権限
●データを検索する権限(読取権限)
●データを新規登録する権限(挿入権限)
●データを更新する権限(更新権限)
●データを削除する権限(削除権限)  等
アクセス権限を設定する場合、ロール(グループ)を作っておき、ロールごとにアクセス権限を設定する

 

ページトップへ 次へ