はじめに
「達人に学ぶDB設計」について
リレーショナルデータベースにおける設計についての書籍で、以下2つについて解説されています。
- 論理設計
正規化やER図といった道具を使ったデータモデルの設計のこと。 - 物理設計
サーバーやストレージといった物理的なハードウェアレベルの設計のこと。全体的な所感
私は、SQLや論理設計の基礎的な内容 (正規化とER図)は既に学習していましたが、脱初心者を謳っている本だけあって、全体的に難しく感じました。今後、定期的に見返すことで少しずつDB設計の知識を身につけていきたいと考えております。
良かったところ
- 全体的に難しかったが、図が豊富に使われていたためイメージがしやすかったこと。
- 論理設計におけるバッドノウハウとグレーノウハウについて解説があり、実際の設計でやってはいけないことがわかったこと。
学んだこと
2章の「物理設計」の部分が個人的に難しく感じたので、それについてアウトプットします。
物理設計について
物理設計は、論理設計の結果を受けて、データを格納するための物理的な領域や格納方法を決める工程のことです。 大きく分けて5つのステップがあります。
- テーブル定義
論理設計で定義されたものをDBMS内部に格納するためのテーブル (共通点を持ったレコードの集合)の単位に変換していく作業のことです。 - インデックス定義
インデックスとは、ほんの索引のようなもの。SQL文がインデックスをたどることで、テーブルの特定レコードに簡単にアクセスできます。 - ハードウェアのサイジング
サイジングはキャパシティとパフォーマンスの2つの観点から行います。
①キャパシティのサイジング
システムで利用するデータ量とサービス終了時のデータの増加率を見積ること。
②パフォーマンスのサイジング
処理時間とスループット (どれだけたくさん処理できるか)を決めること。 - ストレージの冗長構成決定
複数のディスクに同じデータを書き込んで冗長化し、そのうち一本が壊れても残りのディスクが生きることでデータが保全できるようにすること。この技術がRAIDで、RAIDには何段階かのレベルがあり、信頼性や性能の要件、およびコストをトータルに勘案して決める必要があります。 - ファイルの物理配置決定
データベースに格納される5つのデータファイル、インデックスファイル、システムファイル、一時ファイル、ログファイルをどのディスクに配置するかを考えます。5つのファイルのうち、最もI/O量 (入出力量)が多いのはデータファイルです。データ量が大きいファイルはできるだけ独立したディスク (RAIDグループ)に配置することが望ましいが、コストがかかってしまうという問題が生じます。(トレードオフの関係が成り立つ)最後に
以上、簡単ですが感想と学んだことです。最後まで読んでいただきありがとうございました!参考文献