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

「FOSDEM 2016」参加レポート

FOSDEM 2016参加レポート


昨年に続き、今年もFOSDEM (Free Open Source Development European Meeting)に参加してきました。FOSDEMは毎年1月末から2月初めの週末にベルギー ブリュッセルで開催されるオープンソースソフトウェア(OSS)の開発に関するイベントです。

3月下旬にブリュッセルで発生したテロ事件に世界全体が大きな衝撃を受けましたが、FOSDEMが開催された1月も前年11月のパリ連続テロ事件の影響を受け、すでにヨーロッパ全土でテロ警戒レベルが引き上げられていました。市の中心地では地下鉄入口で銃を手に警備にあたる兵士の姿が見られ、昨年とは違う空気を感じました。FOSDEMの参加者も昨年よりやや少ない印象でした。

筆者が深く関わるPostgreSQLは、昨年と同じくFOSDEM前日に単独イベント「FOSDEM PGDay 2016 」が開催されました。本記事では、PostgreSQLの技術的な話を中心にご紹介します。

可用性構成を補完する周辺モジュール


データベースシステムに求められる非機能要件で特に重要なものの1つに「可用性」があります。可用性を向上させる基本的な対策は、データベースシステムを冗長化(多重化)してバックアップ体制を整えることです。近年、基幹系や大規模システムでPostgreSQLを採用するケースが急速に増えていますが、PostgreSQL 9.0で標準実装されたストリーミング・レプリケーションが、データベースの冗長化手法として国内、海外ともにデファクトスタンダードになってきています。また、マスタデータベースに障害が発生した場合の自動フェイルオーバや可用性構成の再構築、アプリケーションからの接続切替に対応した周辺モジュールも多数提供されており、セッションでは主要なモジュールに加えて、新たに開発が進む「Patroni」と「Stolon」が紹介されました。

「Patroni」はPostgreSQLを積極的に利用する企業でもあるドイツのZalando社が開発を進めている機能で、ストリーミング・レプリケーション環境を簡単に構築でき、さらに9.4で本体に組み込まれたpg_rewindで旧マスタ⇒新スレーブの再構成も行えるテンプレートです。「Stolon」はDockerコンテナ上でPostgreSQLの可用性構成を実現するクラウドネイティブの管理ツールです。

モジュール 対応項目/特長
自動フェイル
オーバ
冗長化構成
の再構築
SPOFの回避 ロード
バランス
コネクション
プーリング
OSS
HA Proxy
pgpool-II
pg_shard
Patroni
Stolon
Heroku
Amazon RDS


すべての項目を満たすモジュールは現時点では存在しないため、システム要件に応じた選択が必要です。また、今回、モジュールと並ぶ選択肢としてパブリック・クラウドサービスが紹介されたことが時代を反映していると感じました。

書き込み処理性能を向上させるOSパラメータ


LinuxにはI/Oデータをキャッシュするページキャッシュと呼ばれる機構があります。データベース処理によってディスクから読み込まれた、あるいは、ディスクへ書き込まれたデータはこのページキャッシュに載ります。データベースそのもののキャッシュ領域に加えてOSのページキャッシュを利用することでI/O回数を抑制しているのです。

一方でデメリットもあります。データベース処理の書き込みはディスクへ書き込んで初めて終了とみなされるため、間にページキャッシュが介在することがオーバーヘッドとなってしまうのです。ページキャッシュを介さないダイレクトI/Oと呼ばれるOS機能を利用できるデータベースもありますが、PostgreSQLはページキャッシュを介するアーキテクチャとなっているため、チェックポイントなどディスク書き込みが発生する処理は、データベース・パラメータに加えて、ページキャッシュからディスクへの書き込みを制御するOSパラメータのチューニングが重要になります。セッションでは4つのパラメータによる性能チューニングの効果が紹介されました。

パラメータ 概要 デフォルト
vm.dirty_writeback_centisecs ディスクへ書き込む頻度を制御 500(10ms)
vm.dirty_bytes ディスクに書き込まれていないダーティバッファ量を制御
(フォアグラウンド)
0(Byte)
vm.dirty_ratio 20(%)
vm.dirty_background_bytes 同上(ただし、バックグラウンド) 10(%)


尚、チェックポイント処理では内部でfsync()関数がコールされますが、性能改善のため次期バージョン9.6ではsync_file_range()もしくはmsync()への変更が検討されています。

講演の様子


IoTに対応する豊富な機能


さまざまなデバイスがインターネットを介してつながり、相互にデータのやりとりを行うIoT(モノのインターネット)は、私たちの生活を大きく変える可能性を秘めたテクノロジーとして、今、市場で最も熱いキーワードの一つです。今年、新たに設けられたIoTトラックには「PostgreSQLのIoT対応機能」と題したセッションがあり、会場には開始前から参加者の長蛇の列ができていました。

IoTを実現するためには、膨大なデータを高速に処理するデータベースが必要です。しかし、自然言語的なデータを格納する新しいデータ型や地理情報からの直観的な検索など従来のRDBMSでは対応が難しい面もあります。柔軟なデータ構造をサポートするNoSQLがIoTには適しているといった声も聞かれますが、PostgreSQLではNoSQLの仕組みとしてドキュメント型のJSONをサポートしており、SQLによってJSONフォーマット形式のデータを参照、更新することができます。セッションではノートPCを使い、最新バージョン 9.5の新機能「BRINインデックス」と組み合わせたJSON型データに対する検索処理のデモが行われました。BRINインデックスは大規模データの検索処理で効果を発揮するインデックスで、デモを通してPostgreSQLの処理の軽さ、性能の良さがアピールされました。

また地理情報を格納する機能として、PostgreSQLには拡張モジュール「PostGIS」があります。8.xの時代から利用されている実績のあるモジュールで、当社でもお客様事例を公開しており、IoT関連のサービス拡大に伴って採用機会も増えていくことが期待されます。

※事例詳細はこちらをご参照ください。
http://www.ashisuto.co.jp/case/industry/service/__icsFiles/afieldfile/2014/09/01/incrementp.pdf

講演の様子


Logical Decodingを使った柔軟なレプリケーション


プラグインの位置づけでPostgreSQL 9.4で実装された「Logical Decoding」は、WALファイルからDML(INSERTやUPDATE、DELETE)による変更情報を抽出できる機能です。抽出されたSQLは専用の関数で確認することができるため、レプリケーションや監査、オンラインUpgrade などさまざまな機能の基盤として注目されていましたが、いよいよレプリケーションで本格的な利用到来の兆しです。

2016年1月1日に「pglogical」と呼ばれる論理レプリケーション環境を構築するモジュールがリリースされました。pglogicalでは内部でLogical Decodingが利用されており、「Publish」と「Subscribe」と呼ばれる仕組みが採用されています。Publisher(発行者)である連携元のデータベースのデータを Subscriber(購読者)である連携先のデータベースに届ける仕組みで、連携先が変更になったり新たに追加された場合でも連携元の実装は変更する必要はありません。また、データベースやテーブル単位など柔軟なデータ連携ができるようなります。pglogicalは次期バージョン 9.6でPostgreSQL本体に取り込む候補の1つにも挙がっており、今後の開発の動きに要注目です。

終わりに


昨年はVirtualization(仮想化)のトラックでコンテナ仮想化技術「Docker」の話を聞きましたが、今年はContainersの専用トラックが設けられ、また仮想化はIaasも含めたトラックとなるなどヨーロッパでも仮想化、クラウドの広がりを感じました。

他にも「What Do Code Reviews at Microsoft and in Open Source Projects Have in Common?」と題して、商用とオープンソースソフトウェアのコードレビューに関する共通点を調査したFOSDEMらしいセッションがありました。「コードレビュー」はソフトウェア開発の品質・効率向上において必要なステップではあるものの、人の手を介すため、時間がかかる大変な作業です。セッションでは、コードレビューがもたらす成果として、商用、オープンソース問わず「コードの品質向上」が上位にランクされたことが紹介されました。その一方で、レビューを行う開発者自身は、ソフトウェアの欠陥や問題点の早期検出をレビューの第一目的と考えていることがアンケート結果から分かっており、レビュー当事者の期待と実際の成果に隔たりがあるようです。欠陥や問題点の検出にはレビュー担当者がコード全体を把握していることがより重要になるため、ソフトウェアそのものや開発活動を解析する「ソフトウェア分析学」と呼ばれる技術をレビューに取り入れて開発者を支援する動きが始まっています。個人ベースの貢献で成り立つOSSプロジェクトでは特に、開発者の負荷を抑えて満足度を上げる仕組みの必要性を感じました。

今回、ふとしたきっかけでデンマークから参加していたPerl開発者と会話する機会を得ました。毎年FOSDEMに来るのをとても楽しみにしていて「世界中のPerl開発者と顔を合わせて技術的な議論ができる、こんないい機会はない」と興奮気味に話してくれました。開発者の中にはフリーランスで活動していたり、在宅勤務という人も多いと思います。FOSDEMはセッションスピーカーと参加者だけでなく、参加者同士をつなぐ場となっていることをあらためて感じました。来年以降の開催も楽しみです。

執筆者紹介

高瀬 洋子(Youko Takase)

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

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

高瀬の紹介記事はこちら

関連製品/サービス


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

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



ページの先頭へ戻る