TOP>企業情報>コラム>技術情報>PostgreSQL9.3 新機能を検証してみた Vol.1

PostgreSQL9.3 新機能を検証してみた Vol.1

2013年9月9日、PostgreSQL 最新バージョン 9.3がリリースされました。本稿では、150を超える新機能の中から、エンタープライズ領域での利用を想定して注目すべき機能をご紹介します。

(全2回連載)

Vol.1 PostgreSQL9.3 エンタープライズ領域で注目の新機能はコレ

RDBMSとして成熟した機能を持つPostgreSQL


PostgreSQLは25年前から進化を続けるオープンソースのRDBMSで、4つの大きな特徴があります。

1.PostgreSQLライセンス(≒BSDライセンス)


BSDライセンスに基づくPostgreSQLライセンスと呼ばれる形態で、商用/非商用を問わず無償で利用でき、ソフトウェアへの組み込みや配布など利用目的に関する制約が少ない点が特徴です。そのため、Postgres Plus、PowerGres、PowerGres Plus などの派生DBMSや、DWH専用DBMSとしてIBM Netezza、Greenplum、Amazon Redshift のベースとして広く利用されています。

2.特定の企業に依存しない開発体制


PostgreSQLの開発は、特定の企業に依存しない個人の集合体であるコミュニティで進められています。プログラムソースもコミュニティで厳密に管理されており、リリースから5年間を正規サポートとして不具合修正パッチを提供するなど、エンタープライズ領域でも安心して活用できる開発体制を備えています。

3.活発なコミュニティ活動


日本PostgreSQLユーザ会と呼ばれるコミュニティの存在が国内でのPostgreSQL普及に大きく貢献しています。また、2012年4月にはPostgreSQLエンタープライズ・コンソーシアムと呼ばれる団体が設立され、エンタープライズ領域でのPostgreSQL活用推進のため、PostgreSQL本体および各種ツールの情報収集と提供活動が行われています。

4.エンタープライズ向け機能の充実


大規模データにも対応できるようパーティショニング機能が標準実装されていること、また表の結合もOracle Databaseと同様のネスティッドループ、ソートマージ、ハッシュ方式をサポートしているため、業務アプリケーションからの複雑なSQLに対して柔軟な対応が可能です。


PostgreSQLは、2005年にリリースされた8.0でPoint-In-Time-Recovery(以下、PITR)機能が実装されてからエンタープライズ領域での活用が進んできたと言われており、2010年にリリースされた9.0でPostgreSQL標準機能としてストリーミング・レプリケーションの実装や性能改善の機能強化が行われ、採用機会が増えています。

PostgreSQL 9.2から9.3へ


最新バージョン PostgreSQL 9.3の話に入る前に1つ前のバージョンであるPostgreSQL 9.2の機能を振り返っておきましょう。

PostgreSQL 9.2は主に性能に関する改善と近年ニーズが高まっている可用性の機能向上が組み込まれたバージョンであり、性能に関する改善として、READ処理性能が64CPUまでスケールするアーキテクチャが組み込まれました。弊社の検証においても図1のようにPostgreSQL 9.1では32CPU前後で性能が頭打ちになりますが、PostgreSQL 9.2では64CPUまで性能が向上することが確認されています。

また、WRITE処理においても16CPUまで性能が向上することが確認されており、エンタープライズ領域でのPostgreSQLの採用機会はますます増えていくと期待されています。

図1:READ処理の性能比較(9.1 vs 9.2)

図1:READ処理の性能比較(9.1 vs 9.2)

さらに可用性の機能強化として、PostgreSQL 9.2では「カスケード・レプリケーション」と呼ばれる機能が実装され、2台目のスタンバイ・サーバが1台目のスタンバイ・サーバにぶら下がる構成がとれるようになりました。これにより、スタンバイ・サーバの増加に伴うマスタ・サーバへの負荷集中を回避することができます。

また、PostgreSQL 9.2では「synchronous_commit」パラメータに新たな値(remote_write)が追加されました。PostgreSQL 9.1で実装された同期モードでは、WAL転送を行うとマスター・サーバでの更新処理性能が低下することが課題でしたが、remote_writeに設定することでスタンバイ・サーバに転送されたWALがファイルキャッシュへ書き込まれたタイミングでマスタ・サーバのコミット処理が完了するため、マスタ・サーバのデータを確実にスタンバイ・サーバに転送しつつ、マスタ・サーバの更新処理性能も確保することができます。弊社の検証では、図2のように従来の値(on)と比べて5%の性能向上が確認されています。

図2:同期転送モードにおける性能確保の効果

図2:同期転送モードにおける性能確保の効果

このようにバージョンアップのたびに大きな進化を遂げているPostgreSQLですが、最新バージョンのPostgreSQL 9.3ではどのような機能が実装されたのでしょうか。

PostgreSQL 9.3では、データウェアハウスや開発・運用などのカテゴリでさらに使いやすくするための機能が数多く実装されており、全体では150を超える機能拡張や追加、改善が行われています。今回は、エンタープライズ領域での利用を想定した注目すべき機能として以下をご紹介します。

 ・データウェアハウス系
  - Materialized View

 ・開発系
  - postgres_fdw

 ・運用系
  - データページチェックサム

 ・可用性
  - タイムラインIDの追従
  - 高速フェイルオーバ

活用シーンの拡大につながるMaterialized View


通常の表と同様に実体を持つビューであるMaterialized Viewは、図3のように結合や集計処理で性能を確保したい場合やリモート表のデータ取得に利用される機能で、商用RDBMSのシステムで広く利用されています。PostgreSQLへのMaterialized Viewの実装は、多くのユーザからの要望が後押しとなりPostgreSQL 9.3で実現しました。PostgreSQLはOLTP系システムでの利用が中心でしたが、Materialized Viewの実装によりデータウェアハウス系システムでの採用も広がっていくと期待されています。

図3:Materialized Viewの利用

図3:Materialized Viewの利用

PostgreSQLのMaterialized Viewの作成は、図4のようにCREATE MATERIALIZED VIEWコマンドを利用します。基本構文は商用RDBMSのものと差異はないため、商用RDBMSユーザの方も戸惑うことなく作成できます。また、オブジェクト情報は通常の表やビューの情報が格納されているシステムカタログ pg_classに保持され、手動でのVACUUMやANALYZEに加え自動VACUUMの対象にもなっているため、管理も容易と言えます。

図4:Materialized Viewの管理1

図4:Materialized Viewの管理1

さらに図5のようにMaterialized Viewに索引を作成し、検索・更新時に効率のよいスキャンを行うこともできます。また、データ入れ替えにはREFRESHコマンドによる完全リフレッシュを行う必要があります。内部的にはMaterialized Viewとして保持しているデータのTRUNCATEとCOPYが実行されるため、一時的に強いロックを獲得する点に注意してください。

図5:Materialized Viewの管理2

図5:Materialized Viewの管理2

弊社が行ったMaterialized Viewの検証では、お客様の情報が格納されたマスタ表(cust表)とお客様からの問い合わせに関するディテール表(sup_log表)を利用し、お客様番号ごとの問い合わせ数を集計するSQLの所要時間を計測しました。

図6:Materialized Viewによる処理時間の短縮

図6:Materialized Viewによる処理時間の短縮

Materialized View作成時のSELECTを直接実行した場合とMaterialized Viewに対してシンプルなSELECTを実行した場合の所要時間を計測した結果、図6のようにMaterialized Viewの検索では大幅に時間を短縮できることが確認されています。

尚、差分データのみを入れ替える高速リフレッシュやSQLを自動的に書き換えるクエリリライトなどの機能強化はPostgreSQL 9.4以降で予定されており、今後の開発に期待したいと思います。


次回は、今回に引き続き、PostgreSQL 最新バージョン 9.3の新機能の中から、開発・運用面において、注目すべき機能をさらに詳しくお届けします。

  • Postgres Plus は、EDB Postgres の旧製品名です。


高瀬 洋子(Youko Takase)

株式会社アシスト データベース技術本部

アシスト入社後、Oracle Databaseのサポート業務を経て、2009年よりPostgreSQL、EDB Postgresのサービス立ち上げに参画。「PostgreSQLなら高瀬に聞こう」と社内外から言ってもらえる存在となることを目標に日々活動。2014年4月よりイギリスに拠点を移し、PostgreSQL、EDB Postgresの啓蒙活動と顧客対応の後方支援を担当。

高瀬の紹介記事はこちら

連載記事一覧

関連製品/サービス


Facebookで情報をお届けしています

Facebookでは、アシストの「今」を週3回のペースでお届けしています。「めげない、逃げない、あまり儲けない」を合言葉に日々頑張っておりますので、応援よろしくお願いします。



ページの先頭へ戻る