2. PostgreSQL小史

<title>A Brief History of <productname>PostgreSQL</productname></title>

The object-relational database management system now known as <productname>PostgreSQL</productname> is derived from the <productname>POSTGRES</productname> package written at the University of California at Berkeley. With over two decades of development behind it, <productname>PostgreSQL</productname> is now the most advanced open-source database available anywhere. 現在PostgreSQLとして知られるオブジェクト指向リレーショナルデータベース管理システムは、カリフォルニア大学バークレイ校で作成されたPOSTGRESパッケージから派生しています。 20年以上にわたる開発の背景を持ち、PostgreSQLは現在最も先端的な、どこからでも入手可能なオープンソースデータベースです。

2.1. バークレイ校POSTGRESプロジェクト

<title>The Berkeley <productname>POSTGRES</productname> Project</title>

The <productname>POSTGRES</productname> project, led by Professor Michael Stonebraker, was sponsored by the Defense Advanced Research Projects Agency (<acronym>DARPA</acronym>), the Army Research Office (<acronym>ARO</acronym>), the National Science Foundation (<acronym>NSF</acronym>), and ESL, Inc. The implementation of <productname>POSTGRES</productname> began in 1986. The initial concepts for the system were presented in <xref linkend="STON86">, and the definition of the initial data model appeared in <xref linkend="ROWE87">. The design of the rule system at that time was described in <xref linkend="STON87a">. The rationale and architecture of the storage manager were detailed in <xref linkend="STON87b">. Michael Stonebraker教授率いるPOSTGRESプロジェクトにはその後援者としてDefense Advanced Research Projects Agency(DARPA)、National Science Foundation(NSF)、そしてESL, Inc.が名を連ねていました。 POSTGRESの実装は1986年から始まりました。 当初のシステムに対する概念は[ston86]で発表され、最初のデータモデルの定義は[rowe87]で紹介されました。 当時のルールシステムの設計は[ston87a]で説明されました。 ストレージ管理の理論や構造は[ston87b]で詳しく示されました。

<productname>POSTGRES</productname> has undergone several major releases since then. The first <quote>demoware</quote> system became operational in 1987 and was shown at the 1988 <acronym>ACM-SIGMOD</acronym> Conference. Version 1, described in <xref linkend="STON90a">, was released to a few external users in June 1989. In response to a critique of the first rule system (<xref linkend="STON89">), the rule system was redesigned (<xref linkend="STON90b">), and Version 2 was released in June 1990 with the new rule system. Version 3 appeared in 1991 and added support for multiple storage managers, an improved query executor, and a rewritten rule system. For the most part, subsequent releases until <productname>Postgres95</productname> (see below) focused on portability and reliability. POSTGRESはそれ以来いくつかの主要なリリースを重ねてきました。 最初のデモウェアシステムが1987年に使用可能になり、1988年のACM-SIGMODコンファレンスで紹介されました。 [ston90a]で説明されているバージョン1は、1989年6月に一部の外部ユーザにリリースされ、最初のルールシステムに対する批評の結果([ston89])を基にルールシステムは再設計([ston90b])され、バージョン2が1990年6月に新しいルールシステムを実装してリリースされました。 バージョン3は1991年に登場し、複数ストレージ管理機構、改善された問い合わせエクゼキュータ、書き直しされたルールシステムのサポートが追加されました。 Postgres95まで引き続いた各リリース(下記を参照)のほとんどの部分では、移植性と信頼性に焦点を合わせていました。

<productname>POSTGRES</productname> has been used to implement many different research and production applications. These include: a financial data analysis system, a jet engine performance monitoring package, an asteroid tracking database, a medical information database, and several geographic information systems. <productname>POSTGRES</productname> has also been used as an educational tool at several universities. Finally, Illustra Information Technologies (later merged into <ulink url="http://www.informix.com/"><productname>Informix</productname></ulink>, which is now owned by <ulink url="http://www.ibm.com/">IBM</ulink>) picked up the code and commercialized it. In late 1992, <productname>POSTGRES</productname> became the primary data manager for the <ulink url="http://meteora.ucsd.edu/s2k/s2k_home.html"> Sequoia 2000 scientific computing project</ulink>. POSTGRESは様々な研究用、そして実際の業務アプリケーションを実装するために使われてきています。 その中には、金融データ分析システム、ジェットエンジン性能分析パッケージ、小惑星追跡データベース、医療情報データベース、いくつかの地図情報処理システム(GIS)などがあります。 POSTGRESはさらに、いくつかの大学で教材としても使われています。 最後に、Illustra Information Technologies社(後に、 Informix社に吸収合併され、現在はIBM社所有)がコードを整理し商用化しました。 POSTGRESは1992年後半から始まったSequoia 2000 scientific computing projectの主要なデータ管理システムになりました。

The size of the external user community nearly doubled during 1993. It became increasingly obvious that maintenance of the prototype code and support was taking up large amounts of time that should have been devoted to database research. In an effort to reduce this support burden, the Berkeley <productname>POSTGRES</productname> project officially ended with Version 4.2. 1993年には外部ユーザコミュニティの大きさは約2倍に膨れました。 データベースの研究に費されるべき時間がプロトタイプコードの保守とサポートに取られていることが次第に明らかになってきました。 このサポートの重荷を減らすために、バークレイPOSTGRESプロジェクトはバージョン4.2をもって公式に終了しました。

2.2. Postgres95

In 1994, Andrew Yu and Jolly Chen added an SQL language interpreter to <productname>POSTGRES</productname>. Under a new name, <productname>Postgres95</productname> was subsequently released to the web to find its own way in the world as an open-source descendant of the original <productname>POSTGRES</productname> Berkeley code. 1994年、Andrew YuとJolly ChenがPOSTGRESにSQL言語インタプリタを追加しました。 引き続いてPostgres95がWeb上でリリースされ、オリジナルのPOSTGRESバークレイコードのオープンソースによる後続として世界への独自の道を歩み始めました。

<productname>Postgres95</productname> code was completely ANSI C and trimmed in size by 25%. Many internal changes improved performance and maintainability. <productname>Postgres95</productname> release 1.0.x ran about 30-50% faster on the Wisconsin Benchmark compared to <productname>POSTGRES</productname>, Version 4.2. Apart from bug fixes, the following were the major enhancements: Postgres95のコードは全てANSI C準拠となるように書き直され、これまでに膨れ上がったコードの25%を整理することで身軽になりました。 多くの内部改造によって性能と保守性が改善されました。 Postgres95リリース1.0.xは、POSTGRESバージョン4.2に比べWisconsin Benchmarkで約30〜50%速く動作しました。 バグ修正以外では、下記の大きな改善がありました。

  • The query language PostQUEL was replaced with <acronym>SQL</acronym> (implemented in the server). (Interface library <link linkend="libpq">libpq</link> was named after PostQUEL.) Subqueries were not supported until <productname>PostgreSQL</productname> (see below), but they could be imitated in <productname>Postgres95</productname> with user-defined <acronym>SQL</acronym> functions. Aggregate functions were re-implemented. Support for the <literal>GROUP BY</literal> query clause was also added. (サーバに実装された)SQLが問い合わせ言語PostQUELに取って代わりました。 (インタフェースライブラリlibpqはPostQUELにちなんで命名されました。) PostgreSQLになる以前は副問い合わせはサポートされていませんでしたが(下記を参照)、Postgres95ではユーザ定義SQL関数で模倣できました。 集約は再実装されました。 GROUP BY問い合わせ句のサポートも追加されました。

  • A new program (<application>psql</application>) was provided for interactive SQL queries, which used <acronym>GNU</acronym> <application>Readline</application>. This largely superseded the old <application>monitor</> program. GNUReadlineを使った新しいプログラム(psql)が、対話式SQL問い合わせのために用意されました。 これは古いmonitorプログラムにほぼ取って代わるものになりました。

  • A new front-end library, <filename>libpgtcl</filename>, supported <acronym>Tcl</acronym>-based clients. A sample shell, <command>pgtclsh</command>, provided new Tcl commands to interface <application>Tcl</application> programs with the <productname>Postgres95</productname> server. 新しいフロントエンドライブラリ、libpgtclTclベースのクライアントをサポートしました。 サンプルシェルpgtclshTclPostgres95サーバとインタフェースをとる新規Tclコマンドを提供しました。

  • The large-object interface was overhauled. The inversion large objects were the only mechanism for storing large objects. (The inversion file system was removed.) ラージオブジェクトインタフェースがオーバーホールされました。 転置ラージオブジェクトが唯一のラージオブジェクト格納機構でした (転置ファイルシステムは削除されました)。

  • The instance-level rule system was removed. Rules were still available as rewrite rules. インスタンスレベルのルールシステムが削除されました。 ルールは書き換えルールとしてまだ利用できました。

  • A short tutorial introducing regular <acronym>SQL</acronym> features as well as those of <productname>Postgres95</productname> was distributed with the source code 標準SQLの機能やPostgres95の機能を紹介したチュートリアルがソースコードとともに配布されました。

  • <acronym>GNU</acronym> make (instead of <acronym>BSD</acronym> make) was used for the build. Also, <productname>Postgres95</productname> could be compiled with an unpatched <productname>GCC</productname> (data alignment of doubles was fixed). GNU makeが(BSD makeの代わりに)構築に使われました。 また、Postgres95はパッチの当たっていないGCCでコンパイルできました (doubleにおけるデータ整列が修正されたおかげです)。

2.3. PostgreSQL

By 1996, it became clear that the name <quote>Postgres95</quote> would not stand the test of time. We chose a new name, <productname>PostgreSQL</productname>, to reflect the relationship between the original <productname>POSTGRES</productname> and the more recent versions with <acronym>SQL</acronym> capability. At the same time, we set the version numbering to start at 6.0, putting the numbers back into the sequence originally begun by the Berkeley <productname>POSTGRES</productname> project. 1996年になるとPostgres95という名前が時代の試練に耐えられなくなったことが明らかになりました。 そこで、オリジナルのPOSTGRESSQLの能力を持つ、より最近のバージョンとの関係を反映する、PostgreSQLという新しい名前を選びました。 同時に、元々バークレイPOSTGRESプロジェクトで始まった連番に戻す番号の6.0で始まるバージョン番号を設定しました。

Many people continue to refer to <productname>PostgreSQL</productname> as <quote>Postgres</quote> (now rarely in all capital letters) because of tradition or because it is easier to pronounce. This usage is widely accepted as a nickname or alias. 歴史的な理由か発音しやすいためか、多くの人々はPostgreSQLPostgresと参照しつづけています。 (いまではすべて大文字と記載することは稀です。) こうした使い方は愛称や別名として広く受け入れられています。

The emphasis during development of <productname>Postgres95</productname> was on identifying and understanding existing problems in the server code. With <productname>PostgreSQL</productname>, the emphasis has shifted to augmenting features and capabilities, although work continues in all areas. Postgres95開発で重視されたのは、サーバのコードに内在する問題点を特定し、原因を理解することでした。 PostgreSQLにおいては、全ての分野に目を留めているとしても、保守作業を続けつつ特徴や能力を強化することに重点が移りました。

Details about what has happened in <productname>PostgreSQL</> since then can be found in <xref linkend="release">. その後PostgreSQLがたどった足跡の詳細は付録Eを参照してください。