登壇資料
#phperkaigi の登壇資料です。玄人はうずらさんのSessionに行くと良いと思うけどRDBMSで失敗したことがある人はぜひ聴いてくれ!!
— そーだい@初代ALF (@soudai1025) March 24, 2019
アンチパターンから学ぶ RDBの正しい設計 / learn-from-failure-2 https://t.co/P7xSJ7rwgC
まとめ
本に全部買いてるので買ってくれ!
質問
当日会場であった質問です。
DBをリファクタリングするときに何処から始めるのがいいですか?
下記のブログにも書いてますがまずはアプリケーションから始めましょう。 RDBMS側は影響範囲が広いからです。 テストもアプリケーションは書けるし、なにより自分が主導で進めていけるはずです。 その先にRDBMSがどうしても変更しないといけないことがあればそれに向き合っていく。 そういう順番だと思います。
もう少し、RBBMSの本当のリファクタリングに踏み込んだ話でいうと次の4つが必要です。
- 抽象化
- テストコード
- モニタリング
- 覚悟
これらについては下記のブログのスライドにも書いてあります。 buildersconのサイトには動画もあるのでそちらもどうぞ。
実際に弊社 オミカレでもDBのリファクタリングをやっています。 その話はエンジニアhubに寄稿したので詳しいことはこちらを見てください。 如何に抽象化していくかの実例が書いてあります。
JSON型を使うとORMとのミスマッチは減ると思いますが問題はありますか?
なんと本に JSONの甘い罠 の章があります。 僕もとりあえずJSONでいいじゃん?って思って苦しんだ時期がありました。 その頃(4年前)の資料はこちらです。
www.slideshare.net
これがJSONの甘い罠の元ネタです。 「とりあえずJSON」はアンチパターンだと言う話は他にもあります。 こちらの翻訳記事も呼んでみてください。
JSON型を使うなという話ではなく、トレードオフをしっかり意識しましょう。
DBのモニタリングはどこからやればいいですか?
DBのモニタリング、無限に深掘り出来るのでまずはスロークエリと統計情報から見ましょう。 統計情報を見るためにはモニタリングツールのを使うのがいいです。 本の中にも 監視されないデータベース と 見られないエラーログ という章があります。 こちらも見てください。 監視自体の知識には入門監視がいい本なのでぜひ読んでみてください。 実際の細かい統計情報についてはこの辺をみてください。
- RDBMSのモニタリングについて - そーだいなるらくがき帳
- PostgreSQLは雰囲気でデッドロックを殺す - そーだいなるらくがき帳
- PostgreSQLの監視 ~ mackerel-plugin-postgresを読み解く - そーだいなるらくがき帳
- PostgreSQLの内部構造と監視の話 - そーだいなるらくがき帳
- PostgreSQLのレプリケーションの監視 - そーだいなるらくがき帳
- PostgreSQLのレプリケーションのコンフリクトについて - そーだいなるらくがき帳
- なぜあなたは SHOW ENGINE INNODB STATUS を読まないのか - そーだいなるらくがき帳
- MySQLの監視 ~ mackerel-plugin-mysqlを読み解く - そーだいなるらくがき帳
- InnoDBの監視 ~ mackerel-plugin-mysqlを読み解く その2 - そーだいなるらくがき帳
よし!飲み行くぞ!!!