聞こえないJavaエンジニアが適当に書き連ねていく

つらつらとメモしたり日頃の溜まっている想いを吐き出す場所です。

『失敗から学ぶRDBの正しい歩き方』#そーだい本 を読んだ

これは何

Twitterでフォローさせていただき、毎日の金言を楽しみにしている曽根 壮大さん@soudai1025が書かれた本、『失敗から学ぶRDBの正しい歩き方』の読書記録です。

システムの開発、維持をやっていると、どうしても負の遺産が積み重なったデータベース設計を目の当たりにして辛い思いをするわけですが、 この本にはその辛さが面白おかしく書かれていて、辛い内容なのにさらっと読めてしまいました。

PostgreSQLMySQLの設計と運用を見直す、とキャッチコピーには書かれていますが、ほとんどの章は大抵のデータベースに対して適用できる内容になっています。

目次が公開されているので、章ごとの読んだ一言感想を書いてみます。

一言感想

第1章 データベースの迷宮

古いシステムをリプレースしようとしたときに、なんだこのコード?と困るやつ。

第2章 失われた事実

履歴として残すの大事。

第3章 やり過ぎたJOIN

対象データを絞り込んでからJOINするの大事。

第4章 効かないINDEX

INDEXのお気持ちはサッパリワカラナイ。

第5章 フラグの闇

なんたらフラグ、安易に持ちすぎるけどJOIN時に辛くなるよね~

第6章 ソートの依存

ソート難しい。

第7章 隠された状態

こういう設計はしたことなかった(と思う)けど、こんな設計した人がいたらお説教間違いなし。

第8章 JSONの甘い罠

JSONをテーブルに突っ込むのやったことないけど、これ読んでやめとこうと思った。

第9章 強過ぎる制約

テーブルに制約入れたくなるけど、この例で取り上げられてる制約のシステムを引き継いだら絶対最初分かんねぇなこれ。

第10章 転んだ後のバックアップ

復元テストをするの大事!絶対大事!

第11章 見られないエラーログ

今までデータベースのエラーログ、データ量がパンクしそうというやつしか見たことなかったなぁ。

第12章 監視されないデータベース

モニタリングする必要があるほどのシステムを触ったことなかったな…

第13章 知らないロック

ロックの仕組みって、データベースによって違うの…知らなかった。

第14章 ロックの功罪

ロックの仕組みについてわかりやすく書かれていて勉強になる。 でも、ファジーリードの図14.2と図14.3の違いが判らない…

第15章 簡単過ぎる不整合

開発者Aさんは伝える情報量が足りなさすぎじゃないですかね?(自戒)

第16章 キャッシュ中毒

キャッシュ、ほとんど使ったことなかったけどこれからも使わなくていいなぁ。

第17章 複雑なクエリ

ややこしいクエリは分解していくと、仕様の勉強にもなっていいよ。

第18章 ノーチェンジ・コンフィグ

冒頭のテーブル設定がデフォルトなのはデータ量がどのくらいなのか、発注時にちゃんと伝わっていなかったんじゃないかなぁ。 設定の見直しは実データを見ながら調整していくよね。

第19章 塩漬けのバージョン

データベースに限らず、バージョンは開発側としては上げたいけど、運用している側としてはお金がかかるならやりたくないよね。 受託開発だとこの辺が辛い。

第20章 フレームワーク依存症

フレームワークに合わせた設計なんてやったことなかったなぁ。 テーブル設計に合わせてフレームワーク側を近づけるのが当たり前なのでは?

まとめ

名著である、『SQLアンチパターン』と合わせて持っておくと、自分のデータベース設計が悪手になっていないか迷ったときに読んで見つめなおせるのでお勧め。