Personal tools

PGconf.EU 2012 参加レポート (1 / 2)

海外 浩平

PGconf.EU とは

欧州地域における PostgreSQL 開発者コミュニティ最大のイベント、 PostgreSQL Conference Europe 2012(PGconf.EU) が、10 月 23 日 ~ 26 日にかけて チェコ共和国・プラハ市で開催されました。 今回は過去 4 回の開催のうち最大となる 290 名の参加者がおり、欧州のみならず 北米や日本、インドやオーストラリアから参加している人もいます。

例年、カナダ・オタワ市で開催される PostgreSQL Conference / Developer Meeting は 5 月(これは PostgreSQL の次期メジャーバージョンに向けた開発サイクルの直前でもあります)ですので、 北米と欧州で開発者コミュニティの主要イベントが半年間隔で開催されているという事になります。

昨年はオランダ・アムステルダム、その前はドイツ・シュトゥットガルト、フランス・パリでの開催となっており、 来年も欧州のどこか ※ 1 で開催となるはずです。

4 日間の日程のうち、最初の 1 日がチュートリアルセッションで、 Performance Tuning や Replication に関するトレーニングが行われました。 残りの 3 日間がカンファレンスとなり、全体で 40 本ほどのセッションが行われました。

複数のセッションで SQL/MEDマルチマスタレプリケーション が取り上げられるなど、 この辺が次の開発テーマとして ”熱い” という印象がありました。 また、範囲型や JSON 型など PostgreSQL の拡張性を活かした適用範囲の拡大を紹介するものや、 M2M データの解析に PostgreSQL を利用している事例が紹介されています。

筆者は 23 日の夕方にプラハ入りし、主に開発者を対象としたセッションに参加していたのですが、 その中から何点かをピックアップしてご紹介します。

※ 1
筆者は Magnus Hagander 氏に『来年、ロシアのウラジオストックどうよ?日本からも近いし』と勧めておきましたが、 ロシアは滞在ビザの関係で候補からは外れると真面目に返されてしまいました。 その他には、スピッツベルゲン島マルタ共和国 などが候補だそうです。 ちなみにレセプションの席での会話ですので本気になさらぬよう。

講演

Writing a foreign data wrapper (Bernd Helmle)

発表資料(PDF)

開発者向けに、Informix 用ドライバを題材に SQL/MED ドライバ(FDW: Foreign Data Wrapper) の実装方法が紹介されました。

v9.1 と v9.2 のインターフェースの違いや、validator 関数で注意すべき点、 条件句の評価を FDW ドライバ側に付け替えるタイミングや、エラー時のリソース解放処理などに注意する必要がある、 といったことが述べられました。

現状、公式ドキュメントを除けば FDW の開発を解説した資料は殆ど存在しないため、 今回の発表スライド は 開発者にとっては資料としての価値が非常に高いでしょう。

発表者の Bernd Helmle 氏はオタワの PGcon 2012 でも 同じテーマの発表をしているのですが、この時は直前のキーノートが長引いてしまい、ちょっと残念でした。 今回はきちんと時間通りに始まったのでリベンジ成るといったところでしょうか。

MultiMaster Replication: Applications, Comparison, Implementation (Andres Freund, Simon Riggs)

発表資料

PostgreSQL コミッタの一人でもある Simon Riggs 氏と Andres Freud 氏による共同発表です。

前半は Simon Riggs 氏が商用 DB や NOSQL-DB の特徴をサマライズした上で、 PostgreSQL の Multi-Master Replication に必要な要件として
① 自動的なデータの分割と統合
② 冗長性の確保
③ 書き込みの一貫性
④ 読み出しの分散
などを挙げました。

後半は Andres Freud氏が、WAL (Write Ahead Log) から更新トランザクションを再構築して、 複数ノードでの更新を許すアイデアを紹介。 WAL を他ノードに飛ばす機能は Streaming-Replication として既に存在するため、 WAL を元に他ノードで更新処理 を行うプラグインを実装すれば、 Multi-Master Replication が実現できるという発想です。

そのための要素技術として、次の v9.3 ではプラグインが常駐プロセスを管理するための Background-Worker 機能 と、 複数ノードで一貫したシーケンス値を取得する Distributed Sequence 機能 を提案しているとの事。 この方式では同じ行に対する書き込みが競合する場合、『より新しい方が勝つ (Last update wins)』方式を採ります。 更新同士の競合ではなく、同じ行の削除と更新が競合した場合には厄介な事になるのですが、この辺はまだ検討が必要なようです。

Range Types in PostgreSQL 9.2 - Your Life Will Never Be The Same (Jonathan S. Katz)

発表資料(PDF)

PostgreSQL v9.2 で新たにサポートされた 範囲型 (Range Type) の紹介です。 ただし、今回は開発者の Jeff Davis 氏ではなく、遠路 NY から参加の Jonathan S.Katz 氏による発表です。

範囲型とは座標軸上の一定の範囲を表現するためのデータ型で、 例えば、カレンダーのアプリである予定と別の予定の時間帯が重複しているかどうかを容易に表現したりできます。 閉集合と開集合のどちらも表現する事ができ、一方に特定の値が指定されない無限大(∞)を用いることも可能です。

範囲型用に定義された '&&'(重複) や '<@'(包含) といった演算子を検索条件に用いる事もでき、 BETWEEN 句や不等号演算子を用いた記法に比べて クエリを大幅に単純化 できます。 また、範囲型のインデックスは GiST (Generalized Search Tree) を用いて実装されて おり、従来の方式と比較して検索ロジックが劣るという事はありません。 最も簡単な使用例としては、時系列データに EXCLUDE 制約を付加して 同じ時間帯に複数のレコードが挿入されるのを防ぐという例が紹介されていました。

High availability in Postgres-XC, the symmetric PostgreSQL cluster (Suzuki Koichi)

発表資料(PDF)

Postgres-XC は Postgres-XC コミュニティが中心となって開発している Multi-Master Replication システムで、 複数ノードからの書き込みだけでなく、データ分散や並列 JOIN に対応しています。

ただ、それ故に大々的な拡張を行っており、会場からも本体機能へのマージの可能性について質問がありましたが、 なかなか容易ではないようです。

Postgres-XC のアーキテクチャの要は、クラスタ内で 1 台だけ動作する GTM (Global Transaction Manager) で、 これが各ノードのトランザクションやロックを調停します。 また、データ分散を担当するのが Coordinator で、各ノードとそれが管理するデータとの対応関係を保持しており、 これらが連携して Multi-Master Replication を実現しています。

障害時、もちろん GTM は単一障害点ですので HA ソフトウェアによる切り替えや再起動を行う必要がありますが、 それ以外のサービスは冗長化され、処理を継続できるよう設計されています。

並列処理に関しては、複数のノードに跨って並列にクエリを実行できるほか、 JOIN 処理を含む場合でも、Postgres-XC の Distribution-Key が条件句に使用されている場合は、 各ノードで JOIN 処理を行い、それを後で結合することにより性能向上が計られています。

DBT-1 でのベンチマークを行った結果、10 台のクラスタで 6 倍程度の更新性能を発揮 しており、 これは Oracle RAC よりも良いスコアだという事です。

Universal Data Access with SQL/MED (David Fetter)

発表資料(PDF)

日本でもお馴染みの David Fetter 氏が、SQL/MED の歴史と今後の見通しを紹介しました。

2003 年に SQL/MED (Management of External Data) が SQL 標準化され、その後、 他の DB との接続ドライバである DBI-Link プロジェクト (2004 - 2007) を経て、 v9.1 では SQL/MED の実装である FDW (Foreign Data Wrapper) がサポート、 v9.2 では Foreign Table に対する Analyze がサポートされました。

今後、v9.3 では Writable Foreign TableJoin-Pushdown がサポートされる見通し (個人的には Join-Pushdown は厳しいと思うのですが・・・。)で、 集約関数の実行を FDW で実行する機能も v9.4 で対応するだろうという見通しが示されました。

ただ、50 分のセッションが 20 分程度で終わってしまい、残りは SQL/MED の BOF の様な形で進行し、 文字コードが不一致である場合の処理や、クエリ実行プランを評価する際には 帯域とレイテンシも含めたコストを元に最適化を行うべきでは?という話題がワイワイガヤガヤと話し合われました。

[ 続く ]



(2012 年 12 月 11 日公開)

  • 1
  • 2
 

You are here: Home 読み物 イベントレポート PGconf.EU 2012 参加レポート