そーだい本、「失敗から学ぶRDBの正しい歩き方」を読みました

「そーだい本」こと、曽根壮大さんが書かれた「失敗から学ぶRDBの正しい歩き方」を読みました。 読み終えたので感想を書いてみます。

gihyo.jp

感想

感想を書く前に、まずは書籍紹介を引用してみます。

「データベースがよく落ちる」「前任者が残したテーブル,SQLが読み解けない」「RDBMSを入れ替えたら予期せぬバグが」――MySQLPostgreSQLといったRDBMSリレーショナルデータベース管理システム)を使った業務システム,Webサービスを設計・運用していると,こういった問題によく直面するのではないでしょうか。 本書はRDB(リレーショナルデータベース)の間違った使い方(=アンチパターン)を紹介しながら,アンチパターンを生まないためのノウハウを解説します。それぞれの章では,問題解決に必要なRDBSQLの基礎知識も押さえるので,最近RDBMSを触り始めた新人の方にもお勧めです。

この本は、書籍紹介にもある通り、RDBを使う上で陥る失敗・アンチパターンについて運用を含めて、まとめられた本です。 RDBの概要については知っているけれど、設計や運用で不安がある、といった方にはオススメです。 特に運用面での落とし穴は非常に勉強になりました。

この本は全20章で書き上げられており、それぞれの章には、独特でキャッチ―な章タイトルがつけられています。 次の章の内容は、どんな内容なんだろう、と興味を惹かれるタイトルになっています。 また、それぞれの章の中では、対話形式でのアンチパターンの紹介やコラムによってより詳しく紹介したりといった形で 飽きないような工夫がされており、サクサクと読めるのでオススメです。 図もしっかり挿入されており、読みやすい本でした。 また、事例やより詳しい説明などは、外部のサイトに適宜、脚注で案内しながら書かれており 非常に丁寧に書かれている本です。

本の内容としては、1つの章の中で、アンチパターンの解説とポイントを紹介しながら PostgreSQLMySQLの実装の話を交えて、RDBの設計や運用について詳しく書かれています。 個人的には、「強すぎる制約」という9章の内容が非常に勉強になりました。

この9章では、email_address型という、RFCに準拠したデータ型を使うと 現実的にはRFC違反のメールアドレスを受け入れる可能性があるので、ALTER文を使ってデータ型の変更をする必要がある、といった話が紹介されています。 ここに、大量のレコードとindexが組み合わさると長期間のシステムの停止時間が必要になると書かれており、非常に勉強になりました。 こういう設計から来る失敗で、システムの停止時間が発生するのは機会損失に繋がるので厳しいですね。

ちなみに例で挙げられていたのは、「RFC違反のメールアドレスを使ったユーザがアプリに登録できない」といった例が挙げられており どっちみち機会損失になっているのですが・・・。

この他にも20章を通して、色々なアンチパターンがキャッチ―なタイトルと共に紹介されていて 基礎的な知識を抑えながらも、読みやすい1冊になっています。 RDBの監視の話なども書かれていますよ!

まとめ

この記事では、「失敗から学ぶRDBの正しい歩き方」を読んだ感想を書きました。 自分は、RDBについては「基本的なことは知ってるけど・・・」という状態だったので より1歩を踏み出したい、といった気持ちで手に取りました。 SQLアンチパターンはまだ読んでいません。

結論としては、非常に読みやすい本で、設計で陥りがちな失敗や運用面での落とし穴がしっかり紹介されていると同時に実装を語る上で基本的な知識も紹介されています。 「RDBの概要やRDBに関する基本的なことは知っているけど・・・」といった方にはオススメの1冊です。 PostgreSQLMySQLの実装の話も交えつつ、RDBの基礎知識を交えながら色々なアンチパターンの話を勉強できる良い本でした。

良い本だったので、前職の同僚にプレゼントしました。 SQLアンチパターンからの話もいくつか書かれており、そちらも読みたいなと思える内容でした。

次はSQLアンチパターン読もうかな?