Clustering and Replication Developers Summit pgCon 2014 参加レポート
SRA OSS, Inc. 日本支社
長田 悠吾
はじめに
2014年5月20~24日にカナダのオタワ大学で PostgreSQL Conference 2014 (以下、PGCon 2014)が開催されました。PGCon 2014 は世界中の PostgreSQL 開発者とユーザが一堂に集まる PostgreSQL の一大イベントです。本レポートではその一環として5月20日に開催された Clustering and Replication Developers Summit pgCon 2014 (以下、Cluster Summit 2014) の様子を報告します。
Cluster Summit 2014 は PostgreSQL の中でもクラスタリング、レプリケーション、スケールアウトの技術に興味があるメンバーが参加するミーティングで、今回で第4回目の開催となります。筆者は PostgreSQL クラスタリングを実現するソフトウェアの一つ pgpool-II の開発者としてこのミーティングに参加しました。
会場となったのはオタワ大学の講義室の一室です。正面のスクリーンと演台を取り囲むように、半円状に机と椅子が並べられ、参加者はそれぞれ好きな場所に座ります。Josh Berkus の司会のもと、まず参加者それぞれのプロジェクトについて報告が行われ、その後、事前に用意されていた、あるいは、その場で挙がった諸々のテーマについて自由な雰囲気でディスカッションが行われました。
プロジェクト報告
報告は PostgreSQL 本体と独立して進められている外部プロジェクトの近況報告から始まります。pgpool-II に関しては筆者がバージョン3.3がリリースがされたこと、および開発中である次バージョンの3.4では、PostgreSQL 本体から例外マネージャ、メモリマネージャが取り入れられたことなどを報告しました。その後、Ahsan Hadi から pgpool-II のパフォーマンステスト(参照クエリ 75%、更新クエリ 25%)の結果の報告があり、データベースのサイズが十分に大きい場合には、バックエンドの PostgreSQL ノードの数を増やすことで単位時間あたりのトランザクション処理性能(TPS: Transaction Per Second)がスケールアウトする結果が示されました。
Koichi Suzuki からは Postgres-XC について報告がありました。Postgres-XC は完全なトランザクション処理と、書き込み/読み込みスケールアウトが可能な、PostgreSQL クラスタリングソフトウェアです。PostgreSQL 9.3 をベースにした Postgres-XC 1.2 がリリースされ、このバージョンからはマテリアライズドビュー、自動更新可能ビュー、イベントトリガに対応していることなどが報告されました。
Mason Sharp からは、Stado と Postgres-XL について報告がありました。Postgres-XL は Postgres-XC から派生したクラスタリングソフトウェアですが、よりパフォーマンス、セキュリティ、安定性を重視するというコンセプトが強調されていました。
続いて報告されたプロジェクトは、トリガベースの非同期レプリケーションソフトウェアの Slony-I です。開発者の Chris Browne, Jan Wieck からは、PostgreSQL 9.4 で取り入れられた論理レプリケーション機能を用いたバージョンを、2014年内をめどに試作してベータ版を出すことがためらいながら宣言されました。
外部プロジェクト報告の最後は Mark Sloan によるBDR プロジェクトの報告でした。BDR とは Bi-Directional Replication(両方向レプリケーション)の略称で、論理ログストリーミングレプリケーション(Logical Log Streaming Replication: LLSR)を用いて、非同期のマルチマスタ分散データベースを実現する機能です。その機能は PostgreSQL のコア部分に段階的に追加されつつあり、ベースとなる changeset extraction (チェンジセットの抽出)機能はすでに PostgreSQL 9.4 に取り入れられています。報告の中では、9.4をターゲットとした機能がいくつか残っていること、9.5をターゲットとしている機能もいくつかあることが述べられました。
外部プロジェクトの報告に続いて、PostgreSQL 本体の API 開発プロジェクトとして FDW(Foreign Data Wrapper: 外部データラッパ)の機能を用いたクラスタリングについて Etsuro Fujita から報告がありました。postgres_fdw を用いると外部の PostgreSQL サーバに格納されたデータを参照することができますが、このクラスタリング方式では FDW の文法を拡張し、外部テーブルへのテーブル継承とパーティショニングを可能にすることにより、postgres_fdw を使ったスケールアウトが実現可能になります。
ディスカッション
プロジェクト報告の後は、多くのクラスタリングプロジェクトで必要とされ、今後本体に追加すべき機能のアイディアについて活発なディスカッションが繰り広げられました。テーマはその場で挙がった様々なもの、例えば、非同期 FDW 実行の必要性、GTM(Global Transaction Manager: クラスタ全体のトランザクションを管理する Postgres-XC のモジュール)の本体でのサポートの必要性、SQL 構文解析部分の API 化、クライアント側から複数ホストへの接続を可能にする機能などについて議論されました。
各クラスタリングソフトウェアの機能の重要性を主張し、これをどこまで本体に 含めてもらうかは大事な論点であり、PostgreSQL 本体の SQL 構文解析部分を API として利用可能にしてほしいというのは pgpool-II からの主張でもあります。なお、今回のCluster Summit の結果かどうかはわかりませんが、PGCon 会期中に開催された PostgreSQL 開発者の会議である Developer Meeting の議事録では、Postgres-XC の GTM を PostgreSQL 本体に取り入れる必要性について言及されたことが確認できます。
全体を通して、ディスカッションの主役は圧倒的に Robert Haas (コア開発者の一人)でした。 椅子の上に膝を立てて座り、新聞を片手に持ちながらと、見た目は真面目に聞いている風ではないのですが、 核心をついたコメントを次々と投げかけていました。さらに、ほかの人への質問にも代わりにどんどん答えてしまったりと、その聡明さと活発さとがとても印象的でした。
Postgres-XC Pizza Demo
Cluster Summit 2014 の最後に設けられた Postgres-XC Pizza Demo では、参加者にピザとドリンクが振る舞われた後、Koichi Suzuki により pgxc_ctl コマンドを用いた Postgres-XC の構築と運用のデモが行われました。デモを通じて、pgcx_ctl コマンドを用いることで、手動で行うと煩雑な Postgres-XC の構築や運用が、少ない操作で簡単に行えることが示されました。
さいごに
筆者は PGCons への参加は初めてであり、もちろん Cluster Summit への参加も初めてのことでしたが、PostgreSQL の今現在最もホットな分野の1つであるクラスタリングの最先端の場に参加できたことはとても刺激的な経験でした。その分、議論の内容を十分に理解できなかったの点をとても悔しく思います。自分のトップレベルの PostgreSQL ハッカーたちによって繰り広げられる高度な議論に参加して PostgreSQL の進化に貢献できるようになりたい、そう思わせるのに十分な魅力を持ったミーティングでした。
(2014年8月21日公開)