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

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

PostgreSQL Conference Europe 2015参加レポート


2015年10月28日から31日の4日間にわたり、オーストリアの首都ウィーンでPostgreSQL Conference Europe 2015が開催されました。

PostgreSQL Conference EuropeはヨーロッパのPostgreSQL関連のイベントとしては最大規模で、参加人数も年々増えており、今年は過去最高の400名超えが会場で話題になりました。日本からは筆者を含め6名の参加があり、思いもかけず懐かしい方々に会うことができ筆者にとって嬉しい時間となりました。

会場となったのはウィーンの中心地にあるマリオットホテルです。道路をはさんだ向かいには市立公園が広がる解放感のある地域が広がります。到着初日はあいにくの天候で夕方4時には暗くなり、落ち葉を巻き込みながら木枯らしが吹く冬のような空気でしたが、ヨーロッパらしい情緒も感じました。

中国で利用拡大が進むスマートフォン向けアプリケーションで活用


今回はヨーロッパのカンファレンスでは珍しいアジアでの採用事例セッションがありました。中国で利用が拡大する「探探(TanTan)」と呼ばれるスマートフォン向け出会い系アプリケーションでは、バックエンドでPostgreSQL 9.3が採用されています。筆者自身は類似のアプリケーションを利用した経験がないのですが、スマートフォン画面に表示された相手を気に入れば右へスワイプ、そうでなければ左へスワイプしてお互いが気に入れば「Match!(適合)」となりコンタクトが可能になります。

スワイプされる度にデータベースに対してInsert処理が行われるため、1日あたりの処理数は1億6,000万を超え、さらに蓄積されるデータは3.5TBにのぼります。また、居住地などユーザ情報を基に適合しそうな相手をお薦めするクエリも1日あたり1,200万回以上実行されています。居住地の地理情報管理にはPostgreSQLの機能の中でもユーザから高い評価を得ているPostGISが採用されており、対象列に地理情報と相性のいいGistインデックスを設定することで処理性能を確保しています。

またシステム全体の処理性能を高めるため、データは8個のインスタンスへ分割配置されており、ストリーミング・レプリケーションで可用性を確保しながら参照処理の負荷分散が図られています。

マケドニアの国民健康管理もPostgreSQLで


マケドニアの国民健康管理システムは限られた予算などいくつもの制約がある中でPostgreSQLの採用が決まり、9.3のデータベースが稼働しています。データベースには病院や薬局などを含めた15,000ユーザの情報が格納されており、カルテや処方箋などの参照処理件数は1日当たり1,500万にのぼります。現時点のデータサイズは約330GBですが、カットオーバから9ヵ月が経過した現在も継続して安定稼働しています。

サーバ環境として2拠点のデータセンターを利用し、プライマリのデータセンターにストリーミング・レプリケーションによるマスタサーバとスレーブサーバを1台ずつ配置し、セカンダリのデータセンターへもう1つのスレーブサーバを配置した1:2の構成となっています。マスタサーバの監視にはZabbixを、クエリの性能監視にはpgBadgerを利用しており、オープンソースを組み合わせたプロアクティブな監視を実現しています。

今回の2つの事例で共通する主な技術要素は、可用性確保のためにストリーミング・レプリケーションを採用している点です。ストリーミング・レプリケーションは9.0で標準機能として組み込まれ、スレーブサーバを参照用として有効活用できる構成であるため、国内外問わず実績が確実に増えており、PostgreSQLのシステムではデファクトスタンダードになりつつあります。

最新バージョン 9.5の注目機能


最新バージョン 9.5は2015年11月中旬のベータ2のリリースを経て、待望の正式版が2016年1月7日にリリースされたばかりです。セッションでは主な新機能として「INSERT ON CONFLICT」や「BRIN」「Row Level Security」の他、性能向上のためのカーネル拡張が紹介されました。

「INSERT ON CONFLICT」は一般的にUPSERTと呼ばれ、INSERT実行時に同じ値を持つデータがすでに存在する場合には内部的にUPDATEに置き換えて処理を行う機能です。Oracle DatabaseではMERGEコマンドとして実装されており、アプリケーション開発者の間では利用する機会が多く、PostgreSQLへ同等機能の実装を求める声はこれまで弊社のお客様からも挙がっていました。PostgreSQLがより使いやすくなる一歩と言えます。

「BRIN」は前回のEURO IT紀行でも少し触れましたが、サイズを小さく抑えつつ、大規模データの分析や集計などBI系処理で効果を発揮する新しいインデックスです。当社の検証では、5GB、50GB、100GBのデータを格納した同一構造のテーブルにB*TreeインデックスとBRINインデックスを作成した際の所要時間とサイズを比較しました。データサイズに比例していずれのインデックスも作成時間は長く、サイズも大きくなるのですが、例えば100GBのデータでは、BRINインデックスはB*Treeに対して作成時間は10分の1に、サイズはB*Treeの16GBに対してわずか4MBと4000分の1に抑えられることを確認しました。数百GBからTBのデータ規模になればその差はさらに大きくなります。

また、100GBのテーブルでインデックスを設定した列を範囲指定で検索する処理では、B*Treeの利用が最も性能が良い結果となりました。しかしながら、BRINインデックスはB*Treeインデックスと比べて処理時間が20秒ほど長くなるものの、全データを走査するシーケンシャルスキャンと比べると約6分の1で抑えられることが確認できています。

BRINを効果的に利用するには物理的に対象列でソートされた形でデータを格納するといった考慮が必要ですが、大規模システムではインデックスの管理と性能要件に応じてBRINが採用される機会は増えると思います。

インデックスの作成時間とサイズおよび検索処理時間の比較

インデックスの作成時間とサイズおよび検索処理時間の比較

「Row Level Security(以下、RLS)」は、POLICYと呼ばれる新しいオブジェクトに制御内容を定義することで、同じSQL文であってもアクセスするユーザに応じて返すデータを制御できる仕組みです。PostgreSQLは一般的にセキュリティ要件の厳しいシステムへの採用は難しいと言われていますが、従来のGRANT・REBVOKEコマンドによる権限設定やビューの作り込みに加えて、RLSが柔軟性を持ったアクセス制御機能の第一歩であることは間違いありません。

ユーザ待望の機能「パラレル・クエリ」


今回の注目セッションの1つはRobert Haas氏による「パラレル・クエリ」の話でしょう。会場は立ち見が出るほどの人気ぶりで、セッションが始まる前から熱い空気に包まれていました。

会場の様子

会場の様子

パラレル・クエリは1つのSQLを内部的に複数のプロセスで分担して処理する機能で、大規模データの処理高速化を実現します。商用データベースではすでに一般的に利用されている機能ですが、これまでPostgreSQLには同様の機能が実装されておらず、長年多くのユーザが待ちわびていました。ここ数年、エンタープライズDB社に所属するRobert Haas氏を中心に積極的な開発が進められ、いよいよ9.6への実装が現実味を帯びてきました。

パラレル・クエリに対応した実行計画ノードとして「Gather」と「Partial Seq Scan」の2つが新たに追加される予定で、セッションではサンプルSQLでの実行計画を見せながら、効率良く処理させるには各プロセスで処理したデータの集約や複数テーブルの結合をどのステップで行うようにコーディングするかがポイントだと説明していました。実システムで利用できるレベルにするにはパラレルと非パラレルが混在した処理や再パーティションへの対応など解決すべき課題が山積みで、9.6の段階ですべての対応は難しいように感じましたが、パラレル・クエリの実装はこれまで先送りが続いていることもあり、まずは基本動作として9.6での利用が可能になることに期待したいと思います。

終わりに


今回も事例、新機能、周辺ツールの紹介など幅色いラインナップでセッションが展開され、クラウド活用のためのAnsibleによるPostgreSQLの管理やPostgreSQLの性能を最大限に引き出すためのLinuxのチューニング、さらにEXT4やXFSなどファイルシステムごとの性能比較などPostgreSQLを利用する上で知っておくべきTipsが満載の非常に有意義なイベントでした。

夜には、連日カンファレンス事務局やスポンサーによるイベントが開催されるのですが、2日目はEnterpriseDB社による「EDB Night」が催されました。会場にはEnterpriseDB社のコーポレートカラーであるオレンジ色の風船が飾られ、Bruce Momjian氏やRobert Haas氏などPostgreSQLの主要開発メンバーが多く所属する企業だけに、いたるところで参加者とのディスカッションが展開されていました。

会場の様子

会場の様子

最終日のクロージングセッションには、パラレル・クエリを熱く語ったRobert Haas氏が再登壇しました。自身がPostgreSQLの機能開発に多くの時間を割り当てることへ寛大な理解のあるEnterpriseDB社への謝辞が述べられ、続いて、これまでの顧客とのやりとりの経験を元にPostgreSQLの技術的な発展の限界となりうるコア・アーキテクチャの話がありました。PostgreSQLがDirect I/Oではなく、OSのページキャッシュへも書き込むBuffered I/Oを採用していることや、ディスクフォーマットにも課題があり行データのヘッダに余分なスペースがあるために必要以上にデータが大きくなりやすいこと、また追記型アーキテクチャを採用している点もデータの肥大化につながることを課題として挙げていました。

このような話を聞くのは初めてでしたが、多くの機能追加によりRDBMSとして着実に進化してきたPostgreSQLがさらなる進化を遂げるには、コア・アーキテクチャも含めた画期的な改善が必要だと開発者たちは感じ始めているのかもしれません。セッションでは、次期バージョン以降の新機能やその他機能としてロジカルレプリケーション、水平分散、パラレル・クエリ、コネクションプーリングにも触れ、いずれの機能もより使いやすくするためにはPostgreSQLコアの部分へさらに手を加える必要があることが強調され、参加者に対して開発コミュニティへの参画を強く求めていました。

執筆者紹介

高瀬 洋子(Youko Takase)

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

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

高瀬の紹介記事はこちら

関連製品/サービス


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

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



ページの先頭へ戻る