11/22に東京で行われた「PostgreSQL Conference Japan 2018」に参加してきました。
本イベントは日本PostgreSQLユーザー会主催のイベントで、PostgreSQLに関する色々なお話が聞ける楽しいイベントでした。有料イベントではありますが一般参加なら5,000円(早割なら半額)と比較的安価なので、気軽に参加できました。とはいっても、私はお仕事として参加したので会社持ちです。(しかし懇親会費用は出なかった)
当日はTwitterでハッシュタグ付きでツイートしまくってたので、最近私をフォローした人はビックリしたかもしれません。普段はずっと「ラブライブがー!」「Aqoursがー!」とかばかりツイートしてますが、実は私、本当は技術者側の人間なんですよ!(デデン
ということで、ざっくり振り返りです。自分のメモとかツイートとかベースに振り返ってます。
AMは基調講演が2つ、PMは3つのトラックに分かれて一般公演、という感じです。受付でノベリティとしてロゴ入りの水とシールなどをもらいました。わーい。
◆基調講演
基調講演1つ目は、NTT OSSセンタの坂田氏による、企業ユーザーから見たPostgreSQLの歴史と展望。Ver8あたりから使って・コミュニティに貢献されてきたとのことで、自分が知らない時代の話が聞けて面白かったです。
私がさわりはじめたのがVer9.4からなんですが、この話に出てきたVer8のころは色々と課題も多かったようで……チェックポイント時に大幅に性能が低下するとか、VACUUM時の課題とか……。そういった課題を確実に対応していって、今ではビジネスユースにも十分に応えられるものになっていったんですね。
また、レプリケーション機能に関して、当時コミュニティとしては「外部機能として実装」というスタンスでいたものの、8.1のころにNTT内部で開発を勧めて8.3でOSS版を公開し、それの必要性を各所で語って回った結果本体機能として段階的に取り込まれていったそうです。中々に胸熱な話でした。
現状もPostgreSQLはまだ課題を抱えていたり機能として中途半端なものもあるけれど、上記のように段階的に進んでいくとのことなので、今後の更なる改善に期待がもてそうです。
2つ目の基調講演は、Microsoftの藤田氏。
なんとMicrosoftはこのイベントのプラチナサポンサーとのこと。随所で、MSはOSSに力いれてますよって話とセットで古き悪しきMS帝国みたいな自虐的な話が入り、正直自分はその手のネタはもう食傷気味なんですが、参加者にはそれなりにウケていました。MSに対してはまだそんな感じのイメージの人が多いんだなぁ、とぼんやり思ったり。
前半ではAzureの話、後半からはAzure上の「Azure Database for PostgreSQL」の紹介。Azureに限らずクラウドのフルマネージドなDBサービス使うと楽ですよー、といった感じ。これは自分も全面的に同意です。
AzurenoPostgreSQLは、MS独自のカスタマイズはしておらず、コミュニティ版をそのまま使っているそうです。何か手を入れたくなったときはコミュニティにパッチを投げているとのこと。現状は9.5、9.6、10をサポート。11はもう少し待ってください、とのことでそう遠くないうちにサポートされそうですね。
ひとつ驚いたのは、「Azure Database for PostgreSQL」はダウンタイム無しでスケーリング可能とのことです。AmazonのRDSは1分程度ダウンすると聞いていたので、Azureもそうだと思ってたんですけど。ちなみにこれはService Fabricのおかげとかなんとか。(詳細はよくわかってないです)
ちなみにAzure上のPostgreSQLは、実体としてはWindowsコンテナとして動作しているとのこと。前半の内容ではAzure上で動いているOSはLinuxが50%以上になった的な話もしてたので、これにはビックリしました。てっきりLinuxかと……。Windowsコンテナで動いてるってことは、PostgreSQLもWindows版ってことですから、ちょっとだけ注意が必要になりそうですね。
◆一般公演
PMからの一般公演は3つのトラックにわかれており、そのうちの1つはチュートリアルコースとなっていました。私はこれには参加してないのですが、10月にリリースされたVer11の解体新書とか、チューニングに関する話とか、結構興味のある内容もありました。身体が3つあれば……!
というわけで参加したやつだけ、簡単に振り返りをば。
・A1.MySQLからPostgreSQLへの移行とDBリファクタリング
株式会社オミカレの高橋氏による、実例に基づいた話。いわゆる「秘伝のソース」状態と化していたため、例えばDBテーブルの性別欄に入っている値が「0、1、2、男性、女性」という状態になっているといった、「あーあるある」ってみんなの目が死ぬような状況にあったものを、PostgreSQLへ移行したというお話。
僕個人としては、担当してるシステムのDBは最初からPostgreSQLなので移行という観点ではあまり関係ないのですが、移行時にMySQLと比較した場合のメリットとか(トリガー関連が決め手になったようです)が聞けて、中々に新鮮な話でした。
・A2.EDB Postgres はここまできた!パフォーマンス問題解決のヒント
株式会社アシストの佐瀬氏による、PostgreSQL11での性能改善に関する話が中心でした。セッションタイトル的にEDB版の話がメインのように感じられますが、実際にはそんなにEDB要素は無かったです。
パーティショニングに関する性能改善がかなり大きいらしく、パーティション化していない9.6のDBとパーティション化したPostgreSQL11のDBとでは、最大350倍もの性能差があったとのこと。350……これは大きいですね。どうしてそこまでの性能差が出たのか、内部的な動きも一部含めて解説。
また、アシスト社への問い合わせが多い内容や実例などから、パフォーマンスチューニングで実際に起こっていた問題と対処方法などをいくつか紹介してくれました。Oracleから移行してきたパターンだとOracleのヒントをそのまま使っている場合に誤った実行計画になるとか、大量にテーブルを結合している場合の「join_collapse_limit 」「from_collapse_limit」パラメータに関する話など。このあたりは結構参考になりそうで、助かります。
・B3.Citusを使ってPostgreSQLをスケールアウトしてみよう
ここだけBトラックに移動して、スケールアウトの話を聞いてきました。
日本HPの篠田氏によるCitus(サイタス。シータスではないらしいです)の概要とその導入方法。CitusはExtensionsとして提供されているため、導入は簡単に行えるというのが最大のメリットかと。コーディネーターと複数のワーカーによって構成されて、実データはワーカー側に分散して保存する、というもの。
しかし意外と制約が多く、一例として「分散キーの更新不可能」「SELECT FOR UPDATE不可能(レプリカ作成してる場合のみ)」「WITH RECURSIVE句使用不能」「PARTITION BY句の使用に制限あり」など。WITH RECURSIVEが使えないのは結構痛いですね……。しっかり吟味する必要はありますが、条件があうなら簡単に分散化できるので検討の余地はありかと。
・A4.運用が大分変わるよ。オンプレ PostgreSQL から AWS のマネージド PostgreSQL の担当になっての知見
オイシックス・ラ・大地株式会社の林氏による、ECサイト上の分析基盤としてAWS上のPostgreSQLを使うようになった話。それ以前はMySQLを使用されていたそうです。
この直前に行われていたA3トラックがAWSの紹介だったことと、そのまま継続してA4を受けている人が多かったからか、クラウドを採用するメリットを説明する際にAWSへの熱いダイマが入っていました(サーバーを即用意できるとか、フルマネージドなので管理が楽とか)。 AWSにしろAzureにしろ、特に理由がない限りはもうクラウド上のマネージドサービス使ったほうが圧倒的に楽なんですよねぇ……と改めて実感。
また、AWSのRDS PostgreSQLはスケーリングに応じて一定の閾値でチューニングが自動的に行われるため、ある程度はチューニングを意識せずに使える、というメリットもあるとのこと。これは初耳でした。しかしスケーリング時には一時停止があるため注意、とのこと。無停止でスケーリング可能なAzureと、チューニング不要のAWSと……どっちもメリットデメリットがある感じですね。
◆LT
最後にLTがいくつかありました。
「デッドロックが趣味」という人とか、「PostgreSQLで山手線ゲーム」をした人など、中々に濃い?内容でした。今までMS系の勉強会とかカンファレンスへの参加が多めな私でしたが、ああ、どこ行っても頭おかしい(誉め言葉)人はいるんだなぁ、と感じました。(小並感)
その後は懇親会でしたが、私は不参加なのでここで終了と相成りました。
個人的には、結構収穫の多いカンファレンスだったなと思います。
最近の自分は、なんだかんだでPostgreSQLにどっぷりになりつつあるので、今後も勉強会とかカンファレンスがあれば積極的に参加していきたいですね。
あ、あとA4で紹介されてた「[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Amazonへのリンク)」は、早速買ってきました。まずはざっくり読んでおこうかなと。