現在PostgreSQLとして知られる(また 一時はPostgres95と呼ばれていた) オブジェクトリレーショナルデータベース管理システムは、カリフォルニア 大学バークレー校で書かれたPostgresという パッケージから派生しています。十年以上の開発により、 PostgreSQLはどこでも入手できる最も進歩したオープンソース データベースで、MVCC(multi-version concurrency control)を提供し、 ほとんど全ての SQL の構文(サブセレクト、トランザクション、そして ユーザ定義型と関数を含みます)をサポートし、幅広い言語バインド (C、C++、Java、 Perl、 Tcl、 Pythonを含みます)が可能です。
PostgresDBMS の実装は1986年に始まりました。当初のシステムの概念は The Design of Postgresで発表されました。 そして最初のデータモデルの定義はThe Postgres Data Modelで紹介されました。当時のルールシステムの設計は The Design of the Postgres Rules Systemで説明されました。 ストレッジマネージャの理論や構造は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は様々な異なるリサーチや製造 アプリケーションを実装するために使われてきています。その中には、 金融データ分析システム、ジェットエンジン性能の監視パッケージ、 小惑星観測データベース、医療情報データベース、そしていくつかの 地理学情報システムなどがありました。 Postgresは更にいくつかの大学においては 教育用のツールとして使われています。 最後に、Illustra Information Technologiesが (Informix と合併したため)コードをまとめて商業化しました。 PostgresはSequoia 20001992 年末の科学計算 プロジェクトの主要データマネージャになりました。
外部ユーザコミュニティのサイズは 1993 年に約 2 倍になりました。 データベースの調査に費されるべき時間がプロトタイプコードの保守 とサポートに取られていることが次第に明らかになってきました。 このサポートの重荷を減らすために、プロジェクトはバージョン 4.2 で公式に終りました。
1994 年にAndrew Yu と Jolly Chen がPostgres に SQL 言語インタプリタを追加しました。続いて Postgres95 がウェブ上でリリースされ、オリジナルPostgres バークレーコードのオープンソース子孫として世界への独自の道を歩み始め ました。
Postgres95のコードは完全に ANSI C で書かれており、25% が削除されました。多くの内部改造により 性能と保守性が改善されました。Postgres95 v1.0.x は、Postgresv4.2 に比べ Wisconsin Benchmark で 約 30-50% 速く動きました。バグ修正以外では、 下記の大きな改善が見られました。
問い合わせ言語Postquelが(サーバに実装 された)SQLに替えられました。Postgres 以前は副問い合わせはサポートされていませんでしたが、 (下記参照)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での拡張機能には下記の ものがあります。
表レベルでのロッキングは MVCC (multi-version concurrency control)で 置き換えられました。これは、書き込み動作の間も読み込む人が一貫した データを読み込み続けることができ、データベースが問い合わせ可能 な状態にあれば pg_dump からホットバックアップを可能とするものです。
副問い合わせ、デフォルト値、制約、トリガといった重要な バックエンドの特徴が実装されました。
主キー、引用された識別子、強制型指定、型キャスト、バイナリと 16進整数入力を含む、追加的なSQL92準拠 の言語の特徴が加えられました。
組み込み型が改善されて、新しく幅広い日付/時間型、追加的な 幾何学型のサポートが含まれます。
全体のバックエンドコードスピードがおおよそ20-40% 向上し、バックエンド の起動時間は v6.0 のリリースから 80% 減少しました。