PostgreSQL 9.5正式リリース。DWH向け巨大データ用インデックス、アップデートとインサートを組み合わせたUPSERT、行レベルのアクセス制御など
オープンソースで開発されているPostgreSQLの最新版、「PostgreSQL 9.5」が正式にリリースされました。
さっそく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行ごとに設定できる機能です。
例えば顧客データベースに対して、営業部は全データベースが見られるけれど、開発部門は特定のユーザーのみ見られるようにする、といった設定を行ごとに行うことができます。
参考リンク
あわせて読みたい
ブログでメシが食えるか?/マイクロソフトが軽量なプロジェクト管理ツール公開/さくらインターネットの原価計算システム、ほか。2015年12月の記事ランキング
≪前の記事
Amazonクラウド、韓国ソウルに新リージョンを構築。アジアパシフィックはこれで東京、シンガポール、シドニー、ソウルの4カ所に