現在PostgreSQLとして知られるオブジェクト指向リレーショナルデータベース管理システムは、カリフォルニア大学バークレイ校で作成されたPOSTGRESパッケージから派生しています。 20年以上にわたる開発の背景を持ち、PostgreSQLは現在最も先端的な、どこからでも入手可能なオープンソースデータベースです。
Michael Stonebraker教授率いるPOSTGRESプロジェクトにはその後援者としてDefense Advanced Research Projects Agency(DARPA)、National Science Foundation(NSF)、そしてESL, Inc.が名を連ねていました。 POSTGRESの実装は1986年から始まりました。 当初のシステムに対する概念は[ston86]で発表され、最初のデータモデルの定義は[rowe87]で紹介されました。 当時のルールシステムの設計は[ston87a]で説明されました。 ストレージ管理の理論や構造は[ston87b]で詳しく示されました。
POSTGRESはそれ以来いくつかの主要なリリースを重ねてきました。 最初の「デモウェア」システムが1987年に使用可能になり、1988年のACM-SIGMODコンファレンスで紹介されました。 [ston90a]で説明されているバージョン1は、1989年6月に一部の外部ユーザにリリースされ、最初のルールシステムに対する批評の結果([ston89])を基にルールシステムは再設計([ston90b])され、バージョン2が1990年6月に新しいルールシステムを実装してリリースされました。 バージョン3は1991年に登場し、複数ストレージ管理機構、改善された問い合わせエクゼキュータ、書き直しされたルールシステムのサポートが追加されました。 Postgres95まで引き続いた各リリース(下記を参照)のほとんどの部分では、移植性と信頼性に焦点を合わせていました。
POSTGRESは様々な研究用、そして実際の業務アプリケーションを実装するために使われてきています。 その中には、金融データ分析システム、ジェットエンジン性能分析パッケージ、小惑星追跡データベース、医療情報データベース、いくつかの地図情報処理システム(GIS)などがあります。 POSTGRESはさらに、いくつかの大学で教材としても使われています。 最後に、Illustra Information Technologies社(後に、 Informix社に吸収合併され、現在はIBM社所有)がコードを整理し商用化しました。 POSTGRESは1992年後半から始まったSequoia 2000 scientific computing projectの主要なデータ管理システムになりました。
1993年には外部ユーザコミュニティの大きさは約2倍に膨れました。 データベースの研究に費されるべき時間がプロトタイプコードの保守とサポートに取られていることが次第に明らかになってきました。 このサポートの重荷を減らすために、バークレイPOSTGRESプロジェクトはバージョン4.2をもって公式に終了しました。
1994年、Andrew YuとJolly ChenがPOSTGRESにSQL言語インタプリタを追加しました。 引き続いてPostgres95がWeb上でリリースされ、オリジナルのPOSTGRESバークレイコードのオープンソースによる後続として世界への独自の道を歩み始めました。
Postgres95のコードは全てANSI C準拠となるように書き直され、これまでに膨れ上がったコードの25%を整理することで身軽になりました。 多くの内部改造によって性能と保守性が改善されました。 Postgres95リリース1.0.xは、POSTGRESバージョン4.2に比べWisconsin Benchmarkで約30〜50%速く動作しました。 バグ修正以外では、下記の大きな改善がありました。
(サーバに実装された)SQLが問い合わせ言語PostQUELに取って代わりました。 (インタフェースライブラリlibpqはPostQUELにちなんで命名されました。) PostgreSQLになる以前は副問い合わせはサポートされていませんでしたが(下記を参照)、Postgres95ではユーザ定義SQL関数で模倣できました。 集約は再実装されました。 GROUP BY問い合わせ句のサポートも追加されました。
GNUのReadline
を使った新しいプログラム(psql)が、対話式SQL問い合わせのために用意されました。
これは古いmonitorプログラムにほぼ取って代わるものになりました。
新しいフロントエンドライブラリ、libpgtcl
がTclベースのクライアントをサポートしました。
サンプルシェルpgtclsh
はTclとPostgres95サーバとインタフェースをとる新規Tclコマンドを提供しました。
ラージオブジェクトインタフェースがオーバーホールされました。 転置ラージオブジェクトが唯一のラージオブジェクト格納機構でした (転置ファイルシステムは削除されました)。
インスタンスレベルのルールシステムが削除されました。 ルールは書き換えルールとしてまだ利用できました。
標準SQLの機能やPostgres95の機能を紹介したチュートリアルがソースコードとともに配布されました。
GNU makeが(BSD makeの代わりに)構築に使われました。 また、Postgres95はパッチの当たっていないGCCでコンパイルできました (doubleにおけるデータ整列が修正されたおかげです)。
1996年になると「Postgres95」という名前が時代の試練に耐えられなくなったことが明らかになりました。 そこで、オリジナルのPOSTGRESとSQLの能力を持つ、より最近のバージョンとの関係を反映する、PostgreSQLという新しい名前を選びました。 同時に、元々バークレイPOSTGRESプロジェクトで始まった連番に戻す番号の6.0で始まるバージョン番号を設定しました。
歴史的な理由か発音しやすいためか、多くの人々はPostgreSQLを「Postgres」と参照しつづけています。 (いまではすべて大文字と記載することは稀です。) こうした使い方は愛称や別名として広く受け入れられています。
Postgres95開発で重視されたのは、サーバのコードに内在する問題点を特定し、原因を理解することでした。 PostgreSQLにおいては、全ての分野に目を留めているとしても、保守作業を続けつつ特徴や能力を強化することに重点が移りました。
その後PostgreSQLがたどった足跡の詳細は付録E リリースノートを参照してください。