はじめに
今回は、データベースの物理設計について学習したことをまとめていきます。
物理設計の概要
物理設計のステップ
・テーブル定義
論理設計で定義された概念スキーマをもとに、それをDBMS内部に格納するための「テーブル」の単位に変換していくフェーズ。
※ 論理設計で作成されるERモデルを論理モデル、物理設計で作成されるモデルを物理モデルという
・インデックス定義
インデックスとは、パフォーマンスに影響を与える概念本の索引をイメージすると分かりやすい。プログラミング的な表現をすると、ポインタに近いらしい。ちなみに、インデックスはなくても機能としては何の問題もない。
このフェーズではインデックスを定義する。
・ハードウェアのサイジング
ここでは、キャパシティとパフォーマンスの観点からハードウェアの選定を行う。
データベースにおいては、データの整合性とパフォーマンスの間に強いトレードオフが存在する。データの整合性とパフォーマンスの平衡点を上手く見つけることがこのフェーズを成功させるカギになる。
キャパシティのサイジング
システムのサービス終了時のデータ量を正確に見積もれない場合がある。
そのときは以下のアプローチが一般的である。
1.安全率を大きくとって、余裕を持たせてサイジングを行う
2.簡単に記憶装置が追加できる構成にしておく
パフォーマンスのサイジング
1.性能要件の定義(処理時間とスループット)
2.リソース使用量の基礎数値の取得
数値を取得するには→類似の稼働中システムのデータを流用する、プロトタイプシステムを構築して性能検証を実施する。
・ストレージの冗長構成決定
このフェーズではRAIDという技術を用いて、ストレージの耐障害性を高める。また、RAIDはシステム全体の信頼性と性能を改善することができる。RAIDにはレベルがあり、それぞれ特徴を持っているためどのレベルを使うかを決める必要がある。
以下に代表的なRAIDのレベルをまとめた。
RAID0(ストライピング)
データを異なるディスクに分散して保持する。しかし、ストライピングはデータを保持しているどちらかのディスクが壊れるとデータを完全に復元することはできなくなるので、冗長性は全くない。
RAID1(ミラーリング)
ミラーリングは2本のディスクに全く同じデータを持つため、どちらか一方のディスクが壊れてもデータを復元することができる。信頼性は高いが、データが分散されないため性能は1本のときと変わらない。
RAID5
これはパリティ分散と呼ばれる方式。最低3本で構成し、データとともにパリティと呼ばれる誤り訂正符号を分散して格納する。3本でこうせいしたばあいは、1本までならディスクが壊れてもデータを復元することができる。また、データを分散できるため、I/O性能の向上も期待できる。
データベースは通常、書き込みより読み出しの機会が多いため、読み出し機能が重視される。
RAID10
これはRAID1とRAID0を組み合わせた方式。ストレイピングとミラーリングのいいとこどりをした方式であるため、信頼性、性能が高い。しかし、導入コストが高いため予算の少ないプロジェクトでは採用できない。
・ファイルの物理配置決定
物理設計の最終ステップでは、データベースのファイルをどのディスクに配置するかを決定する。そして、データベースに格納するファイルの種類は、約5種類に分けられる。
1.データファイル
2.インデックスファイル
3.システムファイル
4.一時ファイル
5.ログファイル
データファイル
データベースに格納するデータを保持するためのファイル。アプリケーションがSQLを通じて参照、更新を行う。
インデックスファイル
テーブルに作成されたインデックスを格納するファイル。
システムファイル
DBMSの内部管理用に使われるデータを格納する。
一時ファイル
SQLで使われたサブクエリを展開したデータや、GROUP BY句などを利用したときのソートデータが格納される。
ログファイル
テーブルに対する変更を格納するファイル。DBMSはテーブルのデータに対する変更を受け付けた場合、即座にデータファイルを変更しているわけではない。ログファイルにため込んだ変更を一括してデータファイルに変更を反映している。
これらのファイルを配置する際には、容量とファイルI/Oの量を考慮する必要がある。データファイルとインデックスファイルはデータの増加と、ファイルI/Oがどちらも多くなると考えることができるので、格納するディスクは専用にする。逆に、システムファイル、ログファイルはデータの増加はなく、ファイルI/Oの量が少ないということが考えられるのでディスクをまとめることができる。
終わりに
今回は、物理設計の概要についてまとめました。設計に関しては概要を学ぶことができたので、より深いところを学んでいきます。次回は、恐らく正規化になると思います。