失敗から学ぶ RDB の正しい歩き方
シッパイ カラ マナブ アールディービー ノ タダシイ アルキカタ
- 著者:
- 曽根壮大(ソネ, タケトモ)
- 出版社:
- 技術評論社
- 出版日:
- 2019年03月
- ISBN:
- 9784297104085
- シリーズ:
- Software Design plus
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
MySQL・PostgreSQL の設計と運用を見直す。
技書の森解説
動いているデータベースに潜む設計と運用の失敗を、20 のアンチパターンとして名前を付け、生まないための手立てまで解説する本です。『失敗から学ぶ RDB の正しい歩き方』は曽根壮大 氏の単著で、技術評論社の Software Design plus シリーズから 2019 年 3 月に刊行されました (版元の発売日は 2019 年 3 月 6 日)。書誌の紹介文によると、MySQL と PostgreSQL の設計と運用を見直す本です。版元のプロフィールでは、著者は株式会社オミカレの副社長兼 CTO で、日本 PostgreSQL ユーザー会の理事を務め、『Software Design』誌でデータベースに関する連載「RDB アンチパターン」などを執筆してきたと紹介されています。
全 20 章、どの章もアンチパターンの解説から始まる構成
版元の試し読み PDF に載る詳細目次では、全 20 章のどれもが「アンチパターンの解説」で始まり、「アンチパターンを生まないためには?」と「アンチパターンのポイント」へ進む同じ型をとります。章によっては、その間に背景の知識を補う節が入ります。第 4 章「効かない INDEX」には「INDEX の役割」、第 5 章「フラグの闇」には「とりあえず削除フラグ」、第 14 章「ロックの功罪」には「トランザクション分離レベル」、第 15 章「簡単過ぎる不整合」には「非正規化の誘惑」といった節があります。章題の並びを見ると、第 1 章から第 9 章はテーブル設計と SQL の使い方、第 10 章から第 12 章はバックアップ、エラーログ、監視という運用、第 13 章と第 14 章はロック、その先はキャッシュ、複雑なクエリ、設定、バージョンアップ、フレームワークへの依存と、設計から運用の周辺へ広がる組み立てと読めます。第 6 章の Redis、第 7 章の EAV の代替としての JSON データ型、第 9 章の PostgreSQL の遅延制約のように、コラムで関連する話題を補う章もあります。
動いているから気づけない、RDB の失敗が表に出るまで
データベースの設計の誤りは、作った直後にはほとんど表に出ません。データ量が少ないうちは、使われない インデックス でも全件を読む検索でも応答は速く、削除フラグで済ませた論理削除も問題を起こしません。行が増え、同時に書き込む利用者が増え、担当者が入れ替わったころに、遅いクエリやロックの待ち、説明のつかない不整合として現れます。多くの章が解説、背景の知識、防ぎ方、ポイントの順に節を並べているのは、症状だけでなく原因の仕組みまでたどれるようにするためと読めます。たとえばロックの章でトランザクション分離レベルを扱い、不整合の章で非正規化の誘惑を取り上げています。読み取りを速くするためにデータをあえて重複して持つ 非正規化 も、同時に動く処理どうしで変更がどこまで見えるかを決める トランザクション分離レベル の設定も、後から整合性の問題として返ってくることがあり、その関係を示す配置と読めます。運用の章でバックアップ、エラーログ、監視、設定、バージョンアップを独立した失敗として扱っている点も、データベースの問題をテーブル設計だけに閉じない本書の視点を表しています。
障害に悩む MySQL と PostgreSQL の担当者と新人に向く理由
版元は、MySQL や PostgreSQL を使ったシステムやサービスを設計、運用していて、原因の分からない障害によく出くわす人、そしてそれを改善したい人に勧めています。あわせて、それぞれの章で問題解決に必要な RDB や SQL の基礎知識も押さえるため、RDBMS を触り始めた新人にも勧められると案内しています。前任者から引き継いだテーブルや SQL の意図が読み解けない人、フレームワークに SQL の組み立てを任せてきて、その裏で何が起きているのかを知りたいアプリケーション開発者にも、章ごとの失敗例は具体的な手がかりになります。一方、本書はアンチパターンを入り口に必要な基礎を補う組み立てなので、リレーショナルモデルの理論を最初から順に学びたい人は、理論を主にした入門書と組み合わせると目的に近づきます。また、2019 年の刊行なので、製品ごとの細かな挙動や設定の名前は、手元の版の公式文書で確かめながら読む前提です。自分のシステムで起きている症状に名前を付け、次の設計で同じ失敗を繰り返さないための一冊として、データベースを日々扱う人には投じた時間に見合う本です。
言及した記事 (13 件)
主キーとIndexについて整理する
♡ 80Databaseテーブル設計をskillsでレビューしてみませんか
♡ 37DB, 初心者, アンチパターン, SKILLS, ClaudeCodeDBエンジニア必見 => 名著「失敗から学ぶRDBの正しい歩き方」のまとめ
♡ 11SQL, RDB, アンチパターンTop N+ORDER BYのSQLチューニング
♡ 10SQL, チューニング「失敗から学ぶRDBの正しい歩き方」を読んだ
♡ 8MySQL, SQL, PostgreSQL, RDBMS, RDB会員状態を例に状態管理のデータベース設計を考える
♡ 7MySQL, SQL, DB, DB設計【輪読会振り返り】「A Philosophy of Software Design」と「失敗から学ぶRDBの正しい歩き方」
♡ 2#輪読会『失敗から学ぶRDBの正しい歩き方』を読んでいく(前編)
♡ 2MySQL, PostgreSQL, RDBMS, RDB「失敗から学ぶRDBの正しい歩き方」を読んで[備忘録]
♡ 2MySQL, SQL, PostgreSQL, 備忘録, RDB「失敗から学ぶRDBの正しい歩き方」を読んで
♡ 0SQL, MySQL, PostgreSQL
この本に興味がある方におすすめ
関連する本
関連記事
関連用語
SQL
リレーショナルデータベースを操作するための言語。データの問い合わせと更新を担う
ORM
オブジェクト指向のコードとリレーショナル DB のテーブルをマッピングするライブラリ
SQL インジェクション
ユーザー入力を通じて不正な SQL 文を注入し、データベースを不正操作する攻撃手法
MySQL
世界で広く使われるオープンソースのリレーショナルデータベース管理システム
フィーチャーブランチとは - 機能ごとに独立したブランチで開発しマージする Git ワークフロー
機能ごとに独立したブランチを作成し、完成後にメインブランチにマージする Git ワークフロー
トランクベース開発
全開発者が 1 つのメインブランチに頻繁にコミットし、長寿命ブランチを避ける開発手法