現在PostgreSQLとして知られている (またしばらくの間Postgres95と呼ばれていた) オブジェクトリレーショナルデータベース管理システムは バークレーで書かれたパッケージPostgres から派生しています。 その後 10年以上の開発で、PostgreSQL は どこでも入手できる最も先進的なオープンソースデータベースで、 MVCC(multi-version 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 Postgres Storage System. 記憶領域管理の構造理論は The Postgres Storage System に詳しく説明されていました。
それから Postgres はいくつかのメジャーリリースを経験してきました。 最初の "デモウェア" システムが 1987 年に使えるようになり、 1888 年の ACM-SIGMOD 会議でお目見えしました。 The Implementation of Postgres に説明されるバージョン 1 を、 1989 年 1 月に数人の外部ユーザにリリースしました。 最初のルールシステム (A Commentary on the Postgres Rules System) の批評に応えて、 ルールシステムは再度設計され (On Rules, Procedures, Caching and Views in Database Systems)、 新しいルールシステムとともにバージョン 2 が 1990 年 6 月にリリースされました。 複数保存領域管理、改善された問い合わせの実行、 書き直したリライトのルールシステムのサポートが追加された バージョン 3 が 1991 年に出されました。 それから Postgres95 (下記参照) までのリリースは、 大抵は移植性と信頼性に焦点が合わされていました。
Postgres は 多くの異なるや研究や製造のアプリケーションを実装するのに使われてきました。 これらには 財務データ分析システム、 ジェットエンジンのパフォーマンスの監視パッケージ、 惑星軌道観察データベース、 いくつかの地理情報システムなどが含まれています。 Postgresはまた いくつかの大学で教育ツールとしても使われてきました。 最終的には、Illustra Information Technologies (その後 Informix に合併されました) がコードを取り出し、商品化しました。 Postgres は 1992 年後半の科学コンピューティングプロジェクト Sequoia 2000 の基本データマネージャとなりました。
1993 年中に外部ユーザコミュニティのサイズは倍近くになりました。 プロトタイプのコードのメンテナンスとサポートは、 データベースの研究に当てるべき時間の多くを取っていくことは ますます明白となりました。 このサポート負担を軽減しようとする中で、 プロジェクトは公式的には バージョン 4.2 で終りを告げました。
1994 年、 Andrew Yu と Jolly Chen が SQL 言語のインタプリタを Postgres に加えました。 Postgres95 は続いて パブリックドメイン、オープンソースで、 オリジナルのPostgresバークレイコードの後継として、 独自の世界を見つけ出そうと、Web にリリースされました。
Postgres95 コードは完全に ANSI C であり、 そのサイズは 25% 切り落とされました。 多くの内部的な変更で、パフォーマンスとメンテナンス性が向上しました。 Postgres95 v1.0.x は Postgres v4.2 と比べて Winsconsin ベンチマークで 約 30-50% 速く動きました。 バグフィクスは別として、次のような主な機能拡張があります。
問い合わせ言語 Postquel は SQL (サーバに実装されました) に置き換えられました。 副問い合わせは PostgreSQL (下記参照) まで サポートされていませんでしたが、Postgres95 では ユーザ定義の SQL 関数によって疑似的に可能でした。 集約関数が再実装されました。 GROUP BY 句のサポートも加えられました。 libpq のインターフェイスは C プログラムのために残っています。
monitor プログラムに加えて、 GNU の readline を使い インタラクティブに SQL 問い合わせを行なう 新しいプログラム (psql) が提供されました。
新しいフロントエンドライブラリ libpgtcl が Tclベースのクライアントをサポートしました。 サンプルシェルの pgtclsh が tcl と Postgres95 バックエンドとを結ぶ 新しい Tcl コマンドと提供しました。
巨大オブジェクトインターフェイスがオーバーホールされました。 倒置巨大オブジェクト(Inversion large object)は巨大オブジェクトを格納する 唯一のメカニズムでした。(倒置(Inversion)ファイルシステムは削除されました。)
インスタンスレベルでのルールシステムが削除されました。 リールはリライトルールとしてまだ利用できます。
正規の SQL の特徴を紹介する短いチュートリアルが、 Postgres95 のものと共にソースコードで配布されました。
GNU make が(BSD makeの代わりに) ビルドに使われました。 また、Postgres95 はパッチを当てていない gcc (double の並びが修正されました)で コンパイルできました。
1996 年には、"Postgres95"という名前が時代を表すものに 基づかなくなったことが明らかになりました。 オリジナルのPostgres と SQL の能力をもつもっと最近のバージョンとの関係を反映する、 PostgreSQLという新しい名前を選びました。 同時に、元々Postgresプロジェクトで始まった シーケンスに戻す番号である 6.0 で始まるバージョンナンバリングを設定しました。
Postgres95の開発での重点は バックエンドのコード中にある既存の問題点を見極めて理解することにありました。 PostgreSQL では、 作業はすべてのエリアで続けますが、 重点は特徴や能力を増加させることにシフトしました。
主な PostgreSQL での機能拡張には以下のものがあります。
表レベルでのロッキングは MVCC (multi-version concurrency control) で 置き換えられました。 これは、ライターのアクティビティの間もリーダーが一貫したデータを 読み込み続けることができ、 データベースが問い合わせ可能な状態にあればpg_dump から ホットバックアップを可能とするものです。
副問い合わせ、デフォルト値、制約、トリガといった重要なバックエンドの特徴が 実装されました。
プライマリーキー、クオートされた記述子、強制型指定、型キャスト、 バイナリと16進整数入力を含む、追加的な SQL92 準拠の 言語の特徴が加えられました。
組み込み型が改善されて、新しい幅広い日付/時間型、追加的な幾何学型のサポート が含まれます。
全体のバックエンドコードスピードがおおよそ 20-40% 向上し、 バックエンドの起動時間は v6.0 のリリースから 80% 減少しました。