II-22-3. データベースの物理設計

関係データベースを実装する際に必要なデータベースの物理構造について説明する。データベース物理設計の目的や、物理設計時に留意すべきトレードオフ、データとインデックス、ログをどのように配置するか、データベース記憶領域の確保など、物理設計に必要な具体的な手順を示す。

【学習の要点】

* RDBにおけるデータベース物理設計の目的は、表内と表間の整合性制約の定義、性能向上のための構造定義、セキュリティの設定を含んでいる。

* データベースの物理設計では、データの非正規化、インデックスの利用、問合せ処理の最適化などを行う。

* システムで必要となる容量や性能を想定して、I/Oの分散化や容量設計を実施する。

図II-22-3. 非正規化による性能向上

【解説】

1) 整合性制約

関係データベースでは、整合性制約を定義することにより、整合性制約と異なるデータの更新が禁止され、矛盾しない状態を保つことができる。制約の種類として、以下の項目がある。

* 主キー制約(一意性制約)

レコードを一意に特定するために、テーブル内の項目での値の重複を禁止する。

* 参照制約

外部キーによって、関連テーブル間での依存関係を定義する。

* ドメイン制約

値の制限値の範囲を事前に設定することで、それ以外の値の入力を禁止する。

* NOT NULL制約(非ナル制約)

NULL値の入力を禁止する。NULL値とは0(ゼロ)や文字列の” ”とは異なり、値が入っていない空の状態のことを言う。

2) 性能向上のための構造定義

* インデックス

インデックスの設定によって、検索やソートのパフォーマンスを上げることができる。

* 非正規化

正規化を行うと、データの整合性が高く保たれるが、数多いテーブルに分解され、結合条件が多くなりパフォーマンスが低下する。そのため、データベースのパフォーマンス向上のために、非正規化という、正規化後に故意に正規化を冗長化する構造定義の方法が用いられる。

非正規化は、重複してデータを持つことになるため、整合性が低くなる欠点がある。これは、正規化とはトレードオフの関係になるため、物理設計時に留意すべきである。

3) セキュリティ

データベースは共有して利用することが多い性質上、不正利用を防止するための機能がある。

* アクセス制限管理

多くのRDBMSでは、特定の表の参照のみ可能なユーザを設けるなど、ユーザの属性毎に参照や更新の許可設定をすることにより、きめ細かいセキュリティ管理をすることができる。また、全てのユーザにパスワードを設定することで、なりすましでのログインを防止できる。更に、外部のIPアドレスからの接続を拒否できる設定を持つものもある。

* ログ

ログは、データベースに対して発行したクエリの監視結果を保存する機能である。不正アクセスの監視やデータベースの障害時復旧の情報として使われる。また、長時間を要したクエリを記録する機能を持つRDBMSもあり、性能向上のための情報としても役立つ。

4) 容量設計とI/O分散

運用中に容量不足が発生した場合には、データベースに障害が発生し、停止してしまう場合がある。それを避けるために、あらかじめシステムで必要となるデータ量を想定した上で、十分なものとなるように、容量設計を実施する。

処理性能が必要となる用途では、ディスクの性能を向上させるべく、ファイルを複数のディスクに分散配置することや、ディスクアレイシステムを構築するなど、I/O分散の工夫を図る。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。