Geoghegan)氏はPostgreSQLをこう表現しました。9.4のリリースが期待されていますが、ゲーガン氏の言う"データプラットフォーム"としてPostgreSQLはどのような進化を遂げようとしているのでしょうか。本稿ではの基調講演の内容をもとに、PostgreSQLの次なるゴールを概観してみたいと思います。ピーター・ゲーガン氏アプリ開発の「新しい波」を開発者に届けたい基調講演を行ったゲーガン氏は、PostgreSQLを基盤データベースとして採用していることで知られるHerokuのエンジニアです。wave)のただ中にいる開発者たちに多くのメリットを届けられると確信している」と語っています。Contributorとしてのゲーガン氏は、pg_stat_statementの正規化やパフォーマンスの改善、そして最近ではUPSERT(データがある場合はUPDATE、データがない場合はINSERTする機能)への取り組みなどに貢献した実績をもちます。UPSERTに関しては現在も開発に関わっており、「⁠UPDATEかINSERTかはけっこう複雑で悩ましい問題であり、開発者からの苦情が多かったので、なんとか解決したかった。UPSERTはSQLの標準機能であるMERGEに似ているが、MERGEにはユニークな制約が必要ないので、MERGEほどパワフルではないが便利な機能ではある。(⁠次バージョンである)9.4ではもっと改善した状態で届けられると思う」と例を挙げながら解説していました。platform」というフレーズは、非常に強いインパクトを感じさせます。ゲーガン氏はなぜPostgreSQLをデータプラットフォームと呼んでいるのでしょうか。データベースとデータプラットフォームにはどんな違いがあるのでしょうか。ゲーガン氏はまずデータベースについてこのように定義しています。「⁠アプリケーション開発者がよけいなことを考えなくても済むように、コンカレンシーコントロールやクラッシュに対する安全性、一般的なデータ統合などの機能を、フレキシブルに、かつ再利用可能なソリューションとしてデータマネジメントに提供する」1980年代半ばに、かのマイケル・ストーンブレーカー博士が始めたPOSTGRESプロジェクトを源流とするPostgreSQLも、当然ながらこのデータベースとして課せられた機能を実現するために発展を遂げてきました。ゲーガン氏は登場したころのPostgreSQLについて「とくに多様なデータタイプを扱えるようにすることをファーストオーダー(第一義)として発展してきた節がある」と指摘しています。これはたとえば、当時は365日ではなく360日でしか日付の数値データを扱えなかったので、アプリケーション側(とくに金融業界など)から異なる形でのデータ表現を要求された経緯などによります。利用シーンでアドホックな要求に応え、カスタムインデックスを発展させていった結果、PostgreSQLは数あるRDBMSの中でもフレキシビリティ(柔軟性)に非常に長けたデータベースへと成長しました。ゲーガン氏は「PostgreSQLには多くのすばらしい特徴があるが、私がもっともすぐれていると思うのはそのフレキシビリティだ」と強調します。このフレキシビリティこそが、PostgreSQLを"単なるデータベースを超えたデータプラットフォーム"の地位に押し上げていると言えそうです。Redshiftなど多くのクラウドベンダがPostgreSQLを基盤データベースとして採用していますが、その最大の決め手はやはり柔軟性の高さにあるといわれています。─これはゲーガン氏にかぎらず、POSTGRESプロジェクトの創始者でもあるストーンブレーカー博士も目指したところだとされています。ゲーガン氏は「PostgreSQLがデータプラットフォームとしてこれからも発展していくなら、論理的な機能の強化/改善が欠かせない」としています。具体的にいうと、より多様なタイプのデータを論理的に扱えるようにすることが重要で、たとえばPostgreSQLで地理空間データを扱うことを可能にする「PostGIS」のようなサードパーティの取り組みもそうした活動に含まれるとゲーガン氏は強調しています。9.4はどのような機能強化が見られるのでしょうか。ゲーガン氏は基調講演の中で次の3つのポイントについて触れています。postgres_fdw)ローカルのPostgreSQLテーブルと外部データをインタラクティブにやりとりさせるJSONタイプの拡張GoogleのJavaScriptエンジン「V8」をベースにしたプロシージャ言語「PL/v8」を使い、PostgreSQLの中で直接JavaScriptを扱えるようにする論理レプリケーションは、ゲーガン氏のいうところの"PostgreSQLの最大のメリット"である柔軟性を強調する機能といえます。物理レプリケーションに比べてオーバーヘッドはかかるものの、論理的なレコードが書かれたままの状態でデコードできれば、それは誰に対してもわかりやすい、意味をもったデータとなります。テーブルの中にあるサブセットのうち、関心のあるものだけ取り出したり、PostgreSQL以外のデータベースにレプリケーションすることも論理レプリケーションならば可能になります。リカバリコンフリクトが発生するような場合でも、論理レプリケーションで解決しやすくなるでしょう。ゲーガン氏は「本番稼働前に想定されるような問題の多くを論理レプリケーションで解決できるようになる」と強調しています。PostgreSQLならではの機能ともいうべき外部データラッパ(fdw)は、PostgreSQLにクエリをかけるとPostgreSQL以外のデータソース(Oracle、MySQL、MongoDB、Twitter、CSVなど)からもデータが取得できる機能です。9.3ですでに実装済みですが、9.4ではさらにこの機能が「clever(かしこく)になる」とゲーガン氏。リモートデータベースに自動でかつ透過的にクエリを発行し、書き換えることが可能になるとしています。必要なときに必要なデータを参照できるだけでなく、オプティマイザを通して定量的に取得することも可能になるとのこと。JSONサポートのエンハンスは、クラウドやビッグデータ関連の業務に就いている開発者にとって、もっとも興味深い強化ポイントかもしれません。ゲーガン氏も「アプリケーション開発の"新しい波"を感じさせる機能強化」と表現しています。非構造化データを扱うユースケースが増えることを考えれば、"データプラットフォーム"をめざすPostgrSQLがJavaScriptをネイティブにサポートするのは当然のイノベーションといえるのかもしれません。CRUDに関するプロポーサルなどが予定されているそうです。基調講演の中でゲーガン氏は自身がPostgreSQL開発の道を選んだ理由として、「⁠数あるOSSプロダクトの中でも、飛び抜けてコードそのものの質が高く、美しい」ことを挙げています。コードの質が高いということは長く使われていくために非常な重要な要素であり、またコードが美しければそれをベースにするアプリケーションも美しく使いやすいものとなります。「半構造化データを含む多様なデータを扱えるのもコードの質が高いからこそ。その質をさらに上げるべく、コミュニティやメーリングリストでは日夜活発な議論がなされている。その活動のひとつひとつが社会的に貢献することにつながっている」とゲーガン氏。9.4のリリースが世界にどんな変化を与えるのか、いまから期待が高まります。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。