-
-
A Short History of Postgres
-
-The Object-Relational Database Management System now known as
-
PostgreSQL was originally called
-
Postgres, and briefly called
-
Postgres95. With over a decade of
-development behind it,
PostgreSQL
-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.
-
-
-
-
The Berkeley Postgres Project
-
- Implementation of the
Postgres
- initial concepts for the system were presented in
-
- and the definition of the initial data model
- appeared in
-.
-The design of the rule system at
- that time was described in
-.
-The rationale
- and architecture of the storage manager were detailed in
-.
-
-
-
Postgres has undergone several major releases since
- then. The first "demoware" system became operational
- in 1987 and was shown at the 1988
ACM-SIGMOD
- Conference. We released Version 1, described in
-,
- to a few external users in June 1989. In response to a
- critique of the first rule system
-(),
-the rule
- system was redesigned
-()
-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
Postgres95 (see below)
- focused on portability and reliability.
-
-
-
Postgres 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.
- used as an educational tool at several universities.
- Finally,
-
Illustra Information Technologies
-(since merged into
-
- picked up
- the code and commercialized it.
-
Postgres became the primary data manager
- for the
- scientific computing project in late 1992.
- Furthermore, 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.
-
-
-
-
-
-In 1994,
-and
-added a SQL language interpreter to
Postgres.
-
Postgres95 was subsequently released to
-the Web to find its own way in the world as a public-domain,
-open source descendant of the original
Postgres
-Berkeley code.
-
-
-
Postgres95 code was completely
- ANSI C and trimmed in size by 25%. Many
- internal changes improved performance and maintainability.
-
Postgres95 v1.0.x ran about 30-50%
- faster on the Wisconsin Benchmark compared to
- Apart from bug fixes, these were the major enhancements:
-
-
-
- The query language
Postquel was replaced with
-
SQL (implemented in the server). Subqueries were not supported until
PostgreSQL (see below), but they
-could be imitated in
Postgres95 with user-defined
-
SQL functions. Aggregates were
- re-implemented. Support for ``GROUP BY'' was also added.
- The
libpq interface remained available for
C
- programs.
-
-
-
-In addition to the monitor program, a new program
-(
psql) was provided for interactive SQL queries
-
-
-
- A new front-end library, libpgtcl,
- supported
Tcl-based clients. A sample shell,
- pgtclsh, provided new Tcl commands to interface
tcl
- programs with the
Postgres95 backend.
-
-
-
-The large object interface was overhauled. The Inversion large objects were
-the only mechanism for storing large objects.
-(The Inversion file system was removed.)
-
-
-
- The instance-level rule system was removed.
- Rules were still available as rewrite rules.
-
-
-
- A short tutorial introducing regular
SQL features as
- well as those of
Postgres95 was
- distributed with the source code.
-
-
-
-
GNU make (instead of
BSD make) was used
-for the build. Also,
Postgres95 could be
-compiled with an unpatched
gcc
-(data alignment of doubles was fixed).
-
-
-
-
-
-
-
-
-By 1996, it became clear that the name Postgres95
would
-not stand the test of time. We chose a new name,
-
PostgreSQL, to reflect the relationship
-between the original
Postgres and the more
-recent versions with
SQL 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
-
-
-The emphasis during development of
Postgres95
-was on identifying and understanding existing problems in the backend code.
-the emphasis has shifted to augmenting features and capabilities, although
-work continues in all areas.
-
-
-Major enhancements in
PostgreSQL include:
-
-
-
-
-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.
-
-
-
-Important backend features, including subselects, defaults,
-constraints, and triggers, have been implemented.
-
-
-
-Additional
SQL92-compliant language features have been added,
- including primary keys, quoted identifiers, literal string type coersion,
-type casting, and binary and hexadecimal integer input.
-
-
-
-Built-in types have been improved, including new wide-range date/time types
-and additional geometric type support.
-
-
-
-
-Overall backend code speed has been increased by approximately 20-40%,
-and backend startup time has decreased 80% since v6.0 was released.
-
-
-
-
+
+
A Short History of Postgres
+ The Object-Relational Database Management System now known as
+
PostgreSQL (and briefly called
+
Postgres95) is derived from the
+
Postgres package written at Berkeley.
+ With over a decade of
+ development behind it,
PostgreSQL
+ 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).
+
+
+
+
The Berkeley Postgres Project
+
+ Implementation of the
Postgres
+
DBMS began in 1986. The
+ initial concepts for the system were presented in
+
+ and the definition of the initial data model
+ appeared in
+ .
+ The design of the rule system at
+ that time was described in
+ .
+ The rationale
+ and architecture of the storage manager were detailed in
+ .
+
+
+
Postgres has undergone several major releases since
+ then. The first "demoware" system became operational
+ in 1987 and was shown at the 1988
ACM-SIGMOD
+ Conference. We released Version 1, described in
+ ,
+ to a few external users in June 1989. In response to a
+ critique of the first rule system
+ (),
+ the rule
+ system was redesigned
+ ()
+ 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
Postgres95 (see below)
+ focused on portability and reliability.
+
+
+ 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.
+ used as an educational tool at several universities.
+ Finally,
+
Illustra Information Technologies
+ (since merged into
+ picked up
+ the code and commercialized it.
+
Postgres became the primary data manager
+ for the
+ scientific computing project in late 1992.
+
+
+ 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.
+
+
+
+
+
+ In 1994,
+ and
+ added a SQL language interpreter to
Postgres.
+
Postgres95 was subsequently released to
+ the Web to find its own way in the world as a public-domain,
+ open source descendant of the original
Postgres
+ Berkeley code.
+
+
+
Postgres95 code was completely
+ ANSI C and trimmed in size by 25%. Many
+ internal changes improved performance and maintainability.
+
Postgres95 v1.0.x ran about 30-50%
+ faster on the Wisconsin Benchmark compared to
+ Apart from bug fixes, these were the major enhancements:
+
+
+
+ The query language
Postquel was replaced with
+
SQL (implemented in the server).
+ Subqueries were not supported until
+
PostgreSQL (see below), but they
+ could be imitated in
Postgres95 with user-defined
+
SQL functions. Aggregates were
+ re-implemented. Support for the GROUP BY query clause was also added.
+ The libpq interface remained
+ programs.
+
+
+
+
+ In addition to the monitor program, a new program
+ (
psql) was provided for interactive SQL queries
+
+
+
+
+ A new front-end library, libpgtcl,
+ supported
Tcl-based clients. A sample shell,
+ pgtclsh, provided new Tcl commands to interface
+ programs with the
Postgres95 backend.
+
+
+
+
+ The large object interface was overhauled. The Inversion large objects were
+ the only mechanism for storing large objects.
+ (The Inversion file system was removed.)
+
+
+
+
+ The instance-level rule system was removed.
+ Rules were still available as rewrite rules.
+
+
+
+
+ A short tutorial introducing regular
SQL features as
+ well as those of
Postgres95 was
+ distributed with the source code.
+
+
+
+
+
GNU make (instead of
BSD make) was used
+ for the build. Also,
Postgres95 could be
+ compiled with an unpatched
gcc
+ (data alignment of doubles was fixed).
+
+
+
+
+
+
+
+
+ By 1996, it became clear that the name Postgres95
would
+ not stand the test of time. We chose a new name,
+
PostgreSQL, to reflect the relationship
+ between the original
Postgres and the more
+ recent versions with
SQL 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
+
+
+ The emphasis during development of
Postgres95
+ was on identifying and understanding existing problems in the backend code.
+ the emphasis has shifted to augmenting features and capabilities, although
+ work continues in all areas.
+
+
+ Major enhancements in
PostgreSQL include:
+
+
+
+
+ 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.
+
+
+
+
+ Important backend features, including subselects, defaults,
+ constraints, and triggers, have been implemented.
+
+
+
+
+ Additional
SQL92-compliant language features have been added,
+ including primary keys, quoted identifiers, literal string type coersion,
+ type casting, and binary and hexadecimal integer input.
+
+
+
+
+ Built-in types have been improved, including new wide-range date/time types
+ and additional geometric type support.
+
+
+
+
+ Overall backend code speed has been increased by approximately 20-40%,
+ and backend startup time has decreased 80% since v6.0 was released.
+
+
+
+
+
+
-
-
Resources
-
-This manual set is organized into several parts:
-
-
-
-
-Tutorial
-
-An introduction for new users. Does not cover advanced features.
-
-
-
-
-
-User's Guide
-
-General information for users, including available commands and data types.
-
-
-
-
-
-Programmer's Guide
-
-Advanced information for application programmers. Topics include
-type and function extensibility, library interfaces, and application design issues.
-
-
-
-
-
-Administrator's Guide
-
-Installation and management information. List of supported machines.
-
-
-
-
-
-Developer's Guide
-
-Information for
Postgres developers. This is intended
-for those who are contributing to the
Postgres
-project; application development information should appear in the
-Programmer's Guide.
-Currently included in the Programmer's Guide.
-
-
-
-
-
-Reference Manual
-
-Detailed reference information on command syntax.
-Currently included in the User's Guide.
-
-
-
-
-
-In addition to this manual set, there are other resources to help you with
-
Postgres installation and use:
-
-
-
-
-man pages
-
-The man pages have general information on command syntax.
-
-
-
-
-
-FAQs
-
-The Frequently Asked Questions (FAQ) documents address both general issues
-and some platform-specific issues.
-
-
-
-
-
-READMEs
-
-README files are available for some contributed packages.
-
-
-
-
-
-Web Site
-
-The
Postgres web site has some information
-not appearing in the distribution. There is a
mhonarc catalog of mailing list traffic
-which is a rich resource for many topics.
-
-
-
-
-
-Mailing Lists
-
-mailing list is a good place to have user questions answered.
-Other mailing lists are available; consult the Info Central section of the
-PostgreSQL web site for details.
-
-
-
-
-
-Yourself!
-
-
Postgres is an open source product.
-As such, it depends on the user community for
-ongoing support. As you begin to use
Postgres,
-you will rely on others
-for help, either through the documentation or through the mailing lists.
-Consider contributing your
-knowledge back. If you learn something which is not in the documentation,
-write it up and contribute it.
-If you add features to the code, contribute it.
-
-Even those without a lot of experience can provide corrections and
-minor changes in the documentation, and that is a good way to start.
-The
-mailing list is the place to get going.
-
-
-
-
-
-
+
+
Resources
+
+ This manual set is organized into several parts:
+
+
+
+
+ Tutorial
+
+ An introduction for new users. Does not cover advanced features.
+
+
+
+
+
+ User's Guide
+
+ General information for users, including available commands and data types.
+
+
+
+
+
+ Programmer's Guide
+
+ Advanced information for application programmers. Topics include
+ type and function extensibility, library interfaces,
+ and application design issues.
+
+
+
+
+
+ Administrator's Guide
+
+ Installation and management information. List of supported machines.
+
+
+
+
+
+ Developer's Guide
+
+ Information for
Postgres developers.
+ This is intended for those who are contributing to the
+ application development information should appear in the
+ Programmer's Guide.
+ Currently included in the Programmer's Guide.
+
+
+
+
+
+ Reference Manual
+
+ Detailed reference information on command syntax.
+ Currently included in the User's Guide.
+
+
+
+
+
+ In addition to this manual set, there are other resources to help you with
+
Postgres installation and use:
+
+
+
+
+ man pages
+
+ The man pages have general information on command syntax.
+
+
+
+
+
+ FAQs
+
+ The Frequently Asked Questions (FAQ) documents address both general issues
+ and some platform-specific issues.
+
+
+
+
+
+ READMEs
+
+ README files are available for some contributed packages.
+
+
+
+
+
+ Web Site
+
+ The
+ web site might have some information not appearing in the distribution.
+ There is a
mhonarc catalog of mailing list traffic
+ which is a rich resource for many topics.
+
+
+
+
+
+ Mailing Lists
+
+ The
+ mailing list is a good place to have user questions answered.
+ Other mailing lists are available; consult the Info Central section of the
+ PostgreSQL web site for details.
+
+
+
+
+
+ Yourself!
+
+
Postgres is an open source product.
+ As such, it depends on the user community for ongoing support.
+ As you begin to use
Postgres,
+ you will rely on others for help, either through the
+ documentation or through the mailing lists.
+ Consider contributing your knowledge back. If you learn something
+ which is not in the documentation, write it up and contribute it.
+ If you add features to the code, contribute it.
+
+
+ Even those without a lot of experience can provide corrections and
+ minor changes in the documentation, and that is a good way to start.
+ The
+ mailing list is the place to get going.
+
+
+
+
+
+
+
+