📚

読書感想文「達人に学ぶDB設計徹底指南書」

2024/07/15に公開

概要

書籍「達人に学ぶDB設計徹底指南書」を読了しました。

読書感想文を書いてみます。

読もうと思った背景

書籍自体は 2,3 年ほど前に購入し、読まずに放置しておりました。

余談:本書を購入した要因
  • いずれDB周りを触る際、参考となる書籍が欲しかった
  • レビューサイトにて、評判が良かった
  • 当時電子書籍版(PDF)がキャンペーン中で、安く購入できた

それから時間が過ぎ、 DBスペシャリスト試験の受験をきっかけにこの本の存在を思い出し、読書に踏み切りました。

本文 概要

DBの論理設計部分の解説に重きが置かれています。

  • DB設計の重要性
  • 論理設計と物理設計を分離する目的
  • 今まで大雑把にしか把握していなかった各種正規形
  • ER図の読み方
  • インデックスによるパフォーマンス向上の仕組み

変わった部分としては、以下のような話題も登場します。

  • バックアップ設計
  • リカバリー設計
  • 論理設計におけるアンチパターン

各章の末尾には演習問題が設けられており、章で学んだことをすぐに復習することが出来ます。

具体的なSQLの話は、論理設計解説の具体例を示すような場合に抑えられています。

「何故正規化するのか?」「何故インデックスを用いると早くなるのか?」といった、学習中に思わず「何故?」と疑問に思う部分も丁寧に解説されています。

教訓・学び・感想

2012 年の本ということで記述の古さをいくらか危惧していましたが、RDB自体枯れた技術ということもあって、 実業務でも通じるような学びが多々ありました。

正規化やER図といった基本的な部分から、「何故?」と思う箇所までしっかり解説されているため、DBになじみが薄い自分でもとっつきやすい書籍でした。

特に、いままで曖昧な理解だった正規系や、インデックスによるパフォーマンス向上の仕組みを体系的に学ぶことが出来、DBに対する理解が一段深まった感覚を覚えました。

◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇

DB設計の良くない論理設計として、以下が紹介されています。

  • バッドノウハウ(いわゆるアンチパターン)
  • グレーノウハウ(本書独自用語)

良くない論理設計から学ぶことも多々あり、更に詳しく学びたいと感じました。

アンチパターンに特化した以下のような書籍も存在するようで、こちらも近いうちに読んでみたいです。

◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇

正規化とパフォーマンスはトレードオフという事と、場合によっては "あえて正規化しない" という選択肢も存在する点は勉強になりました。

(やや系統は違う気がしますが)列指向DBを用いたデータウェアハウス運用では、以下の特徴のため、あえて正規化しないという運用は十分考えられそうです。

  • 高いパフォーマンスが求められる
  • 列指向DBのため、集計は得意だがJOINは苦手

◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇

シャーディング について。

AWS の Kinesis Data Stream 等の文脈でよく登場する "シャード(シャーディング)" ですが、自分の中で長らく「こういうものか」ぐらいの認識にとどまっていました。

この書籍では、レコードの水平分割を解説する傍ら、シャーディングについて以下のように補足しています。

水平分割のように、I/Oを分散しパフォーマンス向上を図る手段

自分の中では、この解説のおかげでシャーディングのイメージがいくらか確立でき、大きな学びとなりました。

◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇ ◆ ◇

本書では論理設計に重きを置いた書籍で、SQLは具体例を示す場合の最低限に抑えられています。

SQLのノウハウを学ぶには、他の本を当たる必要がありそうです。

SQLのノウハウを学ぶため、以下の書籍を当たってみる予定です。

Discussion