現在 PostgreSQL として知られる (また一時 Postgres95 と呼ばれていた) オブジェクトリレーショナルデータベース管理システムは、カリフォルニア大学バークレー校で書かれた POSTGRES というパッケージから派生しています。10 年以上にわたる開発の背景を持ち、PostgreSQL はどこでも入手できる最も進歩したオープンソースデータベースで、多版型同時実行制御 (MVCC: multiversion concurrency control) を提供し、ほとんどすべての SQL の構文をサポートし(副問い合わせ、トランザクション、ユーザー定義データ型とユーザ定義関数を含みます)、幅広い各種言語との連係が可能です(C、C++、Java、Perl、Tcl、Python を含みます)。
POSTGRES DBMS の実装は 1986 年に始まりました。当初のシステムの概念は The design of POSTGRES で発表され、最初のデータモデルの定義は The POSTGRES data model で紹介されました。当時のルールシステムの設計は The design of the POSTGRES rules system で説明されました。ストレージ管理の理論や構造は The design of the POSTGRES storage system で詳しく示されました。
Postgres はそれ以来いくつかの主要なリリースを重ねてきました。最初の「デモウェア」システムが 1987 年に使用可能になり、1988 年の ACM-SIGMOD コンファレンスで紹介されました。The implementation of POSTGRES で説明されているバージョン 1 は 1989 年 6 月に一部の外部ユーザーにリリースしました。 最初のルールシステムに対する批評の結果 (A commentary on the POSTGRES rules system) をもとにルールシステムは再設計 (On Rules, Procedures, Caching and Views in Database Systems) され、バージョン 2 が 1990 年 6 月に新しいルールシステムを実装してリリースされました。バージョン 3 は 1991 年に登場し、複数ストレージ管理機構、改善された問い合わせエクゼキュータ、書き直された書き換えルールシステムのサポートが追加されました。ほとんどの部分について、Postgres95 まで引き続いた各リリース(下記を参照)では移植性と信頼性に焦点をあてていました。
POSTGRES はさまざまな研究用、そして実際の業務アプリケーションの実装に使われてきています。 その中には、金融データ分析システム、ジェットエンジン性能監視パッケージ、小惑星追跡データベース、医療情報データベース、幾つかの地図情報処理システム (GIS) などがありました。POSTGRES はさらにいくつかの大学では教育用のツールとしても使われています。最後に、Illustra Information Technologies 社がコードを整理し商用化しました。 (同社は後に Informix 社に吸収合併され、現在は IBM 社が所有しています。POSTGRES は 1992 年末から始まった Sequoia 2000 科学計算プロジェクトの主要なデータ管理システムになっています。
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 に取って替わりました(サーバーに SQL を処理する機能が実装されました)。PostgreSQL になる以前副問い合わせはサポートされていませんでしたが(下記を参照)、Postgres95 ではユーザー定義 SQL 関数で模倣できました。集約は再実装されました。GROUP BY 問い合わせ句のサポートも追加されました。libpq インターフェイスは C 言語プログラムでも使えるようそのままになりました。
監視プログラムに加え、新しいプログラム(psql) が GNU の Readline を使って対話式 SQL 問い合わせのために用意されました。
新しいフロントエンドライブラリ、libpgtcl が Tcl ベースのクライアントをサポートしました。サンプルシェルの pgtclsh が Tcl と Postgres95 バックエンドとインターフェイスする新規 Tcl コマンドを提供しました。
ラージオブジェクトインターフェイスがオーバーホールされました。転置ラージオブジェクトは唯一のラージオブジェクト格納機構でした。(転置ファイルシステムは削除されました。)
インスタンスレベルのルールシステムが削除されました。ルールは書き換えルールとしてまだ利用できました。
正規の SQL の特徴を紹介する短いチュートリアルが Postgres95 のチュートリアルと共にソースコードと一緒に配布されました。
GNU make が (BSD makeの代わりに)ビルドに使われました。また、Postgres95 はパッチの当たっていないない GCC でコンパイルできました (double におけるデータの並び方が修正されました)。
1996 年になると "Postgres95" という名前が時代の試練に耐えられなくなったことが明らかになりました。そこで、オリジナルの POSTGRES と SQL の能力を持つもっと最近のバージョンとの関係を反映する、PostgreSQL という新しい名前を選びました。同時に、元々バークレー POSTGRES プロジェクトで始まった連番に戻す番号の 6.0 で始まるバージョン番号を設定しました。
Postgres95 開発での重点はバックエンドのコードに存在する問題点を特定し、原因を理解することにありました。PostgreSQL においては、保守作業を続けつつも、特徴や能力を強化することに重点が移りました。
主な PostgreSQL での機能強化点には以下のものがあります。
テーブルレベルのロックは多版型同時実行制御で置き換えられました。 この機構はだれかが書き込み動作を行っている時でも、読み込む人が整合性のあるデータを続けて読み込むことができるようにし、データベースが問い合わせ可能な状態にあれば pg_dump でホットバックアップを可能にします。
副問い合わせ、デフォルト値、制約、トリガといった重要なバックエンドの機能が実装されました。
主キー、引用符付き識別子、リテラル文字列強制データ型指定、型キャスト、2 進と16 進の整数入力を含む、追加的な SQL92 準拠の言語の機能が加えられました。
新しい幅広い日付/時刻データ型、追加の幾何データ型のサポートを含む組み込みデータ型が改善されました。
全体のバックエンドコードスピードが約 20〜40% 向上し、バックエンドの起動時間はバージョン 6.0 のリリースに比べると 80% 減少しました。