Fix xslt_process() to ensure that it inserts a NULL terminator after the
[PostgreSQL.git] / doc / src / sgml / history.sgml
blobaf2678cc172ad1f02b4f4d43425f7a6bf11c08e6
1 <!-- $PostgreSQL$ -->
3 <sect1 id="history">
4 <title>A Brief History of <productname>PostgreSQL</productname></title>
6 <indexterm zone="history">
7 <primary>history</primary>
8 <secondary>of PostgreSQL</secondary>
9 </indexterm>
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>
20 <sect2 id="history-berkeley">
21 <title>The Berkeley <productname>POSTGRES</productname> Project</title>
23 <indexterm zone="history-berkeley">
24 <primary>POSTGRES</primary>
25 </indexterm>
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>
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>
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>
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>
88 <sect2 id="history-postgres95">
89 <title><productname>Postgres95</productname></title>
91 <indexterm zone="history-postgres95">
92 <primary>Postgres95</primary>
93 </indexterm>
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>
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:
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>
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>
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>
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>
155 <listitem>
156 <para>
157 The instance-level rule system was removed. Rules were still
158 available as rewrite rules.
159 </para>
160 </listitem>
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>
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>
184 <sect2>
185 <title><productname>PostgreSQL</productname></title>
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>
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>
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>
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>