【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷


PostgreSQLで作るLinuxデータベース(1)

商用データベースに負けないPostgreSQL

無料で利用でき、機能も信頼性も一般の製品に劣らない、フリーのデータベース「PosgtreSQL」が、注目を集めている。この連載では、そのPostgreSQLを使ったシステム構築を解説していく。第1回はPostgreSQLの概要を紹介する。

宗近龍一郎(ハンドル名:まいパパ)
株式会社デジタルデザイン
Project BLUE
2000/9/21

今回のおもな内容
フリーのデータベースPostgreSQL
PostgreSQLの歴史
主要なUNIX系OSで動作可能
PostgreSQLの特徴と欠点
アプリケーション開発インターフェイス

サポートについて
最新情報はコミュニティから得られる
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の歴史

http://www.PostgreSQL.org/

 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は以下の通りです。

コラム PostgreSQLの機能


 PostgreSQLが、Oracle8iやSybase、Informixなどの商用データベースに比べてどのような機能を持っているかは、気になるところだ。PostgreSQLのFAQのページ日本語版)では、簡潔にその疑問に答えているので紹介したい。

 本文にもあるようにPosgtreSQLはSQL92の拡張サブセットをサポートしている。FAQによると具体的には、

  • トランザクション
  • 副問い合わせ
  • トリガー
  • ビュー
  • 外部キーの参照整合性
  • 洗練されたロック機構

 など、大規模な商用データベースが持つ機能をほとんど備えている。さらに、

  • ユーザー定義型
  • 継承
  • マルチ-バージョン・コンテンション

など、商用データベースが持ち合わせない機能をいくつか持ち合わせている。ただし、

  • ロック・コンテンションを減らすための外部競合状態制御 (outer concurrency control)
  • 外部結合(outer joins)

は、まだ実装されておらず、作業中だという。外部結合がないのは多少残念だが、言葉通り商用データベースとほぼ同等の機能を備えていると言っていいだろう。

編集注:9月13日現在、日本語版のFAQには外部キーの参照整合性が未サポートと記述されている。このコラムは英語版のFAQを元にした。

  • Linux
  • FreeBSD
  • NetBSD
  • OpenBSD
  • BSD/OS
  • Solaris
  • HP-UX
  • AIX

■ 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で作るLinuxデータベース


 Linux Squareフォーラム データベース関連記事
連載:快速MySQLでデータベースアプリ!(全11回)
軽快な動作で知られるRDBMS、MySQLでDBアプリの構築を行う。MySQLのインストールに始まり、PerlやRubyなどのスクリプトでデータベースを操作する方法までを完全解説
連載:今から始める MySQL入門(連載中)
定番のLAMP(Linux+Apache+MySQL+PHP)構成でWebアプリケーション開発に挑戦! サンプルアプリの構築を進めながら、基礎知識や操作方法について詳しく解説する
連載:Oracleマイスター養成講座(全6回)
本連載では、Oracleの管理・チューニング方法を紹介していく。これからOracleを始める人、そしてOracleをより深く理解したい人のための、一歩踏み込んだ実用講座
連載:DB2マイスター養成講座(全7回)
本連載では、DB2 UDBの実践的な運用・管理方法を紹介していく。DB2を利用するうえで必要な知識を、実運用を前提にDB2のプロが解説
特集:エンタープライズ市場に向かうMySQL 5.0[前編]
MySQL 5.0の新機能をアルファ版でチェック
1月に公開された5.0アルファ版は大幅に拡張されており、エンタープライズ市場への進出を予感させる
特集:Linuxで動くリレーショナルデータベース・カタログ
データベースサーバのOSとしてLinuxを採用するケースが増えている。Linuxで動作する7つの主なリレーショナルデータベースを紹介する。製品導入の際の参考にしてほしい

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

ホワイトペーパーTechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)



- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?