商用データベースに負けないPostgreSQL:PostgreSQLで作るLinuxデータベース(1)
無料で利用でき、機能も信頼性も一般の製品に劣らない、フリーのデータベース「PosgtreSQL」が、注目を集めている。この連載では、そのPostgreSQLを使ったシステム構築を解説していく。第1回はPostgreSQLの概要を紹介する。
フリーのデータベースPostgreSQL
今回のおもな内容
- フリーのデータベースPostgreSQL
- PostgreSQLの歴史
- 主要なUNIX系OSで動作可能
- PostgreSQLの特徴と欠点
- アプリケーション開発インターフェイス
- サポートについて
- 最新情報はコミュニティから得られる
- PostgreSQL関連リンク集
PostgreSQL(「ポストグレエスキューエル」や「ポストグレス」と読むことが多い。英語版のFAQによると、正式には「Post-Gres-Q-L」、つまり「ポストグレス・キューエル」と読む )は、「BSDライセンス」に基づき配布されているフリーのデータベースソフトウェアで、商用/非商用を問わず無償で利用することができます。しかも、商用のデータベースソフトと同等もしくはそれ以上の機能を持っています。
これは何を意味するかというと、個人的な使用はもちろんのこと、商用のアプリケーションパッケージにPostgreSQLを組み込んで売ってもかまわないということです。クライアントのライセンスについても特に気にする必要がありません。
例えば、ホライズン・デジタル・エンタープライズが販売するCRMパッケージ製品「HDE Customers Care」では、データベースエンジンとしてPostgreSQLが採用されています。もしこれに商用のデータベースソフトウェアを利用した場合には、ライセンス数にもよりますが、購入にかなりの金額がかかることは容易に想像ができます。
商用データベースの代表的な存在であるOracleも、現在ではLinux版が販売されており、商用UNIX版よりも低価格で利用することができます。それでもインターネットで利用できる無制限ライセンスを購入した場合は、ライセンス料だけで80万円(Oracle8i Workgroup Serverの不特定ユーザーインターネットアクセスライセンスパック)、社内利用ライセンスだと、なんと320万円(特定ユーザー無制限アクセスライセンスパック)もします。
これでは、データベースを利用してeコマースサイトをつくろうと思っても、おいそれと手が出せません。そのため、コストを考えた場合に、まずはPostgreSQLを使ってWebサイトを構築し、将来的にデータベースのコネクト部分を変更して、商用データベースに置き換える、ということも考えられるのではないでしょうか。
ただし先ほど、PostgreSQLが商用データベースに匹敵する機能を持っている、と述べましたが、機能によっては商用データベースよりも劣っている部分ももちろんあります。それらについては、のちほど詳しく解説します。
PostgreSQLの歴史
PostgreSQLの最初のバージョンである「Postgres」が開発されたのは、カリフォルニア大学バークレー校です。そしてそのままVersion4まで開発が続きましたが、その後の開発やメンテナンスはボランティアの手によって行われることとなりました(Version 4の次は5ではなく、当時脚光をあびたマイクロソフトのOSのように、その出荷年にちなんでPostgres95と命名されることとなりました)。
Postgres95以降は、現在のコアなメンテナであるMarc Foumier氏が中心となって開発が行われ、再びバージョンを付加した名称を与えられることとなりました(Postgres95をVersion 5としてカウントして、次はVersion6と呼ばれることとなりました)。また、1996年の終わりには、PostgreSQLという名称に変更されました。
PostgreSQLの現在の最新バージョンは7ですが、これは前バージョンのVersion6.5.3から時間が空きすぎたということで、外部キー制約をサポートしたものを7として公開しています。本来は、大きな改変があった場合にメジャーバージョンを上げてリリースするという方針だったのですが、それではバージョンアップの間が空きすぎるということで行われた措置のようで、これは仕方のないことかもしれません。
日本ではPostgres95のころから、現在「日本PostgreSQLユーザ会」の理事長である石井達夫氏を中心に熱心な普及活動が行われてきました。Linuxが普及しだした1998年くらいから、現在もよく利用されているバージョンである6が公開され、また、Slackware Linuxを改良したPlamo LinuxにPostgreSQLがパッケージ化されて配布されたことなども重なって、PostgreSQLの普及が始まりました。
現在でも、上述の日本PostgreSQLユーザ会を中心にPostgreSQLの技術セミナーなどが行われています。技術者の層もさらに厚みが増してきたと言えるでしょう。
主要なUNIX系OSで動作可能
PostgreSQLはUNIXやその互換OS上で動作します。Linuxや一部の商用UNIXでは、OSをインストールしたあと、PostgreSQLがすぐに使えるようなパッケージ形態で配布されている場合があります。しかし、このようなパッケージ形態で提供されていなくても、ユーザー自身でソースコードを手に入れ、それをコンパイルすることで使用できるようになります。
現在、動作が確認されている主なOSは以下の通りです。
- Linux
- FreeBSD
- NetBSD
- OpenBSD
- BSD/OS
- Solaris
- HP-UX
- AIX
コラム PostgreSQLの機能
PostgreSQLが、Oracle8iやSybase、Informixなどの商用データベースに比べてどのような機能を持っているかは、気になるところだ。PostgreSQLのFAQのページ(日本語版)では、簡潔にその疑問に答えているので紹介したい。
本文にもあるようにPosgtreSQLはSQL92の拡張サブセットをサポートしている。FAQによると具体的には、
- トランザクション
- 副問い合わせ
- トリガー
- ビュー
- 外部キーの参照整合性
- 洗練されたロック機構
など、大規模な商用データベースが持つ機能をほとんど備えている。さらに、
- ユーザー定義型
- 継承
- マルチ-バージョン・コンテンション
など、商用データベースが持ち合わせない機能をいくつか持ち合わせている。ただし、
- ロック・コンテンションを減らすための外部競合状態制御 (outer concurrency
control)
- 外部結合(outer joins)
は、まだ実装されておらず、作業中だという。外部結合がないのは多少残念だが、言葉通り商用データベースとほぼ同等の機能を備えていると言っていいだろう。
編集注:9月13日現在、日本語版のFAQには外部キーの参照整合性が未サポートと記述されている。このコラムは英語版のFAQを元にした。
PostgreSQLの特徴と欠点
PostgreSQLはSQL92のサブセットに準拠しています。さらに、ほかの商用データベースと違い「ユーザー定義データ型」を備えているのが大きな特徴です。最新のバージョンでは外部キーの参照整合性チェックをサポートしました。
また、当然ながらクライアント/サーバ型アーキテクチャを採用しており、PostgreSQLが動作しているデータベースサーバに対してネットワーク経由でアクセスすることが可能です。
先ほど、PostgreSQLは商用データベースに匹敵するもしくはそれ以上の機能を持つと紹介しました。例えば、PostgreSQLの「ユーザー定義データ型」は商用データベースにない機能です。ただし、欠点もあります。
PostgreSQLでは追加・更新されたデータは最終行に追加されます。あるデータが更新された場合は、(更新前の)元のデータには削除されたというフラグが立つだけです。同様に削除されたデータについても、削除されたというフラグが立ちます。
このことは、盛んにデータが更新された場合、データベースファイルの大きさが増大する一方であることを意味します。
この事態を解消するために、vacuumコマンドを利用して不必要になった領域を物理的に削除し圧縮することができるのですが、vacuumコマンドの処理中はデータベースを利用することができません。このことは、24時間365日連続稼働が想定され、かつ追加・更新が頻繁に発生するシステムでは致命的な欠点となりかねません(もちろん、運用上一定の期間でvacuumを実施できる環境であればこのかぎりではありません)。
また、PostgreSQLでは商用データベースと違い、トランザクションログの取得機能が弱いという欠点があります。Oracleなどの商用データベースでは、更新や削除のログを逐次記録し、万が一データベースのダウンが発生した場合は、バックアップデータにログを適用し、完全復旧させるという機能を備えていますが、PostgreSQLにはその機能がありません。
また、分散データベース環境を想定した場合、レプリケーション機能を備えていないという欠点があります。しかしこの点については、いろいろなアプローチで解決が図られようとしています。
アプリケーション開発インターフェイス
PostgreSQLを使ったアプリケーション開発には、主に以下の方法が使用できます。最近では、簡単なeコマースサイトの構築に、マイクロソフトのSQL ServerとActive Server Pagesの代替として、PostgreSQLとPHPを組み合わせて開発されることも多いようです。
- C言語、C++
- Perl
- Python
- Tcl/Tk
- PHP
サポートについて
PostgreSQLはもともとボランティアによって育まれてきたデータベースソフトウェアであり、ビジネスで利用するための商用データベースのようなサポートはいままでほとんどありませんでした。ただし、現在では先ほど紹介した日本PostgreSQLユーザー会の石井氏が在籍するSRAで、PostgreSQLの商用サポートが行われています。
また、昨今PostgreSQLを利用して開発を行うソフトウェアハウスが増えてきたことにより、それらの会社によるサポートサービスも今後増えてくるものと思います。後述するようにコミュニティによる活動が盛んなメーリングリストなどに参加して情報収集することも、ある意味では商用データベースでは真似のできないサポートと言えるかもしれません。
最新情報はコミュニティから得られる
すでにPostgreSQLに関する書籍なども出ていますが、最新の情報などを得るには、やはりPostgreSQLのコミュニティに参加するのがよいでしょう。
それには日本PostgreSQLユーザ会に参加されるのもひとつの手かと思います。http://www.jp.postgresql.org/から、日本PostgreSQLユーザ会に関する情報が入手できます。
また、日本PostgreSQLユーザ会に参加しなくともメーリングリストに参加して情報収集することもできます。http://www.sra.co.jp/people/t-ishii/PostgreSQL/に、メーリングリスト参加に関する案内があります。
ほかにも、Project BLUEなどのLinux系のコミュニティが主催するセミナーでも、PostgreSQLに関する情報を集めることができます。一度、参加されてみてはいかがでしょうか。
次回は、実際にPostgreSQLのインストール方法や利用方法について解説し、それ以降は、実際にPostgreSQLを用いたアプリケーションの開発方法についてご紹介したいと思います。
PostgreSQL関連リンク集
日本PostgreSQLユーザ会
PostgreSQL についてよくある質問(FAQ) (日本語版FAQ)
PostgreSQL >=V6.1 のためのよくある質問(FAQ) (Linux用のFAQ)
PostgreSQL mailing list in Japan(メーリングリスト)
PostgreSQL 6.5 から 7.0 への変更点(SRA石井氏によるドキュメント)
PostgreSQL 7.0.2 インストールの手引(基礎編)(SRA石井氏によるドキュメント)
PostgreSQL のページ(堀田倫英氏による解説)
PostgreSQL(本家英語版PostgreSQLのページ)
Frequently Asked Questions (FAQ) for PostgreSQL(英語版FAQ)
Copyright © ITmedia, Inc. All Rights Reserved.