PostgreSQLはもはやただのデータベースにあらず ─PostgreSQLカンファレンス2013 基調講演レポート

Not so much as a database as a data Platform(単なるデータベースを超えたデータプラットフォームとしての存在⁠⁠ ─11月8日、都内で開催された「PostgreSQLカンファレンス2013」⁠主催: 日本PostgreSQLユーザ会)の基調講演に登壇したHeroku開発者のピーター・ゲーガン(Peter Geoghegan)氏はPostgreSQLをこう表現しました。

来年には次バージョンのPostgreSQL 9.4のリリースが期待されていますが、ゲーガン氏の言う"データプラットフォーム"としてPostgreSQLはどのような進化を遂げようとしているのでしょうか。本稿ではの基調講演の内容をもとに、PostgreSQLの次なるゴールを概観してみたいと思います。

ピーター・ゲーガン氏
ピーター・ゲーガン氏

アプリ開発の「新しい波」を開発者に届けたい

基調講演を行ったゲーガン氏は、PostgreSQLを基盤データベースとして採用していることで知られるHerokuのエンジニアです。ご存知の通り、Herokuは現在、クラウドベースの開発者向けプラットフォーム(PaaS)として事業を大きく伸ばしていますが、PostgreSQLを基盤データベースにしていることで「アプリケーション開発の新しい波(new wave)のただ中にいる開発者たちに多くのメリットを届けられると確信している」と語っています。

PostgreSQL Major Contributorとしてのゲーガン氏は、pg_stat_statementの正規化やパフォーマンスの改善、そして最近ではUPSERT(データがある場合はUPDATE、データがない場合はINSERTする機能)への取り組みなどに貢献した実績をもちます。UPSERTに関しては現在も開発に関わっており、⁠UPDATEかINSERTかはけっこう複雑で悩ましい問題であり、開発者からの苦情が多かったので、なんとか解決したかった。UPSERTはSQLの標準機能であるMERGEに似ているが、MERGEにはユニークな制約が必要ないので、MERGEほどパワフルではないが便利な機能ではある。⁠次バージョンである)9.4ではもっと改善した状態で届けられると思う」と例を挙げながら解説していました。

柔軟性こそがPostgreSQLをデータベースを超えた存在にした

冒頭で紹介した「Not so much as a database as a data platform」というフレーズは、非常に強いインパクトを感じさせます。ゲーガン氏はなぜPostgreSQLをデータプラットフォームと呼んでいるのでしょうか。また、データベースとデータプラットフォームにはどんな違いがあるのでしょうか。

ゲーガン氏はまずデータベースについてこのように定義しています。⁠アプリケーション開発者がよけいなことを考えなくても済むように、コンカレンシーコントロールやクラッシュに対する安全性、一般的なデータ統合などの機能を、フレキシブルに、かつ再利用可能なソリューションとしてデータマネジメントに提供する」

1980年代半ばに、かのマイケル・ストーンブレーカー博士が始めたPOSTGRESプロジェクトを源流とするPostgreSQLも、当然ながらこのデータベースとして課せられた機能を実現するために発展を遂げてきました。ゲーガン氏は登場したころのPostgreSQLについて「とくに多様なデータタイプを扱えるようにすることをファーストオーダー(第一義)として発展してきた節がある」と指摘しています。これはたとえば、当時は365日ではなく360日でしか日付の数値データを扱えなかったので、アプリケーション側(とくに金融業界など)から異なる形でのデータ表現を要求された経緯などによります。

さまざま利用シーンでアドホックな要求に応え、カスタムインデックスを発展させていった結果、PostgreSQLは数あるRDBMSの中でもフレキシビリティ(柔軟性)に非常に長けたデータベースへと成長しました。ゲーガン氏は「PostgreSQLには多くのすばらしい特徴があるが、私がもっともすぐれていると思うのはそのフレキシビリティだ」と強調します。そしてこのフレキシビリティこそが、PostgreSQLを"単なるデータベースを超えたデータプラットフォーム"の地位に押し上げていると言えそうです。実際、Herokuをはじめ、Amazon Redshiftなど多くのクラウドベンダがPostgreSQLを基盤データベースとして採用していますが、その最大の決め手はやはり柔軟性の高さにあるといわれています。

データマネジメントの基盤となるデータベースではできる限り美しく、そして汎用的であるべき ─これはゲーガン氏にかぎらず、POSTGRESプロジェクトの創始者でもあるストーンブレーカー博士も目指したところだとされています。そしてゲーガン氏は「PostgreSQLがデータプラットフォームとしてこれからも発展していくなら、論理的な機能の強化/改善が欠かせない」としています。もう少し具体的にいうと、より多様なタイプのデータを論理的に扱えるようにすることが重要で、たとえばPostgreSQLで地理空間データを扱うことを可能にする「PostGIS」のようなサードパーティの取り組みもそうした活動に含まれるとゲーガン氏は強調しています。

「データプラットフォーム」化をさらに推し進めるPostgreSQL 9.4の新機能

データベースを超えたデータプラットフォームとして、そしてより論理的なデータベースとして、次のバージョンであるPostgreSQL 9.4はどのような機能強化が見られるのでしょうか。ゲーガン氏は基調講演の中で次の3つのポイントについて触れています。

論理レプリケーションのサポート
書かれたままの状態でデータをデコードできるプラグインとして提供、論理的WALをデコード可能
書き込み可能な外部データラッパ(foreign-data wrapper: postgres_fdw)
ローカルのPostgreSQLテーブルと外部データをインタラクティブにやりとりさせる
JSONタイプの拡張
GoogleのJavaScriptエンジン「V8」をベースにしたプロシージャ言語「PL/v8」を使い、PostgreSQLの中で直接JavaScriptを扱えるようにする

論理レプリケーションは、ゲーガン氏のいうところの"PostgreSQLの最大のメリット"である柔軟性を強調する機能といえます。物理レプリケーションに比べてオーバーヘッドはかかるものの、論理的なレコードが書かれたままの状態でデコードできれば、それは誰に対してもわかりやすい、意味をもったデータとなります。またテーブルの中にあるサブセットのうち、関心のあるものだけ取り出したり、PostgreSQL以外のデータベースにレプリケーションすることも論理レプリケーションならば可能になります。リカバリコンフリクトが発生するような場合でも、論理レプリケーションで解決しやすくなるでしょう。ゲーガン氏は「本番稼働前に想定されるような問題の多くを論理レプリケーションで解決できるようになる」と強調しています。

PostgreSQLならではの機能ともいうべき外部データラッパ(fdw)は、PostgreSQLにクエリをかけるとPostgreSQL以外のデータソース(Oracle、MySQL、MongoDB、Twitter、CSVなど)からもデータが取得できる機能です。PostgreSQL 9.3ですでに実装済みですが、9.4ではさらにこの機能が「clever(かしこく)になる」とゲーガン氏。リモートデータベースに自動でかつ透過的にクエリを発行し、書き換えることが可能になるとしています。必要なときに必要なデータを参照できるだけでなく、オプティマイザを通して定量的に取得することも可能になるとのこと。

画像

JSONサポートのエンハンスは、クラウドやビッグデータ関連の業務に就いている開発者にとって、もっとも興味深い強化ポイントかもしれません。ゲーガン氏も「アプリケーション開発の"新しい波"を感じさせる機能強化」と表現しています。非構造化データを扱うユースケースが増えることを考えれば、"データプラットフォーム"をめざすPostgrSQLがJavaScriptをネイティブにサポートするのは当然のイノベーションといえるのかもしれません。ゲーガン氏によれば、9.4におけるJSONエンハンスとして

  • JSONのバイナリリプレゼンテーション
  • GINおよびGiSTインデックスのサポート
  • JSON CRUDに関するプロポーサル

などが予定されているそうです。


基調講演の中でゲーガン氏は自身がPostgreSQL開発の道を選んだ理由として、⁠数あるOSSプロダクトの中でも、飛び抜けてコードそのものの質が高く、美しい」ことを挙げています。コードの質が高いということは長く使われていくために非常な重要な要素であり、またコードが美しければそれをベースにするアプリケーションも美しく使いやすいものとなります。

「半構造化データを含む多様なデータを扱えるのもコードの質が高いからこそ。そしてその質をさらに上げるべく、コミュニティやメーリングリストでは日夜活発な議論がなされている。そしてその活動のひとつひとつが社会的に貢献することにつながっている」とゲーガン氏。PostgreSQLが発展すれば世界がよりすばらしいものになる ─次回のPostgreSQL 9.4のリリースが世界にどんな変化を与えるのか、いまから期待が高まります。

おすすめ記事

記事・ニュース一覧