PostgreSQLの機能と他のRDBMSの比較
SRA OSS, Inc. 日本支社 稲葉 香理
この記事は、gihyo.jp & Let's Postgres 連動企画「今こそ!PostgreSQL」の第2回記事です。第1回目「PostgreSQLの今を知る」は gihyo.jp で公開中です。
第2回 PostgreSQLの機能を他のデータベースと比較してみてみよう
PostgreSQLをはじめとしたオープンソースデータベースの機能はもはや商用データベースに匹敵するものです。以下に、PostgreSQL、商用データベースの代表格である Oracle Database、PostgreSQLと並んでオープンソースデータベースで著名な MySQL における簡単な機能比較を提示します。
PostgreSQL (v8.4) |
Oracle (11g Enterprise Edition) |
MySQL (Enterprise Server 5.1 Advanced / InnoDB) |
|
---|---|---|---|
標準SQLデータ型 | (一部非サポート) | ||
JOIN方式 | (Nested Loop のみ) | ||
行ロック | |||
トランザクション処理 | |||
読み取り一貫性 | |||
ストアドプロシージャ | (制限あり) | ||
トリガ | (複数定義不可) | ||
全文検索 | (InnoDB不可) | ||
オンラインバックアップ | |||
Point In Time Recovery (PITR) | |||
パーティショニング | (オプション購入) | ||
テーブルスペース | |||
レプリケーション | (OSSサードパーティー) | ||
クラスタリング (可用性) | (商用/OSSサードパーティー) | (オプション購入) | (商用/OSSサードパーティー) |
クラスタリング (性能) | (OSSサードパーティー) | (オプション購入) | (商用サードパーティー) |
GIS対応 | (OSSサードパーティー) | (オプション購入) | (InnoDB不可) |
全ての機能を網羅した表ではありませんが、PostgreSQLが Oracle Database と同様の機能があることがお分かりいただけるでしょう。レプリケーションやクラスタリングなどは、PostgreSQL本体とは別にリリースされるサードパーティーでの提供となりますが、pgpool-II, Slony-I をはじめとした実績も豊富なソフトウェアが提供されています。
PostgreSQLが特に強みを発揮する分野として、最後の行に記載したGIS (地理情報システム) があります。GISは位置に関する情報を持ったデータ (空間データ) を管理し、主に地図と組み合わせて位置を表示、検索、分析するシステムです。PostgreSQLでは、PostGIS というサードパーティーソフトウェアで、GISオブジェクトをデータベースに格納し空間データに適した検索を行うインデックスと、GISオブジェクトを解析するための関数群が提供されており、地図検索システムなどでの豊富な利用実績があります。
このように豊富な機能をもった PostgreSQL ですが、システムを構築する際のデータベース選定では迷うことも多くあるでしょう。一般的にRDBMSならこれが一番ということは難しく、また意味のあることではないと考えます。それぞれの用途に応じて適したデータベースを選択するのが良いでしょう。次からは、PostgreSQLと他のRDBMSを比較してメリット・デメリットを見てみます。
PostgreSQLと商用RDBMS
PostgreSQL は、機能・性能ともに本格的な RDBMS を目指しており、ここ 3~4年で商用RDBMS に匹敵する機能追加と性能改善が行われています。RDBMS 本体としてはそれほど差はなくなってきていますが、周辺ツールなどの面では商用RDBMS が対応が多いというのが現状でしょう。PostgreSQL を商用RDBMSと比較した場合のメリット・デメリットは以下のように考えられます。
メリット
- 導入コストが低い
- RDBMS本体の機能としては商用に匹敵
デメリット
- サードパーティー製品の対応が少ない
- 商用サポートが少ない
メリットはなんといっても十分な機能を持ちながらも低コストで導入できる点です。大規模で信頼性が求められるシステムでも十分に対応可能なので、高いコストパフォーマンスが期待できます。
逆にデメリットとしては、RDBMSを活用したアプリケーション等 (代表的なのは BI ツール等) の PostgreSQL 対応が少ないという点があります。これは、ソフトウェアが欧米中心の開発であり、PostgreSQL が欧米において高いシェアがないことに起因するものといえます。また、日本では、SRA OSS, Inc. 日本支社、野村総合研究所、日立製作所、日本電気、アシスト、サイオステクノロジーなどの企業が商用サポートを提供していますが、商用RDBMSに比べると取扱会社が少ないといえます。
PostgreSQL と MySQL
PostgreSQL と同じオープンソースデータベースの MySQL は、利用されるシーンも似ていることから良く比較されます。数年前は、「SQL の機能なら PostgreSQL / 検索性能なら MySQL」という定説がありましたが、ここ数年の間に、PostgreSQL は性能改善の強化、MySQL も SQL の機能拡張に取り組んだ結果、その定説はくつがえされつつあります。現在の PostgreSQL を MySQL と比べた場合のメリット・デメリットは以下のように考えられます。
メリット
- SQLの実装レベルが高く、より複雑なアプリケーションに最適
- 障害対応のためのバックアップの対応レベルが高い
デメリット
- レプリケーションがサードパーティーであり設定が大変
図1の機能比較をご覧頂くと分かりますが、MySQLでは、JOIN方式が一部のみのサポートとなっています。具体的には、Nested Loop Join という1種類のみとなります。これはデータが小さい場合には向いていますが、データ量が多い場合には向いていません。PostgreSQLでは、データ量が多い場合に向いているMerge Join、ソートメモリが十分にある場合に高速に処理可能な Hash Join が実装されており、複数の大きなテーブルを結合するような集計や分析のような機能を有するシステムに適しているといえます。
デメリットとしては、近年の MySQL 躍進の理由の1つと思われるレプリケーションです。MySQL は標準装備で設定が簡単です。PostgreSQL はサードパーティーでの提供のため、標準装備に比べると一手間かかります。これらの事から、「本格的なアプリケーションならPostgreSQL、小中規模のシンプルなアプリケーションならMySQL」というのが適切な位置づけいえるでしょう。
PostgreSQLならでは
最後に、他の RDBMS と比べて PostgreSQL ならでは、という点を紹介します。なんといっても特徴的なのはライセンスです。PostgreSQL は、BSD ライセンスというライセンスを採用しています。これはオープンソースのライセンスの中でも非常に緩やかなライセンスと言え、独自に改変してもその改変の公開義務がありません。これにより、米EnterpriseDB社の Oracle互換機能を備えた Postgres Plus Advanced Server や、SRA OSS, Inc. 日本支社の信頼性を向上させた PowerGres Plus など、独自のソリューションが展開されています。もちろん商品化しなくてもよいので、自社製品への組み込み用途に改変して利用することも可能です。
次回予告
次回は、PostgreSQLの導入事例と情報収集について紹介します。お楽しみに。