mirror of
https://github.com/postgres/postgres.git
synced 2025-05-28 05:21:27 +03:00
221 lines
8.2 KiB
Plaintext
221 lines
8.2 KiB
Plaintext
<!-- doc/src/sgml/history.sgml -->
|
|
|
|
<sect1 id="history">
|
|
<title>A Brief History of <productname>PostgreSQL</productname></title>
|
|
|
|
<indexterm zone="history">
|
|
<primary>history</primary>
|
|
<secondary>of PostgreSQL</secondary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
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.
|
|
</para>
|
|
|
|
<sect2 id="history-berkeley">
|
|
<title>The Berkeley <productname>POSTGRES</productname> Project</title>
|
|
|
|
<indexterm zone="history-berkeley">
|
|
<primary>POSTGRES</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
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">.
|
|
</para>
|
|
|
|
<para>
|
|
<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.
|
|
</para>
|
|
|
|
<para>
|
|
<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>.
|
|
</para>
|
|
|
|
<para>
|
|
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.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="history-postgres95">
|
|
<title><productname>Postgres95</productname></title>
|
|
|
|
<indexterm zone="history-postgres95">
|
|
<primary>Postgres95</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
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.
|
|
</para>
|
|
|
|
<para>
|
|
<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:
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
The query language PostQUEL was replaced with
|
|
<acronym>SQL</acronym> (implemented in the server). 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.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
The large-object interface was overhauled. The inversion large
|
|
objects were the only mechanism for storing large objects. (The
|
|
inversion file system was removed.)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
The instance-level rule system was removed. Rules were still
|
|
available as rewrite rules.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
A short tutorial introducing regular <acronym>SQL</acronym>
|
|
features as well as those of
|
|
<productname>Postgres95</productname> was distributed with the
|
|
source code
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<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).
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><productname>PostgreSQL</productname></title>
|
|
|
|
<para>
|
|
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.
|
|
</para>
|
|
|
|
<para>
|
|
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.
|
|
</para>
|
|
|
|
<para>
|
|
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.
|
|
</para>
|
|
|
|
<para>
|
|
Details about what has happened in <productname>PostgreSQL</> since
|
|
then can be found in <xref linkend="release">.
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|