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

「PostgreSQL Conference Europe 2016」参加レポート

「PostgreSQL Conference Europe 2016」参加レポート


海外のデータベース事情として、2016年11月1日~4日にバルト三国の1つであるエストニアの首都タリンで開催された「PostgreSQL Conference Europe 2016 」の様子をレポートします。

本イベントはPostgreSQL関連のヨーロッパ最大イベントで、参加人数は右肩上がりで増えており、今年は400名を超えて過去最高を更新しました。タリンに到着した日はこの冬初めての雪が降り、外は体感気温マイナス8度という寒さでしたが、会場の熱気からか興奮からか半そでTシャツ1枚の欧米人が目立っていました。

オープンニングセッションの様子

オープンニングセッションの様子

エンタープライズソーシャルネットワークサービスのバックエンドとして稼働


Yammerは世界中で広く利用されるエンタープライズソーシャルネットワークサービスで、2008年にリリースされ、2012年からはMicrosoft社によって運営が行われています。立ち上げ当初、PostgreSQLは典型的なモノリシックなRailsアプリケーションを支えるデータストアとして採用されましたが、その後、マイクロサービスアーキテクチャの導入により、複数のPostgreSQLクラスタでサービスを分割し、運用しています。

本システムでは、2つのデータセンターでPostgreSQL標準機能である「ストリーミング・レプリケーション」機能を利用し、1クラスタ環境あたり4から8ノードで構成された14もの可用性構成でデータを管理しており、ピーク時はマスタサーバに対して秒間30,000トランザクション、スレーブサーバに対しては秒間25,000にのぼる参照クエリを処理しています。クライアントからの処理は「HA Proxy」を経由した上で、マスタ、および複数スレーブそれぞれに「pgBouncer」で確保されたコネクションプールを利用することで処理の負荷分散が行われています。また、所要時間の長いトランザクションによるロックを回避するため、クライアントの処理ごとに「statement_timeout」パラメータや「lock_timeout」パラメータを有効化して、粒度の細かい制御を行っています。バックアップやログ分析などデータベースの運用管理タスクにはPostgreSQLの周辺ツールを最大限活用しており、BarmanやpgBadgerなど主要機能に加え、テーブル圧縮を可能にする機能「pgcompact 」が紹介されました。

本システムは、サービスの品質向上と管理負荷の削減を目的にMicrosoft Azureへのシステム移設が計画されています。

満席のセッション会場

満席のセッション会場

ナビゲーションシステムでPostGISと組み合わせて利用


TomTomはナビゲーションシステムの分野で世界的に大きなシェアを持つオランダ系企業です。筆者も英国で乗っている車には同社のカーナビを搭載しており、日々利用しています。地理情報を扱うため、PostgreSQLの拡張モジュール「PostGIS」を採用していますが、PostGISは地理情報に特化したデータ型や演算子などの豊富な機能に加え、性能の良さが高い評価を得ているモジュールです。本システムでも秒間600,000の参照クエリと15,000行のデータ挿入処理を実現しています。

30テラバイトを超えるデータが40CPUコアと256ギガバイトのメモリを搭載した約200台のデータベースサーバで管理されており、日々200ギガバイトの割合で増加しています。「ストリーミング・レプリケーション」による可用性構成を基本とし、スレーブサーバに複数台のサーバを従属させる形式で高い可用性を確保する構成をとっています。アプリケーションからの参照処理ではスレーブサーバにデータが存在するかどうかを事前にチェックすることで処理の負荷分散を実現していますが、最新バージョン 9.6のレプリケーションでは完全同期モードによるデータ伝播がサポートされており、スレーブサーバの活用シーンの広がりが期待できます。

更新処理性能向上のための新たな機能


更新処理が頻繁に行われる場合に考慮が必要であったインデックスの肥大化とVACUUM処理量の増加という二つの課題は、PostgreSQL 8.3で実装された「HOT」(Heap Only Tuples)により影響度が大きく軽減されましたが、さらに更新処理の書き込み量を抑制して性能を向上させるため、来年の秋ごろにリリースが予定されている次期バージョン 10.xで「WARM」(Write Amplification Reduction Method)と呼ばれる機能の実装が検討されています。

HOTは「更新後の行データが更新前の行データと同じページに格納」かつ「インデックスが設定されていない列の更新」を条件として、新規データへのポインタを更新前のデータへのポインタからリダイレクトすることでインデックスの肥大化を抑制しますが、WARMの実装によって「インデックスが設定された列の更新」でもHOTと同様の動作を実現しようとしています。またその他にも「Indirect Index」と呼ばれるインデックスの実装が検討されています。Indirect Indexは行データのアドレスを持たず、主キーを介して行データにアクセスする仕組みです。

これら2つの機能は、自動車配車サービスの提供で急成長中のUberのEngineeringブログ記事「Why Uber Engineering Switched from Postgres to MySQL 」が引き金となって検討が進んだようですが、開発中の性能検証ではWARMによって2倍近く処理性能が向上したという結果も出ており、実装を心待ちにしたいと思います。

終わりに


次期バージョン 10.xには、WARMに加えて「ロジカル・レプリケーション」や「自立型トランザクション」、「パラレルVACUUM」など多くの新機能の実装が予定されています。なかでもロジカル・レプリケーションは、ロジカル・デコーディングと呼ばれる9.4にプラグインとして実装された機能を実用化した仕組みで、WALファイルから抽出したDML(INSERTやDELETE、UPDATE)による変更情報を使ってテーブル単位やPostgreSQLの異なるバージョン間での柔軟なデータ連携が可能になります。また、近い将来、PostgreSQL本体への実装も見据えて、双方向レプリケーション「BDR」(Bi-Directional Replication)の開発も並行で進められています。

「外部データラッパ」(FDW)は異種DBMSやNoSQL、CSVファイルなど外部データとの連携を可能にする機能です。他のDBMSにはないPostgreSQLの独自性の高い機能の1つと言え、EDB PostgresではHadoop、MongoDB、MySQL対応のFDWが標準機能としてサポートされています。今回のイベントではPostgreSQLとMariaDB、SQLLite、CSVファイルのデータをFDWを介してSQLで簡単に結合して結果を返すというデモを見る機会を得ました。処理性能など別途確認する必要はあるものの、複数の異なるデータソースを容易に連携できる点はPostgreSQLの優位点になるとあらためて感じました。FDWについてもレプリケーションに並んで積極的に機能改善、拡張が進められており、PostgreSQLがさまざまなシステムをつなぐハブとして重要な役割を担う日は遠くないと強く確信するイベント参加になりました。

セッションの様子

セッションの様子

執筆者紹介

高瀬洋子

高瀬 洋子(Youko Takase)

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

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

高瀬の紹介記事はこちら

関連製品/サービス


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

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



ページの先頭へ戻る