mirror of https://github.com/postgres/postgres
Some suggestions to clarify the current status of PostgreSQL. Patch
attached. Fred Horch
This commit is contained in:
parent
1f2c6f4f48
commit
8baa8fcf46
|
@ -1,6 +1,18 @@
|
||||||
<Sect1>
|
<Sect1>
|
||||||
<Title>A Short History of <ProductName>Postgres</ProductName></Title>
|
<Title>A Short History of <ProductName>Postgres</ProductName></Title>
|
||||||
|
|
||||||
|
<Para>
|
||||||
|
The Object-Relational Database Management System now known as
|
||||||
|
<ProductName>PostgreSQL</ProductName> was originally called
|
||||||
|
<ProductName>Postgres</ProductName>, and briefly called
|
||||||
|
<ProductName>Postgres95</ProductName>. 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 and supporting almost
|
||||||
|
all SQL constructs, including subselects, transactions, and
|
||||||
|
user-defined types and functions.
|
||||||
|
</Para>
|
||||||
|
|
||||||
<Sect2>
|
<Sect2>
|
||||||
<Title>The Berkeley <ProductName>Postgres</ProductName> Project</Title>
|
<Title>The Berkeley <ProductName>Postgres</ProductName> Project</Title>
|
||||||
|
|
||||||
|
@ -37,8 +49,8 @@ and Version 2 was
|
||||||
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 since then have focused on portability and
|
releases until <ProductName>Postgres95</ProductName> (see below)
|
||||||
reliability.
|
focused on portability and reliability.
|
||||||
</Para>
|
</Para>
|
||||||
|
|
||||||
<Para>
|
<Para>
|
||||||
|
@ -70,7 +82,7 @@ and Version 2 was
|
||||||
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>
|
||||||
|
|
||||||
|
@ -79,77 +91,75 @@ 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>.
|
||||||
and the code was subsequently released to
|
<ProductName>Postgres95</ProductName> was subsequently released to
|
||||||
the Web to find its own way in the world.
|
the Web to find its own way in the world as a public-domain,
|
||||||
<ProductName>Postgres95</ProductName> was a public-domain, open source descendant
|
open source descendant of the original <ProductName>Postgres</ProductName>
|
||||||
of this original Berkeley code.
|
Berkeley code.
|
||||||
</Para>
|
</Para>
|
||||||
|
|
||||||
<Para>
|
<Para>
|
||||||
<ProductName>Postgres95</ProductName> is a derivative of the last official release
|
<ProductName>Postgres95</ProductName> code was completely
|
||||||
of <ProductName>Postgres</ProductName> (version 4.2). The code is now completely
|
ANSI C and trimmed in size by 25%. Many
|
||||||
ANSI C and the code size has been trimmed by 25%. There
|
internal changes improved performance and maintainability.
|
||||||
are a lot of internal changes that improve performance
|
<ProductName>Postgres95</ProductName> v1.0.x ran about 30-50%
|
||||||
and code maintainability.
|
faster on the Wisconsin Benchmark compared to
|
||||||
<ProductName>Postgres95</ProductName> v1.0.x runs about 30-50%
|
<ProductName>Postgres</ProductName> v4.2.
|
||||||
faster on the Wisconsin Benchmark compared to v4.2.
|
Apart from bug fixes, these were the major enhancements:
|
||||||
Apart from bug fixes, these are the major enhancements:
|
|
||||||
|
|
||||||
<ItemizedList>
|
<ItemizedList>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<Para>
|
<Para>
|
||||||
The query language <ProductName>Postquel</ProductName> has been replaced with
|
The query language <ProductName>Postquel</ProductName> was replaced with
|
||||||
<Acronym>SQL</Acronym> (implemented in the server). We do not yet support
|
<Acronym>SQL</Acronym> (implemented in the server). Subqueries were not supported until <ProductName>PostgreSQL</ProductName> (see below), but they
|
||||||
subqueries (which can be imitated with user defined
|
could be imitated in <ProductName>Postgres95</ProductName> with user-defined
|
||||||
<Acronym>SQL</Acronym> functions). Aggregates have been
|
<Acronym>SQL</Acronym> functions. Aggregates were
|
||||||
re-implemented. We also added support for ``GROUP BY''.
|
re-implemented. Support for ``GROUP BY'' was also added.
|
||||||
The <FileName>libpq</FileName> interface is still available for <Acronym>C</Acronym>
|
The <FileName>libpq</FileName> interface remained available for <Acronym>C</Acronym>
|
||||||
programs.
|
programs.
|
||||||
</Para>
|
</Para>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<Para>
|
<Para>
|
||||||
In addition to the monitor program, we provide a new
|
In addition to the monitor program, a new program
|
||||||
program (<Application>psql</Application>) which supports <Acronym>GNU</Acronym> <FileName>readline</FileName>.
|
(<Application>psql</Application>) was provided for interactive SQL queries
|
||||||
|
using <Acronym>GNU</Acronym> <FileName>readline</FileName>.
|
||||||
</Para>
|
</Para>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<Para>
|
<Para>
|
||||||
We added a new front-end library, <FileName>libpgtcl</FileName>, that
|
A new front-end library, <FileName>libpgtcl</FileName>,
|
||||||
supports <Acronym>Tcl</Acronym>-based clients. A sample shell,
|
supported <Acronym>Tcl</Acronym>-based clients. A sample shell,
|
||||||
pgtclsh, provides new Tcl commands to interface <Application>tcl</Application>
|
pgtclsh, provided new Tcl commands to interface <Application>tcl</Application>
|
||||||
programs with the <ProductName>Postgres95</ProductName> backend.
|
programs with the <ProductName>Postgres95</ProductName> backend.
|
||||||
</Para>
|
</Para>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<Para>
|
<Para>
|
||||||
The large object interface has been overhauled. We
|
The large object interface was overhauled. The Inversion large objects were
|
||||||
kept Inversion large objects as the only mechanism
|
the only mechanism for storing large objects.
|
||||||
for storing large objects. (This is not to be
|
(The Inversion file system was removed.)
|
||||||
confused with the Inversion file system which has been
|
|
||||||
removed.)
|
|
||||||
</Para>
|
</Para>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<Para>
|
<Para>
|
||||||
The instance-level rule system has been removed.
|
The instance-level rule system was removed.
|
||||||
Rules are still available as rewrite rules.
|
Rules were still available as rewrite rules.
|
||||||
</Para>
|
</Para>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<Para>
|
<Para>
|
||||||
A short tutorial introducing regular <Acronym>SQL</Acronym> features as
|
A short tutorial introducing regular <Acronym>SQL</Acronym> features as
|
||||||
well as those of ours is distributed with the source
|
well as those of <ProductName>Postgres95</ProductName> was
|
||||||
code.
|
distributed with the source code.
|
||||||
</Para>
|
</Para>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<Para>
|
<Para>
|
||||||
<Acronym>GNU</Acronym> make (instead of <Acronym>BSD</Acronym> make) is used for the
|
<Acronym>GNU</Acronym> make (instead of <Acronym>BSD</Acronym> make) was used
|
||||||
build. Also, <ProductName>Postgres95</ProductName> can be compiled with an
|
for the build. Also, <ProductName>Postgres95</ProductName> could be
|
||||||
unpatched <ProductName>gcc</ProductName> (data alignment of doubles has been
|
compiled with an unpatched <ProductName>gcc</ProductName>
|
||||||
fixed).
|
(data alignment of doubles was fixed).
|
||||||
</Para>
|
</Para>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
</ItemizedList>
|
</ItemizedList>
|
||||||
|
@ -160,36 +170,39 @@ and code maintainability.
|
||||||
<Title><ProductName>PostgreSQL</ProductName></Title>
|
<Title><ProductName>PostgreSQL</ProductName></Title>
|
||||||
|
|
||||||
<Para>
|
<Para>
|
||||||
By 1996, it became clear that the name <Quote>Postgres95</Quote> would not stand
|
By 1996, it became clear that the name <Quote>Postgres95</Quote> would
|
||||||
the test of time. A new name, <ProductName>PostgreSQL</ProductName>,
|
not stand the test of time. We chose a new name,
|
||||||
was chosen to reflect the
|
<ProductName>PostgreSQL</ProductName>, to reflect the relationship
|
||||||
relationship between original <ProductName>Postgres</ProductName>
|
between the original <ProductName>Postgres</ProductName> and the more
|
||||||
and the more recent
|
recent versions with <Acronym>SQL</Acronym> capability. At the same
|
||||||
versions with <Acronym>SQL</Acronym> capability.
|
time, we set the version numbering to start at 6.0, putting the
|
||||||
At the same time, the version numbering
|
numbers back into the sequence originally begun by the
|
||||||
was reset to start at 6.0,
|
<ProductName>Postgres</ProductName> Project.
|
||||||
putting the numbers back into the sequence originally begun by
|
|
||||||
the <ProductName>Postgres</ProductName> Project.
|
|
||||||
</Para>
|
</Para>
|
||||||
|
|
||||||
<Para>
|
<Para>
|
||||||
The emphasis on development for the v1.0.x releases of
|
The emphasis during development of <ProductName>Postgres95</ProductName>
|
||||||
<ProductName>Postgres95</ProductName>
|
was on identifying and understanding existing problems in the backend code.
|
||||||
was on stabilizing the backend code.
|
With <ProductName>PostgreSQL</ProductName>,
|
||||||
With the v6.x series of <ProductName>PostgreSQL</ProductName>,
|
the emphasis has shifted to augmenting features and capabilities, although
|
||||||
the emphasis has shifted from
|
|
||||||
identifying and understanding existing problems in the backend
|
|
||||||
to augmenting features and capabilities, although
|
|
||||||
work continues in all areas.
|
work continues in all areas.
|
||||||
</Para>
|
</Para>
|
||||||
|
|
||||||
<Para>
|
<Para>
|
||||||
Major enhancements include:
|
Major enhancements in <ProductName>PostgreSQL</ProductName> include:
|
||||||
</Para>
|
</Para>
|
||||||
|
|
||||||
<ItemizedList>
|
<ItemizedList>
|
||||||
<ListItem>
|
<ListItem>
|
||||||
<Para>
|
<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,
|
Important backend features, including subselects, defaults,
|
||||||
constraints, and triggers, have been implemented.
|
constraints, and triggers, have been implemented.
|
||||||
</Para>
|
</Para>
|
||||||
|
|
Loading…
Reference in New Issue