TOP>企業情報>コラム>技術情報>PostgreSQL Conference Europe 2014 参加レポート

PostgreSQL Conference Europe 2014 参加レポート

2014年4月にイギリスに拠点を移した筆者が、PGDay UK 2014に続く海外のデータベース事情第2弾として、PostgreSQL Conference Europe 2014の参加レポートをお送りします。


2014年10月21日から24日の4日間にわたり、PostgreSQL Conference Europe 2014 がスペインの首都マドリッドで開催されました。

 
PostgreSQL Conference EuropeはヨーロッパでのPostgreSQL系イベントとしては最大の規模で、過去にはパリ、シュトゥットガルト、アムステルダム、プラハ、ダブリンといった主要都市での開催を経て、今年で6回目を迎えました。

高瀬 洋子(Youko Takase)

株式会社アシスト データベース技術本部

アシスト入社後、Oracle Databaseのサポート業務を経て、2009年よりPostgreSQL、EDB Postgresのサービス立ち上げに参画。「PostgreSQLなら高瀬に聞こう」と社内外から言ってもらえる存在となることを目標に日々活動。2014年4月よりイギリスに拠点を移し、PostgreSQL、EDB Postgresの啓蒙活動と顧客対応の後方支援を担当。

高瀬の紹介記事はこちら

全体概要


2014年10月21日から24日の4日間にわたり、PostgreSQL Conference Europe 2014 がスペインの首都マドリッドで開催されました。

 
PostgreSQL Conference EuropeはヨーロッパでのPostgreSQL系イベントとしては最大の規模で、過去にはパリ、シュトゥットガルト、アムステルダム、プラハ、ダブリンといった主要都市での開催を経て、今年で6回目を迎えました。


セッションの合い間には、コーヒーとクッキーが振る舞われ、それをつまみながらホテル中庭で参加者同士が情報交換したり、ランチタイムには好きなテーブルに着いて同じテーブルになった参加者と会話を楽しんでいる様子があちこちで見られました。夜の懇親会はもちろんですが、日中も参加者同士が気軽に話ができるようにとの主催者側の配慮を感じました。


大規模データ事例

本イベントで紹介されたPostgreSQLユーザ事例は、いずれも対象データが数テラバイト、大規模システムへのPostgreSQLの採用が増えているという印象を強く受けました。以下2つの事例をご紹介します。

Zalando社のPostgreSQL活用事例

「Scaling fashionably: From Startup to Scale at Zalando」

スピーカー: Valentine Gogichashvili 氏

ヨーロッパ最大のオンラインファッションサイトを運営するZalando社では、基幹システムのRDBMSにPostgreSQLを採用しています。

システムは複数インスタンスで構成されており、そのうち最も規模が大きいインスタンスには5テラバイトものデータが蓄積され、日々12ギガバイトずつデータが増加しています。この膨大なデータに効率よくアクセスするために、Zalando社では顧客IDをキーとして複数のデータベースにデータを分割、格納する構成を採用しており、各データベースには一意のシャーディングIDが割り振られています。これによってメモリへのデータキャッシュやI/Oの負荷分散ができ、オンライントランザクション処理の性能を確保しています。また、バックアップなどのメンテナンスやデータ移行にかかる時間を短縮できるというメリットもあります。

Javaアプリケーションから各データベースへのアクセスには、Zalando社が独自開発した「Java Sproc Wrapper」と呼ばれるPostgreSQLのストアドプログラムを実行するライブラリを介しています。全データベースに同時並行でアクセスしながらハッシュ探索法によりシャーディングIDを検知し、対象データが格納されるデータベースに対して処理を行うという流れです。

また、セッションではPostgreSQL性能監視ツール「PGObserver」も紹介されました。PGOberverもZalando社が独自開発したツールで、前述のとおりZalando社のシステムではストアドプログラム実行がメインであることから、これまでは主にAPIレイヤの監視ツールとして開発されてきましたが、現在はより汎用的なツールにすべく、テーブル・インデックスなどのオブジェクトへのアクセスやWALへの書込み、CPUの利用状況などサーバ全体の稼働状況を確認できるよう拡張された機能が組み込まれています。

Java Sproc Wrapper PGObserver もApacheライセンス 2.0に準拠する形でオープンソースとして公開されており、Zalando社はオープンソースソフトウェアのメリットを享受しつつ、コミュニティへの貢献も行っている企業と言えます。

  • スライド出典元: https://docs.google.com/presentation/d/1gJL93iGNxbo9B2Y2sVnWVQfPBGllEjtoZlp6UitUwXM/present?ueb=true#slide=id.g11d1f2970_01

SaaSのバックエンドで稼働するPostgreSQL

「Scaling a SaaS backend with PostgreSQL」

スピーカー: Oliver Seemann 氏

Adspert社はGoogle AdwordsなどWeb広告の最適化を行うサービスをSaaS型で提供しており、そのバックエンドでPostgreSQL 9.3が稼働、格納されているデータは3テラバイトにのぼります。

サービスの特性上、複数の顧客ユーザ情報が必要となる処理が存在しないことから、本システムでは顧客ユーザごとにデータベースを分けることでデータの水平分散を実現しています。この手法によるメリットとして、Seemann氏はバックアップにかかる負荷を軽減できること、データベースを作成するだけで新規顧客へのサービス提供が可能になること、顧客ごとに情報を完全に分離できることの3つを挙げていました。現在のシステムは、共通オブジェクトを格納するメインデータベースをマスタースレーブで冗長化し、数千個にものぼる顧客単位のデータベースは1テラバイトの領域を持つ計5台のサーバに分散配置する構成になっています。

また、データベースに対する処理はWebアプリケーションからのオンライントランザクション系が大部分を占めていますが、タイミングによって集計など時間のかかる重い処理が同時に入ってくることがあります。その場合はカウンティングセマフォによって集計処理を担うプロセスからの接続を制御し、オンライン処理への影響を抑制する工夫が施されています。PostgreSQLにはセッション数全体を制御できるパラメータはあるものの、ユーザや処理単位での制御機能は実装されていないため、セマフォを利用してアプリケーションによるセッション数の制御はシンプルで運用しやすいアプローチです。

また、本システムではスキーマも重要な役割を担っています。4週から8週の間隔で行われるアプリケーションの改修にあわせ、それぞれのテストで使用するストアドプログラムをスキーマごとに配置してバージョン管理しているのです。スキーマ名にはアプリケーションのバージョンと同じ数値がつけられ、バージョンごとに「Unstable」「Testing」「Stable」のいずれかのステージが割り当てられています。これによって各モジュールがどのバージョンであるかを簡単に見分けることができ、モジュールバージョンの組み合わせによるトラブルを防ぐことができます。

データ分割というとパーティショニング機能が一番に浮かびますが、1つのインスタンスで複数のデータベースが管理できるマルチテナント思想に基づいた構造を持つPostgreSQLでは、Adspert社が採用した顧客ユーザごとにデータベースを立てるという手法はより採用しやすい手法ではないでしょうか。

  • スライド出典元: http://www.slideshare.net/oseemann/scaling-a-saas-backend-with-postgresql-a-case-study


新機能・周辺モジュールの紹介

PostgreSQL 9.4新機能 ロジカルデコーディング

「Understanding logical decoding and replication」

スピーカー: Michael Paquier 氏

東京を拠点に活動するMichael Paquier氏の登壇です。ロジカルデコーディングはプラグインの位置づけでPostgreSQL 9.4に新たに実装され、WALファイルからDML(INSERTやDELETE、UPDATE)による変更情報を抽出できる機能です。

ロジカルデコーディングによってWALファイルから抽出されたSQLは、pg_logical_slot_get_changesなど用意されたSQL関数で確認することができますが、抽出された情報をどのように利用するかは受け取る側のツール次第です。セッションでは、PostgreSQL 9.4のcontribモジュールとして同梱されているテスト用のデコーダツール「test_decoding」とあわせてパキエ氏が開発する「decoder_raw」が紹介されました。

ロジカルデコーディングは受け取る側で情報を柔軟に扱えることから、同期レプリケーションや監査、オンラインUpgradeといったさまざまな機能を実装する基盤として期待されています。

  • スライド出典元: http://michael.otacoo.com/content/materials/20140919_pgopen_logirep.pdf

PostgreSQLローディングツール「pgloader」

「Loading data in PostgreSQL, Fast. Any Data.」

スピーカー: Dimitri Fontaine 氏

pgloaderは外部モジュールとして提供されるローディングツールで、CSVに加えてdBase形式のデータやSQLite、さらにMySQLからPostgreSQLへ直接データを移行する機能が実装されています。

PostgreSQLには同様の機能としてCSVファイルからデータベースへのデータ挿入やデータベースからのデータ抽出に便利なCOPYコマンドがあります。INSERTよりも高速にデータが挿入できることから広く活用されていますが、SQLコマンドという性質上、エラーハンドリングが難しいというデメリットがあります。

pgloaderを利用するとエラーが発生したデータは専用ファイルに記録され、それ以外のデータはデータベースに挿入されます。また、pgloaderは一度に挿入するデータ行数やメモリサイズを制御することができる点が商用RDBMSの同等ツールと操作性が似通っているという印象です。今後Oracle Database、MS SQLServerなど商用RDBMSとの連携機能の実装が計画されているため、PostgreSQLへのデータ移行の強力な手法が新たに1つ加わりそうです。

  • スライド出典元: http://tapoueh.org/images/confs/PGCONF_EU_2014_pgloader.pdf

PostgreSQLとHadoopをつなぐ機能「hadoop_fdw」

「Leveraging Hadoop in your PostgreSQL Environment」

スピーカー: Jim Mlodgenski 氏

Hadoopは大規模データを簡単に複数のサーバに分散して処理できるフレームワークで、本セッションでは、大規模データを柔軟に扱うための主要コンポーネント(HDFS、Hive、Flumeなど)の概要が紹介された後、PostgreSQLとHadoopを組み合わせた場合の各種コンポーネントの利用方法が紹介されました。

データベースのバックアップはNFSなどリモートディスクへのファイルコピーが考えられますが、規模に応じて配置先に十分な領域の確保が必要です。このような場合にHadoopの分散ファイルシステムであるHDFSをバックアップファイルの配置先に指定することでファイルの冗長性も確保したバックアップが可能になります。また、PostgreSQLではデータベースで発生したエラーや警告などが記録されるサーバログの取得にOSのsyslog機能を利用するケースがありますが、月単位、年単位で管理する場合ファイルサイズが巨大になるという課題があります。大量のログデータをリアルタイムにHadoopへ転送できるFlumeを利用するとsyslogに混在する複数のデータベースのログをそれぞれ個別のファイルとしてHadoop側で管理できるようになり、さらにMapReduceを組み合わせることでログの並列分析も可能になります。

PostgreSQLには外部データラッパと呼ばれるPostgreSQLと外部データベースやファイルとをつなぐ機能があり、Hadoopとの連携を担う「hadoop_fdw」は、Mlodgenski氏がCTOを務めるOpenSCG社が中心となり個別プロジェクトで開発が進められています。OLAP Cubeのような複雑かつ視点を変えた分析をする処理をPostgreSQLで行おうとした場合、結果を返すのに膨大な時間を要することも珍しくありません。このような場合に元データはHadoop側に配置し、hadoop_fdwを介してPostgreSQLのローカルテーブルと同じようにアクセスすることで、ドリルダウンなどの分析処理をHadoop側に任せることができるため、処理の高速化が実現できます。

今回のセッションはPostgreSQLとHadoopを組み合わせた基本的な利用方法の紹介でしたが、RDBMSだけでは処理することが難しいレベルの大規模データを扱うシステムが増えている昨今、PostgreSQLとHadoopをうまく組み合わせてそれぞれが得意とする処理に応じて使い分ける素地が万事整ってきたと言えるでしょう。

  • スライド出典元: http://www.slideshare.net/jim_mlodgenski/postrgesql-hadoop

NoSQL分野への拡大を図るPostgreSQL

「ToroDB: a new, open-source, document-oriented, JSON database, built on Postgres」

スピーカー: Alvaro Hernandez 氏

Webアプリケーションで広く利用されるデータ表現フォーマットJSONは、PostgreSQL 9.2でデータ型として組み込まれた後、9.3でファンクションや演算子が実装され、JSONフォーマットのままでデータを参照、更新できるようになりました。

更に効率のよいデータの格納、取得を目指し、PostgreSQL 9.4ではJSONデータをバイナリデータとして保存するJSONB型が実装されています。

このPostgreSQLのJSON機能を利用したToroDBと呼ばれる新たなデータベースの開発が講演者 Hernandez氏がCEOを務める8Kdata社を中心に進んでいます。ToroDBはRDBMSであるPostgreSQLの特性を活かしたデータ格納方式が実装されており、JSONデータは階層ごとに異なるテーブルに格納され、テーブル間の関連性が保たれた構造になっています。必要に応じてToroDB側でテーブルを動的に作成されるため、ユーザはテーブル構造を意識することなくJSONフォーマットのままでデータを操作することができます。また、この格納方式によって、同一データをMongoDBへ格納した場合と比較して29%から68%のストレージ容量で格納ができるのも大きなメリットです。セッションでは、MongoDBと比較してデータ挿入にかかる時間が最大6倍短縮された検証結果も報告されました。

ToroDBは2015年初めにv1.0のリリースが予定されており、MongoDB APIとの互換性も高く、PostgreSQLでは現在サポートされていないJSONデータの更新もできるようです。MongoDBからの移行も視野に入れたPostgreSQLをエンジンとするNoSQLデータベースの登場が市場にどのような影響をもたらすのか今後が楽しみです。

  • スライド出典元: http://www.slideshare.net/8kdata/toro-db-pgconfeu2014


クロージング・セッション


最終日午後のセッションでは、スポンサー企業であるエンタープライズDB社 CMO Keith Alsheimer氏と2ndQuadrant社 CTOのSimon Riggs氏が続けて登壇しました。

Alsheimer氏は「Postgres Relevance:Guidepost to the future」と題して、DB-Engines でPostgresが継続して4位にランクインしていることやPostgreSQL技術者のニーズが2010年と比較して約2倍近く増加していることを挙げ、さらにPostgresがHSTORE、JSONといったNoSQLの仕組みを強化し、これまでのRDBMSの枠にとどまらない機能を次々に実装していることが紹介されました。最後に、今年7月に開催された日本国内初のエンタープライズDB社主催「EnterpriseDB Summit Tokyo 2014 」の盛り上がりやエンタープライズDB社がGartner Magic QuadrantのOperational Database Management Systemでリーダへ位置付けられたことを伝え、Postgresに対して市場からいかに高い期待が寄せられているかを熱く語っていたのが大変印象的でした。

Riggs氏は「PostgreSQL Odyssey at 88mph」と題して、PITR、パーティショニング、HOTなど過去10年間に実装された主要な機能を振り返り、貢献した開発者に対する謝辞を述べました。続いてPostgreSQLの適用範囲を拡大するべく9.4を含む今後実装予定の機能がいくつか紹介され、特に9.5への実装が予定されているパラレルクエリは、本カンファレンス開催前の数週間でTPC-Hベンチマークテストにおいて30%以上の性能向上が確認できており、今後の開発が進めばさらに機能効果が顕著になると語りました。

  • スライド出典元: http://www.slideshare.net/EnterpriseDB/pg-eu-2014-key-note1-2



クロージングでは、PostgreSQLのロゴになっている象の姿をしたスタッフも参加してPostgreSQL技術知識にまつわるTrue or False形式のクイズが出題されました。「PostgreSQL 9.2.3は9.2.4と互換性がある」といった簡単な内容から「WINDOW関数はグルーピングされた行ごとに1つ以上の値を返す」「インデックススキャンはシーケンシャルスキャンよりも必ずしも優れているとは言えない」といったとっさの回答に窮する問題もあり、答えが発表されるたびに会場は多いに盛り上がりました。最後はホテル中庭でのスタッフ、参加者一同の記念撮影で盛況のうちに終了となりました。


PGDay UKに続き、今回が2つ目となるヨーロッパでのPostgresイベントへの参加でしたが、大規模システムへの導入事例やヨーロッパの技術者を中心に開発が進むモジュールの存在など、日本に入っていない情報を多く得ることができました。今後も継続して海外の技術情報をお伝えすることで日本でPostgres普及が進む一助となればと思います。





関連製品/サービス


Facebookで情報をお届けしています

Facebookでは、アシストの「今」を週3回のペースでお届けしています。「めげない、逃げない、あまり儲けない」を合言葉に日々頑張っておりますので、応援よろしくお願いします。



ページの先頭へ戻る