SQLアンチパターンNightに参加してきたまとめ #sql_ap_night
オライリーから出ているSQLアンチパターンという本。良書ですよね。
先日SQLアンチパターンNightという勉強会があるというので行ってきたのでそのときのメモです。
遅刻してしまったので他のまとめに期待はしていますが、中途半端なまとめだけども頑張ってまとめます。
@hironomiu様の発表
資料は見つけられないのと、遅刻してほとんどメモはございません。。。
資料見つけられたら追加します。
メタデータトリブルについてや、シャーディングなどについて話していました。
あとはDB設計における新たなアンチパターンとして、謎の言霊:安全率
(設計時に安全率を考慮して掛け算していくと膨大なサイジングになるという現象)
SQLアンチパターンNight
スタンド名はワイルドサバンナ
遠隔自動操縦型のスタンド「ワイルド・サバンナ」テスト書いてないと自動発動する。 #sql_ap_night
— jkr (@joker1007) 2015, 4月 10
本の裏話
共同監修の和田省二様はなんと父親でした!
- 原稿はRe:Viewで執筆
- Markdownだとソースコードの引用が大変だったのでこれにした
- 達人に学ぶSQL徹底指南書はSQLアンチパターンと同様に中級者向けの本
- 他のおすすめ本は、SQL実践入門、データベース実践入門、SQLパフォーマンス詳解
- 「SQLパフォーマンス詳解」という本を翻訳しました
アンチパターンとは
- よかれとおもってやったことが裏目に出て問題が生じる
- ナイーブツリー
- 共通テーブルを使うなら使ってもいい
- SQLサーバは列挙型をサポートしている
- 再起クエリさえかければこれはアンチパターンじゃなくなる
ダイジェスト
- ネット上でよく燃える炎上度ランキング
- ナイーブツリー:1
- IDリクワイアド:5
- キーレスエントリ:4
- EAV:1
- ファントムファイル:4
- フィア・オブ・ジ・アンノウン:3
- わからないことにはNULLを入れる
- NULLを巡る争い
- スパゲッティクエリ:1
- n+1の問題と勘違いする人がいた
- SQLインジェクション:1
- サニタイズの話で、prepared statement
- キーとNULLはよく燃える
- NULLを排除した場合はDBの設計にくわしくならないといけない
パターンの意義
- SQLアンチパターンのいいところは悪い方法を悪いこととしてまとめてくれたこと
- アンチパターン名で議論できるようになる
- マルチカラムアアトリビュートとか10年前に通ったわー
- あーはいはい、インデックスショットガン乙
- 社内読書会をすると、社内での例で反省会ができる
- 新たなアンチパターン
- 闇雲な安全率
- とりあえず論理削除フラグ
- 忍者屋敷
- トリガーが好きな設計者
- トリガーがトリガーを発動させる
- リレーションとリレーションシップ
- 寿司とビール
- 実は論理削除の章を書きたかった
無料シェア会議室 PORTの宣伝
今回、VOYAGE GROUPの会議室を借りての開催となりましたが、他にも勉強会で開催する場合は申し込むと会議室をレンタルする以外にもピザなども振る舞ってくれるみたいです。
虚々実々のファントムファイル
ファントムファイルのアンチパターンに終息宣言をした発表。
その実態はS3にファイルをぶっこむという方法。
昔はサーバに置いたら使われないファイルを削除するようにしたり・・・などありましたが、S3などにおいてしまえば容量無限大ですのでそういうの気にせず、ミスした削除により置いたファイルがないということはなくなりそうですね。
良い世の中になりました。
SQLアンチパターンNight ライトニングトーク
サンプリングの少なさなどの見積もりミスと、本番サーバのほうがスペックがいいという思い込みにより発生した失敗談。
@yodatomato様の発表
実際にアンチパターンに遭遇したお話。
嘘!?私のDB、カンマ多すぎ!?や、SQLインジェクションのお話などをされてました。
最後のエンジニア募集は秀逸な募集の仕方で中々面白かったですw
@kamipo様の発表
MySQL と寿司ビール問題についての飛び入り発表
cf :
寿司ビール問題を解決するために、みんなImpact on meの「Affects me」ボタンを押しまくって是非MySQL本体のほうで解決してもらおう!!!
個人的感想
- キーとNULLはみんなだいすきな問題なんだなと感じました。
- 再帰クエリ使ったこと無いけど、MySQLでも使えるようになれば可能性は広がりそう。
- 懇親会で知りましたが、PostgreSQLにマテビュー追加されてたんですね。
- 非売品のバッチがもらえて嬉しい!!