情報セキュリティ:ソフトウェアとセキュリティ(その3)(最終更新:2015/12/06 16:33:44 JST)
データベース管理システムはそれだけで1科目開講するくらいの内容がありますので,ここではほんのごく一部だけしか触れません.
データベース管理システムはDBMS(Database Management System)と略されることも多い.文字通り,データベースを管理するために使用される.主な機能は次のようなものがある.詳細は教科書参照のこと.
ここでは基本の中のさらにごく一部だけです.もっと詳しく知りたい人はデータベースマネジメントを受講するか,自分で学習してください.
現在もっとも多く利用されているデータベースは関係データベース,あるいはリレーショナルデータベース,RDB(Relational Database)である.このRDBの中で特に重要な概念は次のものである.
RDBではデータをテーブルに格納する時に,できるだけ不要なデータ項目を分離して整形する.その操作が正規化である.正規化には内容に応じて,第1正規形から第5正規形まであるが,ここでは最初の3段階のみ触れておく.
教科書の順序と異なるが,正規化の前に関数従属について理解する必要があるため,先に説明する.関数従属とは,あるデータ項目の値が定まれば,ほかのデータ項目の値が一意に決定されることである.
「学籍番号」によって,「氏名」が決まる
正規化の段階は次の条件を満たす必要がある.
データベースの機密保護が必要な理由は次の2つが挙げられる.
そのため,通常はDBへのアクセスを制限することで機密保護が行われる.アクセス制限の内容は次のようなものがある.
データベースにアクセスする単位はトランザクションと呼ばれる.トランザクションに関連した手続きは次のようなものがある.
トランザクションは,一連の手続きが確定されるか,まったく行われないかのどちらかでないとデータに矛盾が生じるので,中途半端は許されない.
トランザクションの性質はその頭文字を取ってACIDとも呼ばれる.
DBでは複数のトランザクションが同時にアクセスすることになる.DBMSは同じデータを扱う場合の矛盾を回避するために排他制御を行う.よく利用されるのはロックと呼ばれる手法である.ロックには次の2種がある.
複数のトランザクションが実行されるDBで,時間的な重複なくシリアルに実行した場合と結果が等しい時,直列化可能と呼ぶ.直列可能性を保証するためのロックの組合せは,教科書192ページ参照.共有ロックは複数かかってもOK.それ以外はダメ.
互いにロック待ちになり,処理が先に進まなくなる状態をデッドロックと呼ぶ.デッドロックの対処方法は次のようなものがある.
なお,ロックをかけるデータ範囲の大きさをロックの粒度と呼ぶ.粒度によりユーザの待ち時間とシステムへの負荷が変化する(教科書193ページ).
ロック対象が複数存在する時,ロックをかける相とロックを解除する相の2つの相から構成する方式を2相ロックと呼ぶ(教科書194ページ).
分散データベースとは位置的に離れた地点にDBを分散させたものを指す.複数のDBを論理的上1つのDBとして扱う.この方式ではデータの整合性に注意を払う必要がある.そのため2相コミット方式(2相コミットメント)でデータの操作が行われる(教科書196ページ).全DBにデータ更新要求を出した後,セキュアを送信,全部のDBから応答があればコミット,1つでも応答がなければロールバックする.コミット可否応答を返してからコミットを命令を受けるまでの状態をセキュア状態と呼ばれる.
一般に分散システムでは,論理的に1つのシステムとして扱えることが必須である.この基準は分散の透過性と呼ばれ,次のような性質を満たす必要がある(教科書197ページ)
DBシステムの管理の中で重要なものの一つに障害からの回復処理がある.障害の原因とその回復処理は次のとおり(教科書202ページ)
DBにおけるデータ更新時の記録をログ,あるいはジャーナルと呼ぶ.ログにはDB更新前と更新後の値を記録.
障害回復処理の方法には,ロールフォワードとロールバックがある.
DBMSは,DBへのアクセス回数を減らすためにバッファ領域にデータを蓄え,適当な間隔でDBに反映させる.このDBへデータを反映させるタイミングをチェックポイントと呼ぶ.チェックポイント時にコミットされるため,チェックポイント前に処理が完了しているトランザクションは,チェックポイント後に発生した障害に対しては障害回復処理は不要である(教科書204ページ).
このサイトに関するお問い合わせは,連絡先のページをご覧ください.