Commit 66ef1b6e authored by Thomas G. Lockhart's avatar Thomas G. Lockhart

Minor changes to Fred Horsh's updates.

parent cb88fd19
<Sect1> <sect1>
<Title>A Short History of <ProductName>Postgres</ProductName></Title> <title>A Short History of <productname>Postgres</productname></title>
<Para> <para>
The Object-Relational Database Management System now known as The Object-Relational Database Management System now known as
<ProductName>PostgreSQL</ProductName> was originally called <productname>PostgreSQL</productname> (and briefly called
<ProductName>Postgres</ProductName>, and briefly called <productname>Postgres95</productname>) is derived from the
<ProductName>Postgres95</ProductName>. With over a decade of <productname>Postgres</productname> package written at Berkeley.
development behind it, <ProductName>PostgreSQL</ProductName> With over a decade of
is the most advanced open-source database available anywhere, development behind it, <productname>PostgreSQL</productname>
offering multi-version concurrency control and supporting almost is the most advanced open-source database available anywhere,
all SQL constructs, including subselects, transactions, and offering multi-version concurrency control, supporting almost
user-defined types and functions. all SQL constructs (including subselects, transactions, and
</Para> user-defined types and functions), and having a wide range of
language bindings available (including C, C++, Java, perl, tcl, and python).
<Sect2> </para>
<Title>The Berkeley <ProductName>Postgres</ProductName> Project</Title>
<sect2>
<Para> <title>The Berkeley <productname>Postgres</productname> Project</title>
Implementation of the <ProductName>Postgres</ProductName>
<Acronym>DBMS</Acronym> began in 1986. The <para>
Implementation of the <productname>Postgres</productname>
<acronym>DBMS</acronym> began in 1986. The
initial concepts for the system were presented in initial concepts for the system were presented in
<XRef LinkEnd="STON86" endterm="STON86-full"> <xref endterm="STON86-full" linkend="STON86">
and the definition of the initial data model and the definition of the initial data model
appeared in appeared in
<XRef LinkEnd="ROWE87" endterm="ROWE87-full">. <xref endterm="ROWE87-full" linkend="ROWE87">.
The design of the rule system at The design of the rule system at
that time was described in that time was described in
<XRef LinkEnd="STON87a" endterm="STON87a-full">. <xref endterm="STON87a-full" linkend="STON87a">.
The rationale The rationale
and architecture of the storage manager were detailed in and architecture of the storage manager were detailed in
<XRef LinkEnd="STON87b" endterm="STON87b-full">. <xref endterm="STON87b-full" linkend="STON87b">.
</Para> </para>
<Para> <para>
<ProductName>Postgres</ProductName> has undergone several major releases since <productname>Postgres</productname> has undergone several major releases since
then. The first "demoware" system became operational then. The first "demoware" system became operational
in 1987 and was shown at the 1988 <Acronym>ACM-SIGMOD</Acronym> in 1987 and was shown at the 1988 <acronym>ACM-SIGMOD</acronym>
Conference. We released Version 1, described in Conference. We released Version 1, described in
<XRef LinkEnd="STON90a" endterm="STON90a-full">, <xref endterm="STON90a-full" linkend="STON90a">,
to a few external users in June 1989. In response to a to a few external users in June 1989. In response to a
critique of the first rule system critique of the first rule system
(<XRef LinkEnd="STON89" endterm="STON89-full">), (<xref endterm="STON89-full" linkend="STON89">),
the rule the rule
system was redesigned system was redesigned
(<XRef LinkEnd="STON90b" endterm="STON90b-full">) (<xref endterm="STON90b-full" linkend="STON90b">)
and Version 2 was and Version 2 was
released in June 1990 with the new rule system. released in June 1990 with the new rule system.
Version 3 appeared in 1991 and added support for multiple Version 3 appeared in 1991 and added support for multiple
storage managers, an improved query executor, and a storage managers, an improved query executor, and a
rewritten rewrite rule system. For the most part, rewritten rewrite rule system. For the most part,
releases until <ProductName>Postgres95</ProductName> (see below) releases until <productname>Postgres95</productname> (see below)
focused on portability and reliability. focused on portability and reliability.
</Para> </para>
<Para> <para>
<ProductName>Postgres</ProductName> has been used to implement many different <productname>Postgres</productname> has been used
to implement many different
research and production applications. These include: a research and production applications. These include: a
financial data analysis system, a jet engine financial data analysis system, a jet engine
performance monitoring package, an asteroid tracking performance monitoring package, an asteroid tracking
database, a medical information database, and several database, a medical information database, and several
geographic information systems. geographic information systems.
<ProductName>Postgres</ProductName> has also been <productname>Postgres</productname> has also been
used as an educational tool at several universities. used as an educational tool at several universities.
Finally, Finally,
<Ulink url="http://www.illustra.com/">Illustra Information Technologies</Ulink> <ulink url="http://www.illustra.com/">Illustra Information Technologies</ulink>
(since merged into (since merged into
<Ulink url="http://www.informix.com/">Informix</Ulink>) <ulink url="http://www.informix.com/">Informix</ulink>)
picked up picked up
the code and commercialized it. the code and commercialized it.
<ProductName>Postgres</ProductName> became the primary data manager <productname>Postgres</productname> became the primary data manager
for the for the
<Ulink url="http://www.sdsc.edu/0/Parts_Collabs/S2K/s2k_home.html">Sequoia 2000</Ulink> <ulink url="http://www.sdsc.edu/0/Parts_Collabs/S2K/s2k_home.html">Sequoia 2000</ulink>
scientific computing project in late 1992. scientific computing project in late 1992.
Furthermore, the size of the external user community </para>
<para>
The size of the external user community
nearly doubled during 1993. It became increasingly nearly doubled during 1993. It became increasingly
obvious that maintenance of the prototype code and obvious that maintenance of the prototype code and
support was taking up large amounts of time that should support was taking up large amounts of time that should
have been devoted to database research. In an effort have been devoted to database research. In an effort
to reduce this support burden, the project officially to reduce this support burden, the project officially
ended with Version 4.2. ended with Version 4.2.
</Para> </para>
</Sect2> </sect2>
<Sect2> <sect2>
<Title><ProductName>Postgres95</ProductName></Title> <title><productname>Postgres95</productname></title>
<Para> <para>
In 1994, In 1994,
<ULink url="mailto:ayu@informix.com">Andrew Yu</ULink> <ulink url="mailto:ayu@informix.com">Andrew Yu</ulink>
and and
<ULink url="http://http.cs.berkeley.edu/~jolly/">Jolly Chen</ULink> <ulink url="http://http.cs.berkeley.edu/~jolly/">Jolly Chen</ulink>
added a SQL language interpreter to <ProductName>Postgres</ProductName>. added a SQL language interpreter to <productname>Postgres</productname>.
<ProductName>Postgres95</ProductName> was subsequently released to <productname>Postgres95</productname> was subsequently released to
the Web to find its own way in the world as a public-domain, the Web to find its own way in the world as a public-domain,
open source descendant of the original <ProductName>Postgres</ProductName> open source descendant of the original <productname>Postgres</productname>
Berkeley code. Berkeley code.
</Para> </para>
<Para> <para>
<ProductName>Postgres95</ProductName> code was completely <productname>Postgres95</productname> code was completely
ANSI C and trimmed in size by 25%. Many ANSI C and trimmed in size by 25%. Many
internal changes improved performance and maintainability. internal changes improved performance and maintainability.
<ProductName>Postgres95</ProductName> v1.0.x ran about 30-50% <productname>Postgres95</productname> v1.0.x ran about 30-50%
faster on the Wisconsin Benchmark compared to faster on the Wisconsin Benchmark compared to
<ProductName>Postgres</ProductName> v4.2. <productname>Postgres</productname> v4.2.
Apart from bug fixes, these were the major enhancements: Apart from bug fixes, these were the major enhancements:
<ItemizedList> <itemizedlist>
<ListItem> <listitem>
<Para> <para>
The query language <ProductName>Postquel</ProductName> was replaced with 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 <acronym>SQL</acronym> (implemented in the server).
could be imitated in <ProductName>Postgres95</ProductName> with user-defined Subqueries were not supported until
<Acronym>SQL</Acronym> functions. Aggregates were <productname>PostgreSQL</productname> (see below), but they
re-implemented. Support for ``GROUP BY'' was also added. could be imitated in <productname>Postgres95</productname> with user-defined
The <FileName>libpq</FileName> interface remained available for <Acronym>C</Acronym> <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. programs.
</Para> </para>
</ListItem> </listitem>
<ListItem>
<Para> <listitem>
In addition to the monitor program, a new program <para>
(<Application>psql</Application>) was provided for interactive SQL queries In addition to the monitor program, a new program
using <Acronym>GNU</Acronym> <FileName>readline</FileName>. (<application>psql</application>) was provided for interactive SQL queries
</Para> using <acronym>GNU</acronym> <filename>readline</filename>.
</ListItem> </para>
<ListItem> </listitem>
<Para>
A new front-end library, <FileName>libpgtcl</FileName>, <listitem>
supported <Acronym>Tcl</Acronym>-based clients. A sample shell, <para>
pgtclsh, provided new Tcl commands to interface <Application>tcl</Application> A new front-end library, <filename>libpgtcl</filename>,
programs with the <ProductName>Postgres95</ProductName> backend. supported <acronym>Tcl</acronym>-based clients. A sample shell,
</Para> pgtclsh, provided new Tcl commands to interface
</ListItem> <application>tcl</application>
<ListItem> programs with the <productname>Postgres95</productname> backend.
<Para> </para>
The large object interface was overhauled. The Inversion large objects were </listitem>
the only mechanism for storing large objects.
(The Inversion file system was removed.) <listitem>
</Para> <para>
</ListItem> The large object interface was overhauled. The Inversion large objects were
<ListItem> the only mechanism for storing large objects.
<Para> (The Inversion file system was removed.)
</para>
</listitem>
<listitem>
<para>
The instance-level rule system was removed. The instance-level rule system was removed.
Rules were still available as rewrite rules. Rules were still available as rewrite rules.
</Para> </para>
</ListItem> </listitem>
<ListItem>
<Para> <listitem>
A short tutorial introducing regular <Acronym>SQL</Acronym> features as <para>
well as those of <ProductName>Postgres95</ProductName> was A short tutorial introducing regular <acronym>SQL</acronym> features as
well as those of <productname>Postgres95</productname> was
distributed with the source code. distributed with the source code.
</Para> </para>
</ListItem> </listitem>
<ListItem>
<Para> <listitem>
<Acronym>GNU</Acronym> make (instead of <Acronym>BSD</Acronym> make) was used <para>
for the build. Also, <ProductName>Postgres95</ProductName> could be <acronym>GNU</acronym> make (instead of <acronym>BSD</acronym> make) was used
compiled with an unpatched <ProductName>gcc</ProductName> for the build. Also, <productname>Postgres95</productname> could be
(data alignment of doubles was fixed). compiled with an unpatched <productname>gcc</productname>
</Para> (data alignment of doubles was fixed).
</ListItem> </para>
</ItemizedList> </listitem>
</Para> </itemizedlist>
</Sect2> </para>
</sect2>
<Sect2>
<Title><ProductName>PostgreSQL</ProductName></Title> <sect2>
<title><productname>PostgreSQL</productname></title>
<Para>
By 1996, it became clear that the name <Quote>Postgres95</Quote> would <para>
not stand the test of time. We chose a new name, By 1996, it became clear that the name <quote>Postgres95</quote> would
<ProductName>PostgreSQL</ProductName>, to reflect the relationship not stand the test of time. We chose a new name,
between the original <ProductName>Postgres</ProductName> and the more <productname>PostgreSQL</productname>, to reflect the relationship
recent versions with <Acronym>SQL</Acronym> capability. At the same between the original <productname>Postgres</productname> and the more
time, we set the version numbering to start at 6.0, putting the recent versions with <acronym>SQL</acronym> capability. At the same
numbers back into the sequence originally begun by the time, we set the version numbering to start at 6.0, putting the
<ProductName>Postgres</ProductName> Project. numbers back into the sequence originally begun by the
</Para> <productname>Postgres</productname> Project.
</para>
<Para>
The emphasis during development of <ProductName>Postgres95</ProductName> <para>
was on identifying and understanding existing problems in the backend code. The emphasis during development of <productname>Postgres95</productname>
With <ProductName>PostgreSQL</ProductName>, was on identifying and understanding existing problems in the backend code.
the emphasis has shifted to augmenting features and capabilities, although With <productname>PostgreSQL</productname>,
work continues in all areas. the emphasis has shifted to augmenting features and capabilities, although
</Para> work continues in all areas.
</para>
<Para>
Major enhancements in <ProductName>PostgreSQL</ProductName> include: <para>
</Para> Major enhancements in <productname>PostgreSQL</productname> include:
</para>
<ItemizedList>
<ListItem> <itemizedlist>
<Para> <listitem>
Table-level locking has been replaced with multi-version concurrency control, <para>
which allows readers to continue reading consistent data during writer activity Table-level locking has been replaced with multi-version concurrency control,
and enables hot backups from pg_dump while the database stays available for which allows readers to continue reading consistent data during writer activity
queries. and enables hot backups from pg_dump while the database stays available for
</Para> queries.
</ListItem> </para>
<ListItem> </listitem>
<Para>
Important backend features, including subselects, defaults, <listitem>
constraints, and triggers, have been implemented. <para>
</Para> Important backend features, including subselects, defaults,
</ListItem> constraints, and triggers, have been implemented.
<ListItem> </para>
<Para> </listitem>
Additional <Acronym>SQL92</Acronym>-compliant language features have been added,
<listitem>
<para>
Additional <acronym>SQL92</acronym>-compliant language features have been added,
including primary keys, quoted identifiers, literal string type coersion, including primary keys, quoted identifiers, literal string type coersion,
type casting, and binary and hexadecimal integer input. type casting, and binary and hexadecimal integer input.
</Para> </para>
</ListItem> </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%,
and backend startup time has decreased 80% since v6.0 was released.
</Para>
</ListItem>
</ItemizedList>
</Sect2>
<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%,
and backend startup time has decreased 80% since v6.0 was released.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1> </sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
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
sgml-local-catalogs:"/usr/lib/sgml/catalog"
sgml-local-ecat-files:nil
End:
-->
<Sect1> <sect1>
<Title>Resources</Title> <title>Resources</title>
<Para> <para>
This manual set is organized into several parts: This manual set is organized into several parts:
</Para> </para>
<VariableList> <variablelist>
<VarListEntry> <varlistentry>
<Term>Tutorial</Term> <term>Tutorial</term>
<ListItem> <listitem>
<Para> <para>
An introduction for new users. Does not cover advanced features. An introduction for new users. Does not cover advanced features.
</Para> </para>
</ListItem> </listitem>
</VarListEntry> </varlistentry>
<VarListEntry> <varlistentry>
<Term>User's Guide</Term> <term>User's Guide</term>
<ListItem> <listitem>
<Para> <para>
General information for users, including available commands and data types. General information for users, including available commands and data types.
</Para> </para>
</ListItem> </listitem>
</VarListEntry> </varlistentry>
<VarListEntry> <varlistentry>
<Term>Programmer's Guide</Term> <term>Programmer's Guide</term>
<ListItem> <listitem>
<Para> <para>
Advanced information for application programmers. Topics include Advanced information for application programmers. Topics include
type and function extensibility, library interfaces, and application design issues. type and function extensibility, library interfaces,
</Para> and application design issues.
</ListItem> </para>
</VarListEntry> </listitem>
</varlistentry>
<VarListEntry>
<Term>Administrator's Guide</Term> <varlistentry>
<ListItem> <term>Administrator's Guide</term>
<Para> <listitem>
Installation and management information. List of supported machines. <para>
</Para> Installation and management information. List of supported machines.
</ListItem> </para>
</VarListEntry> </listitem>
</varlistentry>
<VarListEntry>
<Term>Developer's Guide</Term> <varlistentry>
<ListItem> <term>Developer's Guide</term>
<Para> <listitem>
Information for <ProductName>Postgres</ProductName> developers. This is intended <para>
for those who are contributing to the <ProductName>Postgres</ProductName> Information for <productname>Postgres</productname> developers.
project; application development information should appear in the This is intended for those who are contributing to the
<citetitle>Programmer's Guide</citetitle>. <productname>Postgres</productname> project;
Currently included in the <citetitle>Programmer's Guide</citetitle>. application development information should appear in the
</Para> <citetitle>Programmer's Guide</citetitle>.
</ListItem> Currently included in the <citetitle>Programmer's Guide</citetitle>.
</VarListEntry> </para>
</listitem>
<VarListEntry> </varlistentry>
<Term>Reference Manual</Term>
<ListItem> <varlistentry>
<Para> <term>Reference Manual</term>
Detailed reference information on command syntax. <listitem>
Currently included in the <citetitle>User's Guide</citetitle>. <para>
</Para> Detailed reference information on command syntax.
</ListItem> Currently included in the <citetitle>User's Guide</citetitle>.
</VarListEntry> </para>
</VariableList> </listitem>
</varlistentry>
<Para> </variablelist>
In addition to this manual set, there are other resources to help you with
<ProductName>Postgres</ProductName> installation and use: <para>
</Para> In addition to this manual set, there are other resources to help you with
<productname>Postgres</productname> installation and use:
<VariableList> </para>
<VarListEntry>
<Term>man pages</Term> <variablelist>
<ListItem> <varlistentry>
<Para> <term>man pages</term>
The man pages have general information on command syntax. <listitem>
</Para> <para>
</ListItem> The man pages have general information on command syntax.
</VarListEntry> </para>
</listitem>
<VarListEntry> </varlistentry>
<Term>FAQs</Term>
<ListItem> <varlistentry>
<Para> <term>FAQs</term>
The Frequently Asked Questions (FAQ) documents address both general issues <listitem>
and some platform-specific issues. <para>
</Para> The Frequently Asked Questions (FAQ) documents address both general issues
</ListItem> and some platform-specific issues.
</VarListEntry> </para>
</listitem>
<VarListEntry> </varlistentry>
<Term>READMEs</Term>
<ListItem> <varlistentry>
<Para> <term>READMEs</term>
README files are available for some contributed packages. <listitem>
</Para> <para>
</ListItem> README files are available for some contributed packages.
</VarListEntry> </para>
</listitem>
<VarListEntry> </varlistentry>
<Term>Web Site</Term>
<ListItem> <varlistentry>
<Para> <term>Web Site</term>
The <ULink url="postgresql.org"><ProductName>Postgres</ProductName></ULink> web site has some information <listitem>
not appearing in the distribution. There is a <ProductName>mhonarc</ProductName> catalog of mailing list traffic <para>
which is a rich resource for many topics. The
</Para> <ulink url="postgresql.org"><productname>Postgres</productname></ulink>
</ListItem> web site might have some information not appearing in the distribution.
</VarListEntry> There is a <productname>mhonarc</productname> catalog of mailing list traffic
which is a rich resource for many topics.
<VarListEntry> </para>
<Term>Mailing Lists</Term> </listitem>
<ListItem> </varlistentry>
<Para>
The <ULink url="http://www.PostgreSQL.ORG/mhonarc/pgsql-general/">pgsql-general</ULink> <varlistentry>
mailing list is a good place to have user questions answered. <term>Mailing Lists</term>
Other mailing lists are available; consult the Info Central section of the <listitem>
PostgreSQL web site for details. <para>
</Para> The
</ListItem> <ulink url="mailto:pgsql-general@postgresql.org">pgsql-general</ulink>
</VarListEntry> (<ulink url="http://www.PostgreSQL.ORG/mhonarc/pgsql-general/">archive</ulink>)
mailing list is a good place to have user questions answered.
<VarListEntry> Other mailing lists are available; consult the Info Central section of the
<Term>Yourself!</Term> PostgreSQL web site for details.
<ListItem> </para>
<Para> </listitem>
<ProductName>Postgres</ProductName> is an open source product. </varlistentry>
As such, it depends on the user community for
ongoing support. As you begin to use <ProductName>Postgres</ProductName>, <varlistentry>
you will rely on others <term>Yourself!</term>
for help, either through the documentation or through the mailing lists. <listitem>
Consider contributing your <para>
knowledge back. If you learn something which is not in the documentation, <productname>Postgres</productname> is an open source product.
write it up and contribute it. As such, it depends on the user community for ongoing support.
If you add features to the code, contribute it.</Para> As you begin to use <productname>Postgres</productname>,
you will rely on others for help, either through the
<Para> documentation or through the mailing lists.
Even those without a lot of experience can provide corrections and Consider contributing your knowledge back. If you learn something
minor changes in the documentation, and that is a good way to start. which is not in the documentation, write it up and contribute it.
The If you add features to the code, contribute it.
<ULink url="http://www.PostgreSQL.ORG/mhonarc/pgsql-docs/">pgsql-docs</ULink> </para>
mailing list is the place to get going.
</Para> <para>
</ListItem> Even those without a lot of experience can provide corrections and
</VarListEntry> minor changes in the documentation, and that is a good way to start.
</VariableList> The
<ulink url="mailto:pgsql-docs@postgresql.org">pgsql-docs</ulink>
</Sect1> (<ulink url="http://www.PostgreSQL.ORG/mhonarc/pgsql-docs/">archive</ulink>)
mailing list is the place to get going.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
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
sgml-local-catalogs:"/usr/lib/sgml/catalog"
sgml-local-ecat-files:nil
End:
-->
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment