2016年1月21日

[翻訳] PostgreSQLの過去、現在、未来: ゴールポストを動かし続けて(Robert Haas)

PostgreSQL 9.5が正式リリースされて少し経ちましたが、みなさん既に試されたでしょうか?

PostgreSQLの主要な開発者のひとりに Robert Haas 氏がいます。Robert Haas 氏は EnterpriseDB社で働いていますが、今、PostgreSQL開発コミュニティの中で、もっともアグレッシブに開発している一人であり、開発コミュニティの中でも非常に大きな影響力と信頼を勝ち得ている一人であると言えるでしょう。

また、Robert Haas 氏は、2012年には日本のPostgreSQLカンファレンスで基調講演を行ったこともあります。
そのRobert Haas氏が9.5のリリース直後に、「これまでのPostgreSQLの5年間を振り返り、これからの5年間を考える」というブログエントリを書いていました。
そのエントリが非常に興味深く、日本語でも紹介したいと本人にお願いしたところ翻訳掲載の許可をもらえましたので、本エントリではその全文をご紹介します。

PostgreSQLの主要な開発者が今何を考えているのだろうか。PostgreSQLの今後をどう考えているのだろうか。開発者の頭の中をちょっと覗いてみよう、といった趣で、PostgreSQLの今後を考える参考にしていただければと思います。

文中のリンクは原文のままになっています。

それではどうぞ。

2016年1月10日

PL/Pythonで独自の集約関数を作成する

先月、PostgreSQLアンカンファレンスで「PL/Pythonで独自の集約関数を作ってみる」という発表をしました。

本エントリでは、その詳細について紹介させていただきます。

■なぜPL/Pythonで集約関数なのか?


既に広く知られている通り、PostgreSQLではさまざまなプログラミング言語でプロシージャ/ファンクションをユーザが定義することができます。

では、なぜPL/Pythonで集約関数なのでしょうか?

まず1つ目の理由としては、Pythonとデータ処理が非常に相性が良い、ということが挙げられます。古くから統計解析でRが使われてエコシステムが発展してきたのと同じように、最近ではPythonを取り巻くデータ分析に関するエコシステムが大きくなり、データ分析に関するさまざまな処理をPythonで行えるようになってきています。

2つ目の理由としては、データ処理と集約関数というのは切っても切れない関係にあるということです。シンプルな COUNT() や AVG() から、最近ではウィンドウ関数まで、集約関数にはさまざまな処理があり、データベースにおけるデータ分析に集約関数は欠かせません。

そして、最後の理由としては、集約関数は「インデータベース(In-Database)処理」である、ということです。「インデータベース処理」というのは、データベースからデータを取り出してクライアントサイドで処理させるのではなく、データベースの内部でデータ処理をさせることを言います。こうすることによって、データの転送にかかる時間を削減したり、よりスペックの高いサーバ側で大量の処理をさせることが可能になります。

これらの理由から、これからPL/Pythonを使って独自の集約関数を作成できる意義はより高まっていくでしょう。

■PostgreSQLにおける集約関数の構造


次に、PostgreSQLの集約関数の構造を見てみましょう。

以下は、基本的なPostgreSQLの集約関数の構造および動作です。