イベント・セミナー

PGCon 2015 参加レポート

SRA OSS, Inc. 日本支社
マーケティング部 OSS 技術グループ
長田 悠吾

はじめに

オタワ大学入り口:大学名は英語とフランス語で表記されます。
オタワ大学入り口:大学名は英語とフランス語で表記されます。

2015年 6月16日(火)から20日(土)までの日程で、PGCon 2015 がカナダのオタワ大学にて開催されました。 PGCon は 世界最大の PostgreSQL カンファレンスで、今回が第 9 回目の開催となります。今年も世界中から PostgreSQL のユーザと開発者が集まり、参加人数は 244 人だったそうです。今年も SRA OSS はシルバースポンサーとして、このカンファレンスの支援をさせていただきました。また、弊社の石井はプログラム委員の一人として、プログラム選考に協力しております。

今回の PGCon のスケジュールでは、メインの講演プログラムが3日目と4日目に、その前の1日目と2日目にはアンカンファレンスが開催されました。このアンカンファレンスは "developer unconference" と名付けられ、技術的なトピックが3つのトラックに分かれて議論されました。これまでは PostgreSQL のコア機能の開発に関する議論は、非公開の "developer meeting" で中心的なメンバーのみで行われていましたが、今回はこれらの議論もアンカンファレンスの一部として公の場で行われることになりました。

なお、PostreSQL 開発コミュニティの運営など技術的内容以外の議論は、例年通り非公開(正確には招待制)の developer meeting で行われています。

弊社石井による発表: pgpool-II 3.5 の性能改善について
弊社石井による発表: pgpool-II 3.5 の性能改善について

また、PostgreSQL のクラスタリング技術に関するミーティングである "Cluster Summit" が昨年までは個別に開催されていましたが、今回はこれもアンカンファレンスの一部として行われました。私たちも、PostgreSQL クラスタリングを実現するソフトウェアの一つ pgpool-II の開発者として、アンカファレンスで発表してきました。

この他に、2日目と5日目にはチュートリアルセッションが設けられました。

本レポートではアンカンファレンスと、メインの講演の中からいくつかのトピックを紹介いたします。

アンカンファレンス

まずはアンカファレンスの様子をお伝えします。

アンカンファレンス:あちらこちらから議論が飛び交います
アンカンファレンス:あちらこちらから議論が飛び交います。

我々の pgpool-II の発表は、1日目の午後から始まったアンカンファレンスの一番始めのセッションの1つでした。まずは Yugo Nagata から pgpool-II の開発状況として、プロジェクトの新しいメンバー、pgpool-II 3.4 のリリース、pgpool-II のカンファレンス pgpool-II Day の初回開催などについて報告しました。続いて、弊社支社長の Tatsuo Ishii から次期バージョンである pgpool-II 3.5 について報告されました。pgpool-II 3.5 では pcp コマンド(pgpool-II の管理コマンド)や watchdog(組み込み HA機能) の改良と、拡張問い合わせプロトコル使用時の性能改善が予定されています。なお、このセッションの発表時間は質疑応答を含めて45分ほどでした。

2ndQuadrant の Simon Riggs と Huawei の Kumar Rajeev Rastogi からは、自律型トランザクション (autonomous transactions) に関する発表がありました。これはあるトラザクションから別の独立したトランザクションを開始できる機能です。Pl/PGSQL 関数の中で、呼び出し元のトランザクションとは無関係に COMMIT/ABORT を実行可能で、監査ログなどのユースケースが想定されています。すでにプロトタイプの開発が進んでいるようです。

アンカンファレンス2日目のランチ:山のように積まれたピザの箱
2日目のランチ:山のように積まれたピザの箱

Simon Riggs からは、BDR (bi-directional replication) に関しても報告がありました。BDR とはその名の通りマルチマスタの「双方向レプリケーション」を可能にする比較的新しい PostgreSQL 拡張モジュールです。数カ月前にバージョン 0.9.1 がリリースされ、すでにいくつかのプロダクトで動いているとのことです。 BDR は PostgreSQL 9.4 で実装された「論理デコーディング」の機能を利用してレプリケーションを実現しています。マルチマスタの双方向レプリケーションでは更新の競合が発生する可能性がありますが、競合の解決に必要な機能が現在の PostgreSQL に実装されていないため、BDR のモジュールは PostgreSQL に適用するパッチとセットで提供されています。ゆくゆくはこの差分パッチの機能も、PostgreSQL 本体に取り込まれることが期待されています。 なお、BDR のサブセットとして単方向の論理レプリケーションを実現する UDR (uni-directional replication) があり、こちらは PostgreSQL 9.4 でそのまま利用することができます。

2日目のアンカンファレンスでは、EnterpriseDB の Amit Kapila から、ロック機構などを改善するパッチを適用することで PostgreSQL の更新スケールアッ プ性能が向上することが報告されました。

また、同じく EnterpriseDB の Ahsan Hadi と NTT の Etsuro Fujita からは、FDW(外部データラッパ:外部にあるデータに SQL クエリでアクセスできる機能)を利用して PostgreSQL でシャーディングを実現する方法が提案されました。この方法では、PostgreSQL 9.5 の新機能である「外部テーブルでの継承」と「JOIN pushdown」が背景となっていますが、さらに PostgreSQL 9.6, 9.7 に向けて新しい機能を実装し、より完全なシャーディングを実現していくプランが発表されました。

メインプログラム

3日目からは、PGCon のメインプログラムの講演が始まりました。

オープニング会場:今回の参加者は 244 人
オープニング会場:今回の参加者は 244 人でした。

オープニングの後、Keith Fiske により PostgreSQL 9.5 の新機能がデモを交えて紹介されました。SQL で「テーブルにデータが存在していたら更新、存在していなかったら挿入」を実現する UPSERT 機能や、行データごとにユーザ権限を設定できる ROW LEVEL SECURITY (RLS) がスライドの最初の方に紹介されましたが、それはやはりこれらが PostgreSQL ユーザにとって嬉しい目玉の新機能だということでしょうか。

アンカンファレンスのところでも紹介した BDR と UDR についての講演発表では、Andres Freund からその機能の説明とデモ実演がありました。デモでは、CREATE EXTENSION 文で BDR モジュールをインストールするところから、設定を行って、実際に双方向レプケーションが動作する様子までを見ることができました。

Alexander Korotkov, Konstantin Knizhnik, Oleg Bartunov のグループ からは、現状の JSONB の課題とその改善案について講演がありました。課題の1つは JSONB の検索クエリが冗長なものになりやすい点です。少し複雑な検索をしようとすると WHERE 句の中で同じような条件を OR で連結する必要が出てきます。それを改善する新しい構文が提案されました。もう1つの課題は JSONB のデータサイズのオーバヘッドが大きい点です。これは、JSONB の key 名が冗長な形で格納されていることに起因するのですが、これを改善してデータサイズを抑えるアイデアが2つ提案されました。

Satoshi Nagayasu からは PostgreSQL を FPGA (Field-programmable gate away) で動かすというチャレンジングな試みが報告されました。「FPGA 上で動く PostgreSQL」の概念実証 (Proof of Concept) として、将来の研究開発の良いきっかけとなるような基盤づくりがプロジェクトの目的とのことです。

受付の様子:ゾウの絵が書かれた黄色い紙に注目。後にオークションにかけられました。
受付の様子:ゾウの絵が書かれた黄色い紙に注目。
後にオークションにかけられました。

Andrew Dunstan と Dmitry Dolgov からは、JSONB の要素を更新・追加・削除する PostgreSQL 9.5 の新機能が紹介されました。それぞれ、jsonb_set(), jsonb_concat(), jsonb_delete() という新しい関数が用意されていますが、追加と削除については演算子 || と - を使っても可能になりました。 さらに PostgreSQL 9.6 以降で計画している新しい JSONB 機能の計画についても発表されました。

3日目の最後にはライトニングトークが開催されました。全部で 11 人の発表者がいましたが、一番最後の Josh Berkus による "The 7 Habits of Highly Ineffective Speakers" (「非常に非効果的な発表者の7つの習慣」: 日本でも有名な『7つの習慣』という本の原題をもじったものと思われます)という発表で、プレゼンテーションの良くないやり方の例をコミカルに皮肉たっぷりにプレゼンし、会場を沸かせていました。

4日目、東京大学の Yuto Hayamizu の講演では、システム性能評価を行う際の考え方について、エンジニアではなく研究者の立場から語られました。測定の前に目的をしっかり定め、その目的に従った測定を行う必要性や、モデリング・測定・シミュレーションという基本となる3つの技能、および、これらの 関係性について、具体的な例を引用しながら解説されました。

Amit Kapila からは PostgreSQL 9.5 のスケーラビリティと性能の向上について講演されました。ロック機構の改善などにより PostgreSQL 9.4 の参照性能は向上しているとのことで、性能測定の結果、同時接続数が多い時には 9.4 に比べて最大で2倍近くも TPS (Transaction per Second) が高かったとのことです。さらに、性能向上に関わる PostgreSQL 9.5 の新機能として、BRIN (Block Range Index)やWAL圧縮などが紹介されました。

今回の会場: Desmarais Building
今回の会場: Desmarais Building

性能向上に関わる別の話題として、Amit Kapila と Robert Haas からシーケンシャルスキャンの並列化の講演がありました。これは検索処理を複数のバックグラウンドで並列的に行わせることで高速化する機能で、当初 PostgreSQL 9.5 での実現を目指していましたが、必要な機能のいくつかが 9.5 にはコミットされておらず、残念ながら今回は見送りとなりました。開発中の性能測定では、並列の多重度が増えるに従いクエリの実行時間が減少することが確認されており、 たしかに並列化の効果が得られていることが報告されました。

FDW 機能を利用すると複数の外部サーバでクエリを実行することができますが、実はこの場合、現在の PostgreSQL ではトランザクションの原子性は保証されません。すなわち、複数サーバにまたがるクエリが実行されたときに、一部のサーバでは COMMIT され、他のサーバでは ABORT された、ということが起こり得るわけです。Ashutosh Bapat の講演では、この「分散トランザクション」の問題を2相コミットの枠組みを使って解決する方法が提案されました。この機能を実装したパッチはすでにコミュニティに投稿されており、レビューを待つ状態だそうです。

日本の PostgreSQL エンタープライズコンソーシアム (PGECons) からは、日本の企業が抱える課題とその解決案について PostgreSQL コミュニティに提案が行われました。具体的には NTT の Tetsuo Sakata からは、日本でのパーティショニングのユースケースと使用パターンの調査、および性能評価の結果を踏まえて、明示的なパーティショニングの構文やクエリ実行の効率化などの機能が PostgreSQL に必要だと提案しました。また、富士通の Yurie Enomoto からは、迅速な障害対応やサポートが求められる状況を踏まえて、PostgreSQL のエラーメッセージに固有の Message ID を付与する提案と、実際に富士通で行っている取り組みについての紹介がなされました。

『SQLパズル』や『プログラマのためのSQL』など SQL 関連の本を多く執筆していることで有名な Joe Celko の講演ではデータのエンコーディングに関する解説がなされました。書籍に付けられる ISBN や、空港に付けられる略称、日付、など様々なエンコーディングを例にあげながら、悪いエンコーディング、よいエンコーディングについての説明がされました。

オークション:開発メンバーのサイン入り集合写真 635ドル
オークション:開発メンバーのサイン入り集合写真 635ドル

Joe Celko の講演の後は、クロージング、そして恒例のチャリティーオークションです。毎年、様々なものがオークションにかけられ、驚くような高額で競り落とされていく、大変盛り上がるイベントです。

例えば、受付のテーブルに貼ってあった落書きのような象の絵や、残りもののクッキーなどに 50 ドル程の値が付きます。 PostgreSQL のコアメンバーであり陶芸家でもある Josh Berkus が作成した、PostgreSQL のマスコットマーク付きのマグカップ2つは 150 ドルと 120 ドルで競り落とされました。 そして今回、最も高い値がついたのは、PostgreSQL 開発メンバーの全員のサイン入り集合写真です。なんと 653 ドルの値が付きました。

おわりに

今回の PGCon 2015 のプログラムを見て、まず印象的なのは日本人の発表者の多さです。全部で30ほどの講演のうち4つが日本人による講演でした。アンカンファレンスやライトニングトークの発表者まで含めるとその数はさらに増えます。世界の中で PostgreSQL に貢献する日本人が目立って来ているのは、とても素晴らしいことだと思います。また、同じ PostgreSQL に関わる日本人としては大変刺激的なことでもあります。

オタワ最古の教会:ノートルダム大聖堂
オタワ最古の教会:ノートルダム大聖堂

JSON 関連の講演が4件と多かったのも印象的です。5日目に行われたチューリアルの1つも "NoSQL on ACID" ということで、なんだかんだと言って PostgreSQL コミュニティの中でも NoSQL への関心は高いということでしょう。

JSONB 関連以外でも、双方向レプリケーション、シャーディング、並列化と様々な新機能に関する発表がありましたが、こういった新機能の背景には PostgreSQL の持つ強力な拡張性があります。実際に、今回の PGCon 2015 で発表された技術の多くは、PostgreSQL 9.1 から導入された FDW, 9.3 からの custom background worker, 9.4 からの Logical Decoding, そして 9.5 の CustomScan といった拡張機能が駆使されています。 一方で、そこからさらに高度な機能を実現するために、PostgreSQL自体にさらなる拡張が求められてくるのでしょう。こういうコアと周辺技術の相互作用が PostgreSQL の進化する力の源なのだと思います。

今回の PGCon2015 に developer uncoference から参加し、そのような実感を得ることができました。来年は PGCon 10回目、かつ PostgreSQL 生誕20周年の節目を迎えます。今年以上に盛り上がることを期待しています。