LoginSignup
15
9

More than 3 years have passed since last update.

社内読書会としてSQLアンチパターンを選んだお話

Last updated at Posted at 2019-12-25

NTTコミュニケーションズ Advent Calendar 2019,
25日目 今年最後の記事です!

はじめに

弊社では数ヶ月前から技術顧問(t_wadaさん,などなど)の方々をお招きしており、
イケてるエンジニアと一緒に勉強したいよね!といった流れから
技術書を1つ選び読書会を開くことになりました.

この記事では,
社内読書会でSQLアンチパターンを選んだ経緯と,
心がけるていること,実際に学んだことの実例をいくつか紹介していきたいと思います!

SQLアンチパターンを選んだ経緯

数ある技術書の中で,SQLアンチパターンを選んだ理由は
やはり著者(t_wadaさん)に直接聞けるから!が大きな理由ですが,
他にもSQLアンチパターンには読書会の入門に適した以下の理由があります.

  • 各章が独立しているので順番を気にせず発表や参加ができる
    • 前の章の内容に依存関係があるとキャッチアップが大変になり出席率が低くなってしまう...
  • DBは比較的みんなが触ったことが多いので,自分たちが業務してきた中でハマった部分を共有できる

心がけたこと

また,この読書会に興味があるエンジニアが今後の業務に生かせるよう次の事柄を心がけました

  • チームや部署に関わらず参加できるようにする
    • こちらは各部で利用可能な開発者チーム専用のスペースで行うことにしました
  • アンチパターン本が書かれた当時と現在で,今もアンチパターンと言えるかを議論する
    • 技術の進歩により,必ずしもアンチパターンでない場合があるので
  • 自分の業務となるべく関わりのある章を選択する
    • アンチパターンにハマったつらさを共有できるので

実際に読書会の議論フェーズで出た意見など

実際に議論・業務で実際にアンチパターンを使った際の感想などをいくつか紹介します.

5章 EAV

  • EAVを導入した結果、コードの保守性が下がっていった
    • DBのカラムを読んでも、何が入ってるか分からない!
  • EAVは作るときは簡単だけど、読むとき地獄
  • wordpressなどDBの利用方法がかっちり決まらないタイプだと使わざるを得ないのかも

7章 Multi column Attribute

  • 1章 jaywalkと並んで『これはやらんだろ』と言われるアンチパターン
  • 従属テーブルがきれいにまとまっててすごい
  • 例題に限って言えばドキュメント系DB使ってもよいかも
  • JSONでも同じことが出来るけど, SQL的にはまだ二級市民

11章 ファントムファイル

  • 運用しておもったこと
    • Windows等からNFSとかでマウントしたらそのままファイルが見えるのは楽
    • レコードが消えてる場合手組みで修正したりバックアップからの復旧は二度手間になる
    • 割とテストが書きづらい
  • この本が書かれた当時にはS3のようなものは存在しなかったので,Blobに対する考え方などが代わってきてて面白い!
  • 今だとS3化する?

その他の議論

DB設計でNULLを許容するかどうかについて

この話はDB界隈でもかなり鬼門だそうで,
会社や設計者によってもNULL絶許マンと,NULL使うマンに別れると思います.
ですが,関数の戻り値やOUTER JOINで結局NULLが返ってくる場合がありNULLからは逃れられないことからうまく付き合う(NULLを許容する)ことが自分にはあっているのかなぁと思いました.
ちなみに原著者はNULL許容派だそうですが,海外のDB学会だとNULL否定はが多いらしい...?

最後に

初の部署間をまたいだ読書会を行った感想ですが,
アンチパターン本が書かれた当時と現在を比べてみて,設計思想の変化であったり技術の進歩で必ずしもアンチパターンではない部分もあり,議論がとても面白かったです.
また章立てが独立している技術書は初めての読書会でも取り掛かりやすい!と感じました.

まだ,読書会に手を付けられていない方々も,
既に読書会をバリバリやっている方々,
技術書の読書会にSQLアンチパターンを始めてみてはいかがでしょうか.

みなさま,良いお年を!

15
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
9