『達人に学ぶ DB 設計徹底指南書』読んだ

データベースについて今までちゃんと勉強してこなかったことは、過去のエントリで書いた。 まったく勉強しなかったわけじゃないけど、 せいぜいソフトウェア開発技術者(現・応用情報技術者)の資格を取るときに少し勉強した程度。

データベース設計は、既存のデータベースを参考にしたり、過去の経験をもとに設計してきた。 理論的というよりも感覚的に作成していたと言っていい。 本書を読むことで、感覚的に行っていたやり方が、理論的なものに再構築された気がする。

気になった箇所に付箋を貼りながら読んだので、それをメモしておく。

概念スキーマ

ハードウェアのサイジング

  • 性能問題のほとんどはストレージの I/O ネックによって引き起こされる

ストレージの冗長構成

  • データベースの RAID は少なくとも RAID 5 で構成する
  • お金に余裕があれば RAID 10
  • RAID 0 は論外

バックアップ設計

正規化

  • 第 3 正規形までは原則として行う
    • 関連エンティティが存在する場合は、関連とエンティティが 1 対 1 になるように注意する
  • 原則として非正規化は許さない
    • 非正規化はあくまでも最後の手段
    • パフォーマンスを向上させるためのその他すべての戦略が要件を満たさない場合だけ

インデックス

  • 大規模なテーブルに対して作成する
  • カーディナリティの高い列に作成する
  • SQL 文で WHERE 句の選択条件、または結合条件に使用されている列に作成する
  • レコード数が 1 万件以下の場合はほぼ効果が無いと考えていい
  • 特定のキー値を指定したときに、全体のレコード数の 5% 程度に絞り込めるだけのカーディナリティがあること

達人に学ぶDB設計 徹底指南書

達人に学ぶDB設計 徹底指南書