PostgreSQL 9.5正式リリース。DWH向け巨大データ用インデックス、アップデートとインサートを組み合わせたUPSERT、行レベルのアクセス制御など

2016年1月8日

オープンソースで開発されているPostgreSQLの最新版、「PostgreSQL 9.5」が正式にリリースされました

PostgreSQL: PostgreSQL 9.5: UPSERT, Row Level Security, and Big Data

さっそくHerokuでは、同社のデータベースサービス「Heroku Postgres」でPostgreSQL 9.5が利用できるパブリックベータサービスの提供開始を発表しています。

PostgreSQL 9.5では、データウェアハウスなど巨大なデータベースの検索に適したBRINインデックスや高速なソート、データの更新時に行がなければ自動的にインサートとなるUPSERT、行レベルでユーザーごとのアクセス制御を行うなど、多くの機能強化が行われています。

BRINインデックス、ソートの高速化

BRIN(Block Range Index)インデックスとは、巨大なデータベースの特定のレンジに対して高速に検索できるような新しいインデックスのことです。PostgreSQL 9.5の発表文では、次のように説明されています。

For example, tables containing logging data with billions of rows could be indexed and searched in 5% of the time required by standard BTree indexes.

例えば、ログデータを数百万行も格納したテーブルに対してインデックス付けができ、標準的なBツリーインデックスの5%程度の検索時間で検索できる。

またabbreviated keysと呼ばれるアルゴリズムの採用によって、NUMERIC型とテキストデータに対して従来より高速にソートできるようになったとのこと。インデックスの作成が最大20倍高速になり、ソート時間も2倍から12倍高速になったと説明されています。

UPSERTの実現はMySQLからの移植を容易にする

UPSERTとは、その操作に対して行があればUPDATE、行がなければINSERTとして振る舞うコマンドのことです。

これまではアプリケーションでこの動作を実現しようとすると、まず検索をしてデータがあるかないかを確認。データがない場合にはINSERTコマンドを実行、データがあった場合にはUPDATEコマンドを実行する、といった長いコードを書く必要がありました。

また、検索してからデータをINSERTするまでのわずかの隙間時間に万が一データが追加された場合にどうするか、といった細かい処理も想定しなければなりません。

UPSERTコマンドは一発でこれを実現してくれます。

MySQLにはREPLACEコマンドやINSERT ON DUPLICATE KEY UPDATEなどで同様の機能を実装することができていました。UPSERTの実現は、MySQLからPostgreSQLへの移植を妨げていた大きな最後の障壁を取り除くものだと説明されています。

行レベルのアクセス制御

新しく追加された行レベルのアクセス制御は、その名前が示すとおり、どのユーザーに対して閲覧などの操作を許すか、1行ごとに設定できる機能です。

例えば顧客データベースに対して、営業部は全データベースが見られるけれど、開発部門は特定のユーザーのみ見られるようにする、といった設定を行ごとに行うことができます。

参考リンク

あわせて読みたい

PostgreSQL RDB データベース オープンソース




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本