2
$PostgreSQL: pgsql/doc/src/sgml/history.sgml,v 1.24 2005-01-08 01:44:05 tgl Exp $
6
<title>A Brief History of <productname>PostgreSQL</productname></title>
8
<indexterm zone="history">
9
<primary>history</primary>
10
<secondary>of PostgreSQL</secondary>
14
The object-relational database management system now known as
15
<productname>PostgreSQL</productname> is derived from the
16
<productname>POSTGRES</productname> package written at the
17
University of California at Berkeley. With over a decade of
18
development behind it, <productname>PostgreSQL</productname> is now
19
the most advanced open-source database available anywhere.
22
<sect2 id="history-berkeley">
23
<title>The Berkeley <productname>POSTGRES</productname> Project</title>
25
<indexterm zone="history-berkeley">
26
<primary>POSTGRES</primary>
30
The <productname>POSTGRES</productname> project, led by Professor
31
Michael Stonebraker, was sponsored by the Defense Advanced Research
32
Projects Agency (<acronym>DARPA</acronym>), the Army Research
33
Office (<acronym>ARO</acronym>), the National Science Foundation
34
(<acronym>NSF</acronym>), and ESL, Inc. The implementation of
35
<productname>POSTGRES</productname> began in 1986. The initial
36
concepts for the system were presented in <xref linkend="STON86">
37
and the definition of the initial data model appeared in <xref
38
linkend="ROWE87">. The design of the rule system at that time was
39
described in <xref linkend="STON87a">. The rationale and
40
architecture of the storage manager were detailed in <xref
45
<productname>POSTGRES</productname> has undergone several major
46
releases since then. The first <quote>demoware</quote> system
47
became operational in 1987 and was shown at the 1988
48
<acronym>ACM-SIGMOD</acronym> Conference. Version 1, described in
49
<xref linkend="STON90a">, was released to a few external users in
50
June 1989. In response to a critique of the first rule system
51
(<xref linkend="STON89">), the rule system was redesigned (<xref
52
linkend="STON90b">) and Version 2 was released in June 1990 with
53
the new rule system. Version 3 appeared in 1991 and added support
54
for multiple storage managers, an improved query executor, and a
55
rewritten rule system. For the most part, subsequent releases
56
until <productname>Postgres95</productname> (see below) focused on
57
portability and reliability.
61
<productname>POSTGRES</productname> has been used to implement many
62
different research and production applications. These include: a
63
financial data analysis system, a jet engine performance monitoring
64
package, an asteroid tracking database, a medical information
65
database, and several geographic information systems.
66
<productname>POSTGRES</productname> has also been used as an
67
educational tool at several universities. Finally, Illustra
68
Information Technologies (later merged into <ulink
69
url="http://www.informix.com/"><productname>Informix</productname></ulink>,
70
which is now owned by <ulink
71
url="http://www.ibm.com/">IBM</ulink>.) picked up the code and
72
commercialized it. In late 1992,
73
<productname>POSTGRES</productname> became the primary data manager
75
url="http://meteora.ucsd.edu/s2k/s2k_home.html">Sequoia
76
2000</ulink> scientific computing project.
80
The size of the external user community nearly doubled during 1993.
81
It became increasingly obvious that maintenance of the prototype
82
code and support was taking up large amounts of time that should
83
have been devoted to database research. In an effort to reduce
84
this support burden, the Berkeley
85
<productname>POSTGRES</productname> project officially ended with
90
<sect2 id="history-postgres95">
91
<title><productname>Postgres95</productname></title>
93
<indexterm zone="history-postgres95">
94
<primary>Postgres95</primary>
98
In 1994, Andrew Yu and Jolly Chen added a SQL language interpreter
99
to <productname>POSTGRES</productname>. Under a new name,
100
<productname>Postgres95</productname> was subsequently released to
101
the web to find its own way in the world as an open-source
102
descendant of the original <productname>POSTGRES</productname>
107
<productname>Postgres95</productname> code was completely ANSI C
108
and trimmed in size by 25%. Many internal changes improved
110
maintainability. <productname>Postgres95</productname> release
111
1.0.x ran about 30-50% faster on the Wisconsin Benchmark compared
112
to <productname>POSTGRES</productname>, Version 4.2. Apart from
113
bug fixes, the following were the major enhancements:
118
The query language PostQUEL was replaced with
119
<acronym>SQL</acronym> (implemented in the server). Subqueries
120
were not supported until <productname>PostgreSQL</productname>
121
(see below), but they could be imitated in
122
<productname>Postgres95</productname> with user-defined
123
<acronym>SQL</acronym> functions. Aggregate functions were
124
re-implemented. Support for the <literal>GROUP BY</literal>
125
query clause was also added.
132
(<application>psql</application>) was provided for interactive
133
SQL queries, which used <acronym>GNU</acronym>
134
<application>Readline</application>. This largely superseded
135
the old <application>monitor</> program.
141
A new front-end library, <filename>libpgtcl</filename>,
142
supported <acronym>Tcl</acronym>-based clients. A sample shell,
143
<command>pgtclsh</command>, provided new Tcl commands to
144
interface <application>Tcl</application> programs with the
145
<productname>Postgres95</productname> server.
151
The large-object interface was overhauled. The inversion large
152
objects were the only mechanism for storing large objects. (The
153
inversion file system was removed.)
159
The instance-level rule system was removed. Rules were still
160
available as rewrite rules.
166
A short tutorial introducing regular <acronym>SQL</acronym>
167
features as well as those of
168
<productname>Postgres95</productname> was distributed with the
175
<acronym>GNU</acronym> make (instead of <acronym>BSD</acronym>
176
make) was used for the build. Also,
177
<productname>Postgres95</productname> could be compiled with an
178
unpatched <productname>GCC</productname> (data alignment of
187
<title><productname>PostgreSQL</productname></title>
190
By 1996, it became clear that the name <quote>Postgres95</quote>
191
would not stand the test of time. We chose a new name,
192
<productname>PostgreSQL</productname>, to reflect the relationship
193
between the original <productname>POSTGRES</productname> and the
194
more recent versions with <acronym>SQL</acronym> capability. At
195
the same time, we set the version numbering to start at 6.0,
196
putting the numbers back into the sequence originally begun by the
197
Berkeley <productname>POSTGRES</productname> project.
201
The emphasis during development of
202
<productname>Postgres95</productname> was on identifying and
203
understanding existing problems in the server code. With
204
<productname>PostgreSQL</productname>, the emphasis has shifted to
205
augmenting features and capabilities, although work continues in
210
Details about what has happened in <productname>PostgreSQL</> since
211
then can be found in <xref linkend="release">.