読書感想文「達人に学ぶDB設計徹底指南書」
概要
書籍「達人に学ぶ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