オープンソースのデータベース管理システムの中でも人気が高い「PostgreSQL」。このPostgreSQLを使って,データベースの基本を学んでいこう。初回はPostgreSQLとは何かを紹介する。

 PostgreSQLは,オープンソースのリレーショナル・データベース管理システム(RDBMS)である。「ポストグレスキューエル」や「ポストグレス」と発音する。日本では「ぽすぐれ」と呼ばれることも多いようだ。

 PostgreSQLの特徴は,オープンソースのRDBMSでありながら有償のRDBMSに劣らない本格的な機能を備えていることである。そのため,学習用途から企業内のシステムまで,多岐に渡って利用されている。

 本連載では,「これからPostgreSQLに乗り換えようとしているデータベース経験者」だけでなく,「初めてデータベースに取り組む人」も読んでいただけるよう,PostgreSQLの基本から活用方法までを分かりやすく解説していく。PostgreSQLを実際に使いながら「データベースの基本」を学んでいこう。第1回は,PostgreSQLを知らない読者向けに,PostgreSQLの概要から解説しよう。

PostgreSQLの歴史

 PostgreSQLは,1973年にカリフォルニア大学バークレー校(UCB)のデータベース研究プロジェクトにより開発されたRDBMS「INGRES」が基になっている。INGRESは,Michael Stonebraker教授のグループにより,「Postgres」として引き続きUCBで開発される。

 その後,データベース研究プロジェクトは解散したが,プロジェクトに参加していた当時の大学院生らの手で「Postgres95」として開発は継続された。彼らの卒業に伴い,インターネット上のコミュニティがPostgres95の開発を引き継いだ。そして1996年に「PostgreSQL」という名称に変更された。

 INGRESの開発が始まった時期から数えると30年以上が経過しており,PostgreSQLは古い歴史を持ったRDBMSだと言える。

 現在,PostgreSQLの開発チームは,「PostgreSQL Global Development Group」という名称だ。開発チームは,開発方針を決定する開発者「コア・メンバー」と,機能を実装する開発者「ディベロッパ」で構成される。開発者は世界中にいるため,開発方針はすべてメーリング・リストを通じた議論により決定される。メーリング・リストは,開発者に限らずだれでも参加可能である。

 メーリング・リストの参加方法については,PostgreSQL Global Development Groupの公式サイト(http://www.postgresql.org/)を見てほしい(写真1)。

写真1●PostgreSQL Global Development 
Groupの公式サイト
写真1●PostgreSQL Global Development
Groupの公式サイト(http://www.postgresql.org/

PostgreSQLに関するさまざまな情報やドキュメントが掲載されている。

 公式サイトはすべて英語で書かれているため,気遅れしてしまうこともあるだろう。PostgreSQLに関する日本語の情報は,非営利団体「日本PostgreSQLユーザ会」*1のWebサイト( http://www.postgresql.jp/)を参照されたい(写真2)。日本PostgreSQLユーザ会は,PostgreSQL付属マニュアルの日本語訳の公開をはじめ,PostgreSQLに関するセミナーなどのイベントを多数実施している。

写真2●日本PostgreSQLユーザ会のWebサイト
写真2●日本PostgreSQLユーザ会のWebサイト(http://www.postgresql.jp/
日本語でPostgreSQLに関する情報が手に入る。

PostgreSQLの特徴

 冒頭でも述べたようにPostgreSQLは,有償のRDBMSに匹敵する機能を実装した本格派RDBMSだ。PostgreSQLの機能実装の歴史(表1)をみると,早い時期から重要な機能が多数組み込まれており,最近のバージョンではRDBMSに必要な機能がほぼそろったと言ってもよい。以下には,PostgreSQLの特筆すべき特徴をまとめた。

表1●PostgreSQLの各バージョンにおける主な新機能
表1●PostgreSQLの各バージョンにおける主な新機能
[画像のクリックで拡大表示]

(1)日本語対応の早さ

 PostgreSQLは,1998年に公開されたバージョン6.3から,日本語にも対応している。海外で開発されたソフトにありがちな「日本語を含むマルチバイト圏の言語が正しく扱えない」という問題に,早くから対処していたわけだ。

 このマルチバイト対応は,日本人開発者の石井達夫氏が行った。同氏はまた,雑誌や書籍,メーリング・リストなどのさまざまな媒体を通じた,日本語によるPostgreSQLの情報発信に貢献している。

(2)SQL文法の充実度が高い

 RDBMSのほとんとがデータベースの問い合わせ言語として「SQL」を採用している。SQLは国際標準化機構(ISO)やアメリカ規格協会(ANSI)で規格化されており,日本では日本規格協会(JIS)で定められた規格でもあることから,RDBMSの標準問い合わせ言語とみなせる。

 有償/無償を問わず主要なRDBMSのほとんどは,SQLを採用している。SQLを知っていれば,他のRDBMSでもその知識を流用できる。そのため,SQL文法の充実度が異種RDBMS間での移行のポイントになるケースが多い。

 PostgreSQLもSQLを採用している。具体的にはSQL92に準拠し,SQL99にも一部対応している。また,問い合わせクエリー内にさらに問い合わせクエリーが記述できる「サブクエリー」,データ間の整合性を自動的に保つ「外部キー」,データベース・サーバー内に関数を記述するプロシージャ言語「PL/pgSQL」などの機能が比較的早くから実装されている。他のオープンソースのRDBMSと比べると,機能の豊富さは際立っている。そのため,複数のテーブルを組み合わせて複雑なSQL文法を使いたいケースなどで多くの実績がある*2

(3)大規模向けの機能を備える

 オープンソースのRDBMSを選択する理由としてよくあるのは,「有償データベースを採用するほどのお金がない」ことだ。初期投資額を抑えて“スモール・スタート”したいWebシステムではよくある話である。こういった場合,コストのかからないオープンソースのRDBMSを選択せざるを得ない。ただ,ビジネスが成長してアクセス数が増えたときに,すぐ負荷に耐えられなくなってしまうようでは困る。安価ではありながらスケールアップに耐え得るRDBMSが求められるわけだ。

 PostgreSQLは最近,大規模システム向けの機能拡張がめざましい。データベースのデータを複数のディスクに分割して,ディスクI/Oの負荷軽減を図る「テーブル・スペース」や,1つのテーブルのデータ量が多くなると性能劣化が起きるため,テーブル内のレコードを擬似的に分割する「テーブル・パーティショニング」などの機能が既に実装されている。

(4)利用しやすいライセンス

 PostgreSQLでは,BSDライセンスが採用されている。BSDライセンスは,Linuxカーネルに代表されるGNU GPLに類似する。つまり,ソース・コードが公開されていて無償で利用できる点は同じだ。

 ただし,異なる点もある。GNU GPLでは,ソース・コードを改変して販売したりする場合には,改変後のソース・コードの公開が義務づけられる。BSDライセンスにはその義務はない。この違いは,ソース・コードを改変せずに利用する場合にはあまり影響がないだろう。しかし製品等に組み込むために改変が不可欠な場合などでは,大きな差異となる。

 また,BSDライセンスなら,PostgreSQLを改良したソフトのソース・コードを公開することなく,別の名前で販売できる。筆者が所属するSRA OSSでもこのライセンスを生かして,PostgreSQLを改良したものを「PowerGres」という名前で有償RDBMSとして販売している。

(5)有償サポートの選択肢が多い

 RDBMSは,多くのシステムの核になるソフトだ。そのため,企業で利用することを考えれば,サポートは重要である。PostgreSQLのサポート・サービスは,いくつかのベンダーが提供している。それらの中から,希望する内容に合致するサポート・サービスを受けるのがよいだろう。

PostgreSQLの利用事例