新たに「UPSERT」機能をサポートした「PostgreSQL 9.5」が登場

 オープンソースのリレーショナルデータベース「PostgreSQL」を開発するPostgre Global Development Groupは1月7日、最新安定版となる「PostgreSQL 9.5」を公開した。UPSERTの導入のほか、セキュリティやビックデータ関連機能などが加わっており、利用者を拡大するとしている。

 2014年12月に公開されたPostgreSQL 9.4に続く最新版。アプリケーション開発者からのリクエストが最も多かったというUPSERT(INSERT, ON CONFLICT UPDATE)が新たに実装された。UPSERTは新規挿入と更新を同じように扱うもので、INSERTできればINSERT、できないときはUPDATEを行う。「ON CONFLICT」指定により同時に発生するデータの変更の衝突を処理でき、Webやモバイル向けのアプリケーション開発が簡素化されるとしている。2年かけて開発した機能で、他のリレーショナルデータベースのUPSERT機能と比べると柔軟かつパワフルで、MySQLアプリケーションをPostgreSQLベースにマイグレーションするにあたっての大きな障害を取り除くとしている。

 ビックデータ関連の機能としては、データウェアハウス向けにBRIN(Block Range INdex)インデックスを導入した。大規模なテーブル向けに小型ながら効率のよいインデックスを作成できるもので、例として数十億行ものロギングデータを含むテーブルの場合BTreeインデックス利用時の5%の時間でインデックスと検索ができるとしている。

 9.1で導入したForeign Data Wrapper(FDW)も強化され、IMPORT FOREIGN SCHEMAとJOINプッシュダウンのサポートが加わった。FDWは外部データをPostgreSQLのテーブルとして扱うための外部データラッパ。IMPORT FOREIGN SCHEMAにより、外部データベースとのクエリ接続の設定と効率を改善するという。

 テキストとNUMERICデータのソートも改善した。「abbreviated keys」というアルゴリズムの導入により、大規模なデータセットに対する一部のクエリを最大12倍、インデックス作成を20倍高速化するという。

 SQL構文関連ではデータの集計を行う「CUBE」および「ROLLUP」、「GROUPING SETS」構文や、大規模なテーブルについての統計サンプルを得られるTABLESAMPLE構文が加わった。JSONサポートも強化されており、9.4で導入したJSONB型に新しい関数や演算子が加わっている。

 セキュリティでは、Row Level Security(RLS)を導入した。行単位、列単位でデータへのアクセス制御を設定できるもので、SE Linuxなど外部のセキュリティスタックと統合できる。

 このほかにも多数の細かな機能が加わり、不具合も修正されている。

PostgreSQL
http://www.postgresql.org/