]> granicus.if.org Git - postgresql/blob - doc/src/sgml/history.sgml
9bd5c22d8edc4804e74bfcd5a63d95f01fbd2316
[postgresql] / doc / src / sgml / history.sgml
1 <!-- doc/src/sgml/history.sgml -->
2
3 <sect1 id="history">
4  <title>A Brief History of <productname>PostgreSQL</productname></title>
5
6  <indexterm zone="history">
7   <primary>history</primary>
8   <secondary>of PostgreSQL</secondary>
9  </indexterm>
10
11  <para>
12   The object-relational database management system now known as
13   <productname>PostgreSQL</productname> is derived from the
14   <productname>POSTGRES</productname> package written at the
15   University of California at Berkeley.  With over two decades of
16   development behind it, <productname>PostgreSQL</productname> is now
17   the most advanced open-source database available anywhere.
18  </para>
19
20  <sect2 id="history-berkeley">
21   <title>The Berkeley <productname>POSTGRES</productname> Project</title>
22
23   <indexterm zone="history-berkeley">
24    <primary>POSTGRES</primary>
25   </indexterm>
26
27   <para>
28    The <productname>POSTGRES</productname> project, led by Professor
29    Michael Stonebraker, was sponsored by the Defense Advanced Research
30    Projects Agency (<acronym>DARPA</acronym>), the Army Research
31    Office (<acronym>ARO</acronym>), the National Science Foundation
32    (<acronym>NSF</acronym>), and ESL, Inc.  The implementation of
33    <productname>POSTGRES</productname> began in 1986.  The initial
34    concepts for the system were presented in <xref linkend="STON86">,
35    and the definition of the initial data model appeared in <xref
36    linkend="ROWE87">.  The design of the rule system at that time was
37    described in <xref linkend="STON87a">.  The rationale and
38    architecture of the storage manager were detailed in <xref
39    linkend="STON87b">.
40   </para>
41
42   <para>
43    <productname>POSTGRES</productname> has undergone several major
44    releases since then.  The first <quote>demoware</quote> system
45    became operational in 1987 and was shown at the 1988
46    <acronym>ACM-SIGMOD</acronym> Conference.  Version 1, described in
47    <xref linkend="STON90a">, was released to a few external users in
48    June 1989.  In response to a critique of the first rule system
49    (<xref linkend="STON89">), the rule system was redesigned (<xref
50    linkend="STON90b">), and Version 2 was released in June 1990 with
51    the new rule system.  Version 3 appeared in 1991 and added support
52    for multiple storage managers, an improved query executor, and a
53    rewritten rule system.  For the most part, subsequent releases
54    until <productname>Postgres95</productname> (see below) focused on
55    portability and reliability.
56   </para>
57
58   <para>
59    <productname>POSTGRES</productname> has been used to implement many
60    different research and production applications.  These include: a
61    financial data analysis system, a jet engine performance monitoring
62    package, an asteroid tracking database, a medical information
63    database, and several geographic information systems.
64    <productname>POSTGRES</productname> has also been used as an
65    educational tool at several universities.  Finally, Illustra
66    Information Technologies (later merged into
67    <ulink url="http://www.informix.com/"><productname>Informix</productname></ulink>,
68    which is now owned by <ulink
69    url="http://www.ibm.com/">IBM</ulink>) picked up the code and
70    commercialized it.  In late 1992,
71    <productname>POSTGRES</productname> became the primary data manager
72    for the
73    <ulink url="http://meteora.ucsd.edu/s2k/s2k_home.html">
74    Sequoia 2000 scientific computing project</ulink>.
75   </para>
76
77   <para>
78    The size of the external user community nearly doubled during 1993.
79    It became increasingly obvious that maintenance of the prototype
80    code and support was taking up large amounts of time that should
81    have been devoted to database research.  In an effort to reduce
82    this support burden, the Berkeley
83    <productname>POSTGRES</productname> project officially ended with
84    Version 4.2.
85   </para>
86  </sect2>
87
88  <sect2 id="history-postgres95">
89   <title><productname>Postgres95</productname></title>
90
91   <indexterm zone="history-postgres95">
92    <primary>Postgres95</primary>
93   </indexterm>
94
95   <para>
96    In 1994, Andrew Yu and Jolly Chen added an SQL language interpreter
97    to <productname>POSTGRES</productname>.  Under a new name,
98    <productname>Postgres95</productname> was subsequently released to
99    the web to find its own way in the world as an open-source
100    descendant of the original <productname>POSTGRES</productname>
101    Berkeley code.
102   </para>
103
104   <para>
105    <productname>Postgres95</productname> code was completely ANSI C
106    and trimmed in size by 25%. Many internal changes improved
107    performance and
108    maintainability. <productname>Postgres95</productname> release
109    1.0.x ran about 30-50% faster on the Wisconsin Benchmark compared
110    to <productname>POSTGRES</productname>, Version 4.2.  Apart from
111    bug fixes, the following were the major enhancements:
112
113    <itemizedlist>
114     <listitem>
115      <para>
116       The query language PostQUEL was replaced with
117       <acronym>SQL</acronym> (implemented in the server).  Subqueries
118       were not supported until <productname>PostgreSQL</productname>
119       (see below), but they could be imitated in
120       <productname>Postgres95</productname> with user-defined
121       <acronym>SQL</acronym> functions. Aggregate functions were
122       re-implemented.  Support for the <literal>GROUP BY</literal>
123       query clause was also added.
124      </para>
125     </listitem>
126
127     <listitem>
128      <para>
129       A new program
130       (<application>psql</application>) was provided for interactive
131       SQL queries, which used <acronym>GNU</acronym>
132       <application>Readline</application>.  This largely superseded
133       the old <application>monitor</> program.
134      </para>
135     </listitem>
136
137     <listitem>
138      <para>
139       A new front-end library, <filename>libpgtcl</filename>,
140       supported <acronym>Tcl</acronym>-based clients.  A sample shell,
141       <command>pgtclsh</command>, provided new Tcl commands to
142       interface <application>Tcl</application> programs with the
143       <productname>Postgres95</productname> server.
144      </para>
145     </listitem>
146
147     <listitem>
148      <para>
149       The large-object interface was overhauled. The inversion large
150       objects were the only mechanism for storing large objects.  (The
151       inversion file system was removed.)
152      </para>
153     </listitem>
154
155     <listitem>
156      <para>
157       The instance-level rule system was removed.  Rules were still
158       available as rewrite rules.
159      </para>
160     </listitem>
161
162     <listitem>
163      <para>
164       A short tutorial introducing regular <acronym>SQL</acronym>
165       features as well as those of
166       <productname>Postgres95</productname> was distributed with the
167       source code
168      </para>
169     </listitem>
170
171     <listitem>
172      <para>
173       <acronym>GNU</acronym> make (instead of <acronym>BSD</acronym>
174       make) was used for the build.  Also,
175       <productname>Postgres95</productname> could be compiled with an
176       unpatched <productname>GCC</productname> (data alignment of
177       doubles was fixed).
178      </para>
179     </listitem>
180    </itemizedlist>
181   </para>
182  </sect2>
183
184  <sect2>
185   <title><productname>PostgreSQL</productname></title>
186
187   <para>
188    By 1996, it became clear that the name <quote>Postgres95</quote>
189    would not stand the test of time. We chose a new name,
190    <productname>PostgreSQL</productname>, to reflect the relationship
191    between the original <productname>POSTGRES</productname> and the
192    more recent versions with <acronym>SQL</acronym> capability.  At
193    the same time, we set the version numbering to start at 6.0,
194    putting the numbers back into the sequence originally begun by the
195    Berkeley <productname>POSTGRES</productname> project.
196   </para>
197
198   <para>
199    Many people continue to refer to
200    <productname>PostgreSQL</productname> as <quote>Postgres</quote>
201    (now rarely in all capital letters) because of tradition or because
202    it is easier to pronounce.  This usage is widely accepted as a
203    nickname or alias.
204   </para>
205
206   <para>
207    The emphasis during development of
208    <productname>Postgres95</productname> was on identifying and
209    understanding existing problems in the server code.  With
210    <productname>PostgreSQL</productname>, the emphasis has shifted to
211    augmenting features and capabilities, although work continues in
212    all areas.
213   </para>
214
215   <para>
216    Details about what has happened in <productname>PostgreSQL</> since
217    then can be found in <xref linkend="release">.
218   </para>
219  </sect2>
220 </sect1>