「PostgreSQL 9.4」リリース、バイナリJSONデータ型をサポート

 PostgreSQL Global Development Groupは12月18日、オープンソースのリレーショナルデータベースPostgreSQLの最新版「PostgreSQL 9.4」をリリースした。バイナリJSONデータ型「JSONB」の導入により柔軟性を強化し、拡張性や性能も向上している。

 PostgreSQL 9.4は、2013年9月に公開されたバージョン9.3から約1年3か月ぶりの最新版となる。柔軟性、拡張性、性能の3つに大きく注力して開発された。

 本アップデートでの最大の特徴は、「JSONB」データ型の導入。バイナリデータを扱うJSONデータ型で、高速なルックアップ、Generalized Inverted Indexes(GIN)を使ったクエリなどをサポートする。これにより、非リレーショナルなデータをリレーショナルなデータと同時に扱えるできるようになり、どちらかを選択する必要がなくなるという。また、JSON内の値に対してはより高速にアクセスでき、高速化も図れるという。

 「論理デコーディング」(Changeset Streaming)の導入による拡張性の向上も行われた。WALに行変更情報を出力でき、PostgreSQLレプリケーションデータの読み込み/フィルタリング/操作を担当するAPIを持つ。マルチマスタのPostgreSQLクラスタの作成をサポートする両方向レプリケーション(BDR;Bi-Directional Replication)などの新しいレプリケーションツールのベースとなるという。プラグインインフラを持ち、カスタマイズや機能拡張も可能。

 また、レプリケーションスロットが導入され、プライマリやアップストリームとスタンバイとの情報共有によりレプリケーションが完了した部分が特定できるようになり、WAL(Write Ahead Log)を保持するwal_keep_segmentsも不要になる。

 GINインデックスのサイズは最大50%縮小され、速度は最大3倍と大幅に向上した。WALではデータ書き込みなどの改善も行われている。それ以外にも、pg_prewarmユーティリティを利用することで、再起動時にデータベースキャッシュの再読み込みを高速に行なえるようになったほか、Linux Huge Pagesもサポートした。サーバーの設定パラメータを変更するALTER SYSTEMコマンドや、テーブル全体をロックすることなくマテリアライズドビューの更新が行えるREFRESH MATERIALIZED VIEW CONCURRENTLYコマンドなども加わった。9.3で導入した更新可能なビューも、対象を拡大するなどの強化が施されている。

PostgreSQL
http://www.postgresql.org/