history.sgml
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:9k
- <sect1>
- <title>A Short History of <productname>Postgres</productname></title>
- <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>
- In 1994,
- <ulink url="mailto:ayu@informix.com">Andrew Yu</ulink>
- and
- <ulink url="http://http.cs.berkeley.edu/~jolly/">Jolly Chen</ulink>
- added a SQL language interpreter to <productname>Postgres</productname>.
- <productname>Postgres95</productname> was subsequently released to
- the Web to find its own way in the world as a public-domain,
- 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> 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>
- 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
- <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,
- including primary keys, quoted identifiers, literal string type coersion,
- 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%,
- and backend startup time has decreased 80% since v6.0 was released.
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
- </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:
- -->