mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
Two links in the isn module documentation were pointing to tools which had been moved, resulting in 404 error responses. Update to the new URLs for the tools. The link to the Sequoia 2000 page in the history section was no longer working, and since the page is no longer available online update our link to point at the paper instead which is on a stable URL. These links exist in all versions of the documentation so backpatch to all supported branches. Author: Daniel Gustafsson <daniel@yesql.se> Reported-by: charukiewicz@protonmail.com Discussion: https://postgr.es/m/173679670185.705.8565555804465055355@wrigleys.postgresql.org Backpatch-through: 13
230 lines
8.6 KiB
Plaintext
230 lines
8.6 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 decades of
|
|
development behind it, <productname>PostgreSQL</productname> is now
|
|
the most advanced open-source database available anywhere.
|
|
</para>
|
|
|
|
<para>
|
|
Another take on the history presented here can be found in Dr. Joe
|
|
Hellerstein's paper <quote>Looking Back at Postgres</quote>
|
|
<xref linkend="hell18"/>.
|
|
</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="https://www.ibm.com/analytics/informix"><productname>Informix</productname></ulink>,
|
|
which is now owned by <ulink
|
|
url="https://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 Sequoia 2000 scientific computing project described in
|
|
<xref linkend="ston92"/>.
|
|
</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). (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.
|
|
</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</application> 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 id="history-postgresql">
|
|
<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
|
|
each <productname>PostgreSQL</productname> release since then
|
|
can be found at
|
|
<ulink url="https://www.postgresql.org/docs/release/">https://www.postgresql.org/docs/release/</ulink>.
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|