
PostgreSQLで作るLinuxデータベース(1)
商用データベースに負けないPostgreSQL
無料で利用でき、機能も信頼性も一般の製品に劣らない、フリーのデータベース「PosgtreSQL」が、注目を集めている。この連載では、そのPostgreSQLを使ったシステム構築を解説していく。第1回はPostgreSQLの概要を紹介する。
宗近龍一郎(ハンドル名:まいパパ)
株式会社デジタルデザイン
Project BLUE
2000/9/21
| 今回のおもな内容 |
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が商用データベースに匹敵する機能を持っている、と述べましたが、機能によっては商用データベースよりも劣っている部分ももちろんあります。それらについては、のちほど詳しく解説します。
![]() |
| 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の技術セミナーなどが行われています。技術者の層もさらに厚みが増してきたと言えるでしょう。
PostgreSQLはUNIXやその互換OS上で動作します。Linuxや一部の商用UNIXでは、OSをインストールしたあと、PostgreSQLがすぐに使えるようなパッケージ形態で配布されている場合があります。しかし、このようなパッケージ形態で提供されていなくても、ユーザー自身でソースコードを手に入れ、それをコンパイルすることで使用できるようになります。
現在、動作が確認されている主なOSは以下の通りです。
|
- Linux
- FreeBSD
- NetBSD
- OpenBSD
- BSD/OS
- Solaris
- HP-UX
- AIX
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 についてよくある質問(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)
| 連載 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つの主なリレーショナルデータベースを紹介する。製品導入の際の参考にしてほしい |
|
|
TechTargetジャパン
- クライアントがアクセスできる範囲を制限する (2012/2/10)
今回は、サーバ上のファイルの扱いに関係する設定項目について解説します - 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

