PostgreSQLのお勉強

こんにちは。ぼくです。好きなパフェはチョコレートパフェです。

これまでお仕事でウェッブサービスの画面を作ったり変えたり消したり眺めたりしていて、「もしかしてぼくは"フロントエンドエンジニィヤ"というやつに向かっているのでは!?すごい!!」と思っていた矢先、非情にもデータベースのチューニングをやることになりました。フロントエンドエンジニィヤではなかったみたいです。
PostgreSQLと仲良くなるためにやったことを書いて、技術ブログっぽいかんじにするぞ!という強い意志の元、いまこれを書いています。チョコレートパフェが食べたいです。

本を読んだ

140文字を超える文字列は読解不能と公言するぼくなりに、がんばって読みました。
ググったらいくらでも情報は出てくるのですが、その情報の適用範囲がデータベース一般なのか、リレーショナルデータベースの理論なのか、PostgreSQLMySQL固有の特性なのか、さらに現バージョン固有の機能なのか等、混在していてわかりづらいため、まとまった情報を得るためには本を読んでよかったです。
本の内容については特に紹介しません。「読んでください。」ってかんじです。ぼくの8兆倍深い知識を持った著者と文章のプロである編集者が本気を出して過不足なく1冊の本にまとめたものを、ぼくごときが改めてまとめる必要がないのです。

  • 内部構造から学ぶPostgreSQL 設計・運用計画の鉄則
    設定周りなど、かなり具体的な内容が中心です。
    まともに触ったことがないので細かいところは意味不明でしたが、PosgreSQLの仕組みや機能の全体像をふんわり把握するのによかったです。

  • PostgreSQL全機能バイブル
    読んでないです。
    リファレンスとして持っておくといい、的な本らしいですが、意外と最初の方は内部構造について書かれているので、そのへんだけでも読んだほうがいかもしれません。でも読んでません。

  • 理論から学ぶデータベース実践入門
    上記2冊とは違って、PostgreSQLではなくRDBの本です。
    ウェッブ上で評判が良さそうだったので読んでみました。「理論から学ぶ」的なタイトルに弱いです。「すぐわかる」的なタイトルの本を読んで「わかった」という状態に至った経験がないからです。
    理論と実践のバランスがちょうどよく、RDB完全素人の自分にとっては、全体を通してわかりやすくておもしろかったです。第二章の述語論理、第三章の正規化理論が特によかったです。このあたりを読みおわった時点でDB内に NULL値が入っているのをみると吐き気を催すようになります。実践とはいってもSQLの書き方などは書かれておらずあくまで設計のおはなしです。Kindle版がないのが残念。

  • The relational model for database management
    コッドさん(RDBを考えたマヂヤバイぉぢさん)の原著です。もちろんまったく読めないのですが、ウェッッブに溢れている解説記事を漁ると、RDBの歴史的背景やどういう思想で作られたものなのかがわかって理解が深まったような気持ちになれました。

人に聞いた

IT業界のチョットデキル人という言葉は一般的な日本語で言うところの極めし者に相当します。SQLや設定については本やウェッブにあるのですが、今回扱った実行計画についてはほとんど情報がなかったため、チョットデキル人たちの経験に基づく情報がすごく貴重でした。

社内では、インフラやミドルウェア周りに詳しい人たち。ぼくの幼稚園児レベルの質問にも丁寧に答えてくれたり、すごくためになる雑談をしてくれたりで圧倒的成長!日々感謝!最高の同期(中途入社なので同期はいない)!弊社サービスのデータ構造に依る事象は本やウェッブを漁っても出てこないため、その特性を知っている人たちの助けなくして理解はあり得ませんでした。

社外では、PostgreSQL界隈の人たち。PostgreSQL日本ユーザ会の Slack team が Slackin で公開されていたので、空気を読まずに参加してアホみたいな顔をして質問を投げました。皆様、見識が深いのはもちろんなのですが、ぼくのアホ丸出しの質問にも真剣に丁寧に答えてくださいました。内心、「これだけ助けてもらって金銭が発生しないの謎いな?」「この人たちちゃんと仕事しているのかな?」などと思っていました。その節は本当にありがとうございました。

発表した

弊チームリーダから、「アンカンファレンスというイベントがあるよ(^^)」という""圧""助言をいただき、申し込んで発表してきました。

speakerdeck.com

発表どころか勉強会というものに参加すること自体初めてでしたが、楽しかったです。当日の様子はTogetterを参照ください。自分以外の発表は2%くらいしか理解できず、自分はなんてクズなんだろうとへこむなどしました。内容としては、自分のようにPostgreSQLそのものの話をしている人よりも、周辺ツール・技術の発表が多かったです。Python色濃い目。
会場で声をかけてくださった方、ありがとうございました。Slackで助けていただいた方々に御礼申し上げたかったのですが、持ち前のコミュ障と体調不良を遺憾なく発揮し、ほとんどご挨拶することもなく懇親会にも参加せずに帰宅しました。クズすぎて終わってますね。ちなみに弊社員はぼく以外に3名参加していましたが、全員すぐに帰宅しました。アウトローな社風です。

まとめ

だいたい4月頭〜5月末までの2ヶ月、勉強不足すぎる自分のクソみをダダ漏れさせながらも、勝手に色々やらせてもらえて楽しかったです。
ありがちな話ですが、人に説明することを前提にすると強制的に自分の知識が整理されて、理解を深めることができました。反応がもらえるのも今後のモチベーションになりました。ド素人でもチョットデキル人たちの中に飛び込んでみるのええやん、と思いました。意外と歓迎してくれます。
今後は少しずつPostgreSQLと仲良くなっていきたいです。あと、チョコレートパフェが食べたいです。