2000-03-31 05:27:42 +02:00
|
|
|
<!--
|
2000-12-22 22:51:58 +01:00
|
|
|
$Header: /cvsroot/pgsql/doc/src/sgml/history.sgml,v 1.12 2000/12/22 21:51:57 petere Exp $
|
2000-03-31 05:27:42 +02:00
|
|
|
-->
|
|
|
|
|
2000-09-29 22:21:34 +02:00
|
|
|
<sect1 id="history">
|
1999-06-23 08:12:31 +02:00
|
|
|
<title>A Short History of <productname>Postgres</productname></title>
|
1998-09-30 07:41:54 +02:00
|
|
|
|
1999-06-23 08:12:31 +02:00
|
|
|
<para>
|
|
|
|
The Object-Relational Database Management System now known as
|
|
|
|
<productname>PostgreSQL</productname> (and briefly called
|
|
|
|
<productname>Postgres95</productname>) is derived from the
|
|
|
|
<productname>Postgres</productname> package written at Berkeley.
|
|
|
|
With over a decade of
|
|
|
|
development behind it, <productname>PostgreSQL</productname>
|
|
|
|
is the most advanced open-source database available anywhere,
|
|
|
|
offering multi-version concurrency control, supporting almost
|
|
|
|
all SQL constructs (including subselects, transactions, and
|
|
|
|
user-defined types and functions), and having a wide range of
|
|
|
|
language bindings available (including C, C++, Java, perl, tcl, and python).
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>The Berkeley <productname>Postgres</productname> Project</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Implementation of the <productname>Postgres</productname>
|
|
|
|
<acronym>DBMS</acronym> began in 1986. The
|
|
|
|
initial concepts for the system were presented in
|
|
|
|
<xref endterm="STON86-full" linkend="STON86">
|
|
|
|
and the definition of the initial data model
|
|
|
|
appeared in
|
|
|
|
<xref endterm="ROWE87-full" linkend="ROWE87">.
|
|
|
|
The design of the rule system at
|
|
|
|
that time was described in
|
|
|
|
<xref endterm="STON87a-full" linkend="STON87a">.
|
|
|
|
The rationale
|
|
|
|
and architecture of the storage manager were detailed in
|
|
|
|
<xref endterm="STON87b-full" linkend="STON87b">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<productname>Postgres</productname> has undergone several major releases since
|
|
|
|
then. The first "demoware" system became operational
|
|
|
|
in 1987 and was shown at the 1988 <acronym>ACM-SIGMOD</acronym>
|
|
|
|
Conference. We released Version 1, described in
|
|
|
|
<xref endterm="STON90a-full" linkend="STON90a">,
|
|
|
|
to a few external users in June 1989. In response to a
|
|
|
|
critique of the first rule system
|
|
|
|
(<xref endterm="STON89-full" linkend="STON89">),
|
|
|
|
the rule
|
|
|
|
system was redesigned
|
|
|
|
(<xref endterm="STON90b-full" 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 rewrite rule system. For the most part,
|
|
|
|
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,
|
|
|
|
<ulink url="http://www.illustra.com/">Illustra Information Technologies</ulink>
|
|
|
|
(since merged into
|
|
|
|
<ulink url="http://www.informix.com/">Informix</ulink>)
|
|
|
|
picked up
|
|
|
|
the code and commercialized it.
|
|
|
|
<productname>Postgres</productname> became the primary data manager
|
|
|
|
for the
|
|
|
|
<ulink url="http://www.sdsc.edu/0/Parts_Collabs/S2K/s2k_home.html">Sequoia 2000</ulink>
|
|
|
|
scientific computing project in late 1992.
|
|
|
|
</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 project officially
|
|
|
|
ended with Version 4.2.
|
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title><productname>Postgres95</productname></title>
|
|
|
|
|
|
|
|
<para>
|
2000-12-22 22:51:58 +01:00
|
|
|
In 1994, Andrew Yu and Jolly Chen
|
1999-06-23 08:12:31 +02:00
|
|
|
added a SQL language interpreter to <productname>Postgres</productname>.
|
|
|
|
<productname>Postgres95</productname> was subsequently released to
|
1999-12-06 17:37:11 +01:00
|
|
|
the Web to find its own way in the world as an
|
|
|
|
open-source descendant of the original <productname>Postgres</productname>
|
1999-06-23 08:12:31 +02:00
|
|
|
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> v1.0.x ran about 30-50%
|
|
|
|
faster on the Wisconsin Benchmark compared to
|
|
|
|
<productname>Postgres</productname> v4.2.
|
|
|
|
Apart from bug fixes, these were the major enhancements:
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The query language <productname>Postquel</productname> 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. Aggregates were
|
|
|
|
re-implemented. Support for the GROUP BY query clause was also added.
|
|
|
|
The <filename>libpq</filename> interface remained
|
|
|
|
available for <acronym>C</acronym>
|
|
|
|
programs.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
In addition to the monitor program, a new program
|
|
|
|
(<application>psql</application>) was provided for interactive SQL queries
|
|
|
|
using <acronym>GNU</acronym> <filename>readline</filename>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
A new front-end library, <filename>libpgtcl</filename>,
|
|
|
|
supported <acronym>Tcl</acronym>-based clients. A sample shell,
|
|
|
|
pgtclsh, provided new Tcl commands to interface
|
|
|
|
<application>tcl</application>
|
|
|
|
programs with the <productname>Postgres95</productname> backend.
|
|
|
|
</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>
|
2000-05-02 22:02:03 +02:00
|
|
|
By 1996, it became clear that the name "Postgres95" would
|
1999-06-23 08:12:31 +02:00
|
|
|
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
|
|
|
|
<productname>Postgres</productname> Project.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The emphasis during development of <productname>Postgres95</productname>
|
|
|
|
was on identifying and understanding existing problems in the backend code.
|
|
|
|
With <productname>PostgreSQL</productname>,
|
|
|
|
the emphasis has shifted to augmenting features and capabilities, although
|
|
|
|
work continues in all areas.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Major enhancements in <productname>PostgreSQL</productname> include:
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Table-level locking has been replaced with multi-version concurrency control,
|
|
|
|
which allows readers to continue reading consistent data during writer activity
|
|
|
|
and enables hot backups from pg_dump while the database stays available for
|
|
|
|
queries.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Important backend features, including subselects, defaults,
|
|
|
|
constraints, and triggers, have been implemented.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Additional <acronym>SQL92</acronym>-compliant language features have been added,
|
2000-03-20 05:22:11 +01:00
|
|
|
including primary keys, quoted identifiers, literal string type coercion,
|
1999-06-23 08:12:31 +02:00
|
|
|
type casting, and binary and hexadecimal integer input.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Built-in types have been improved, including new wide-range date/time types
|
|
|
|
and additional geometric type support.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Overall backend code speed has been increased by approximately 20-40%,
|
2000-12-21 23:55:27 +01:00
|
|
|
and backend start-up time has decreased 80% since version 6.0 was released.
|
1999-06-23 08:12:31 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
1998-12-29 03:24:47 +01:00
|
|
|
</sect1>
|
1999-06-23 08:12:31 +02:00
|
|
|
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
|
|
Local variables:
|
2000-03-31 05:27:42 +02:00
|
|
|
mode:sgml
|
1999-06-23 08:12:31 +02:00
|
|
|
sgml-omittag:nil
|
|
|
|
sgml-shorttag:t
|
|
|
|
sgml-minimize-attributes:nil
|
|
|
|
sgml-always-quote-attributes:t
|
|
|
|
sgml-indent-step:1
|
|
|
|
sgml-indent-data:t
|
|
|
|
sgml-parent-document:nil
|
|
|
|
sgml-default-dtd-file:"./reference.ced"
|
|
|
|
sgml-exposed-tags:nil
|
2000-03-31 05:27:42 +02:00
|
|
|
sgml-local-catalogs:("/usr/lib/sgml/catalog")
|
1999-06-23 08:12:31 +02:00
|
|
|
sgml-local-ecat-files:nil
|
|
|
|
End:
|
|
|
|
-->
|