EnterpriseDB has inherited its
functionality from two sources. One of EnterpriseDB's parents is the most
advanced Open Source Database yet developed, PostgreSQL. PostgreSQL has an
architecture that is normally reserved for commercial databases and offers
wide support in terms of languages and tools. Below is a brief history of
PostgreSQL and an examination of a choice selection of those languages and
History of Postgres releases & features
Oracle Database Tips by Donald Burleson
Ingres was a project in the early 1970s at
the University of California, Berkeley. Ingres was a research project to
create a relational database. It was to become one of the first of its
kind. Ingres provided roots to many other databases, including the
commercial Ingres and Informix databases.
Pieces of Ingres have made it into many
databases; both open and closed source. If the code itself is not there,
then some of the concepts generated by the research project are.
Ingres is the granddaddy of today's
relational databases. While being a relational database, it did not support
Structured Query Language (SQL) access. SQL itself had not been defined at
Postgres was the UC Berkeley follow on to
Ingres. While it still did not support SQL, it added better type support
and better relational support. The Postgres project was primarily staffed
by graduate students and ran from the mid 80s to the mid 90s.
During this phase, Oracle and IBM were both
making strides in the relational database market. The Oracle Relational
Database Management System (RDBMS) and DB2 RDBMS had both been released and
both supported SQL access.
UC Berkeley shut down the Postgres project
in 1994 to concentrate on more pure database research. This is about the
time open source freeware was starting to become a player in the software
Postgres95 was the beginning of the modern
PostgreSQL database. Postgres95 added SQL support to the database.
Postgres95 was largely a re-write; it was faster, smaller and had new
The most significant functionality, of
course, was the addition of SQL. While a primitive version of SQL compared
to today, it did support much of what is used today.
In 1996 Postgres95 was renamed PostgreSQL.
The first release of PostgreSQL was version 6.0. This was the first version
of PostgreSQL I ever used. I did not like it.
PostgreSQL at the time did not support
sub-queries or many of the other concepts I was used to working with coming
from an Oracle background. The thing I liked least was the lack of a good
embedded programming language. Using PostgreSQL 6 felt more like using an
open source compiler than using a database.
At this point, Oracle 7 was out and PL/SQL
was steadily becoming more robust. As a database developer, I wanted to
spend my time in the database, not in the OS.
Although to be fair, if I compared Oracle 7
to Oracle 10g, I would prefer to go with the 10g version. For its time,
PostgreSQL 6 was a pretty significant accomplishment.
PostgreSQL 7.0 was released mid-year in
2000. This was the most significant release in the history of PostgreSQL so
I came back to PostgreSQL around version
7.1 or 7.2. I liked it much better this time around. Sub-queries were
supported and it was a much easier install. More importantly, it had an
embedded language, PL/pgSQL. It actually supported several languages but
the one I used was PL/pgSQL.
PL/pgSQL was very much like PL/SQL. As a
matter of a fact, the version 7 documentation even added a Porting from
A simple PL/pgSQL function looks like this:
CREATE OR REPLACE FUNCTION test(INTEGER) RETURNS INTEGER AS '
v_input_parm ALIAS FOR $1;
v_output := v_input_parm +
' LANGUAGE 'plpgsql';
If you are at all familiar with PL/SQL and
have never seen the procedural language for PostgreSQL, you are probably
thinking the same thing I did when I first saw it: "I can program with this
database! It'll be easy!"
It really was easy. I did a couple of
small programs with PostgreSQL. Unfortunately, I could never convince
anyone I worked for that PostgreSQL was an option. When they looked around
they could find no employees with that skill, there was no major corporation
to hold accountable for bugs, or to provide support, and available training
At this point I walked away from PostgreSQL
for a long time. Fortunately for all of us, the developers kept working on
it. Version 7 of PostgreSQL supported many advanced features:
* Foreign Keys
* Transaction Support
* Scalar Sub-queries
* Oracle style and ANSI join syntax
* A huge selection of Data Types
* Cost Based Optimizer
* Multi-version concurrency control
At this point, PostgreSQL was approaching
Enterprise Ready. It was already the most advanced open source database
and it was leading in some areas even when compared to commercial databases
like Oracle and DB2.
One downside at this point was that the
only version that ran in MS-Windows was a Cygwin version. Cygwin was a
library that made it possible to run some UNIX and Linux programs under
Whatever complaints someone might have
against MS-Windows, it seems that for some reason, support for that platform
PostgreSQL 8 was released in 2005. This
was also a significant release.
Speaking of support for MS-Windows, the
feature list for PostgreSQL 8 reads like a laundry list, or more like a
geek's wish list, of database features. PostgreSQL 8 added an amazing
number of new features and, according to the PostgreSQL 8 ToDo List; more is
planned for future releases:
* Native Support for MS-Windows
* Table Partitioning (the real deal!)
* Point in time recovery
* Oracle style Roles
* IN/OUT Parameters
* Shared row locking (even better locking)
* More SQL compatibility with Oracle
* And more
PostgreSQL 8 is the current version. Each
release (8.1, 8.2, 8.x) in version 8 seems to add significant new
In April of 2005, I happened to pick
PostgreSQL back up and take a look at it. I was writing a series of blog
entries geared towards new database users and non-DBAs. I wrote a
comparison on the ease of installing PostgreSQL 8, MySQL 5 and Oracle 10g.
Oddly enough, I found PostgreSQL to be
easier overall than Oracle. While most of the issues I found that were
marks against Oracle have been addressed in Oracle 10g XE, I was still
attracted to PostgreSQL.
Since that time, I have had PostgreSQL
running on my network at home. While I am not a heavy user and I have not
spent a lot of time working performance issues, I have never had a crash. I
connect with various clients using Java, C, or .Net. I run a lot of
software side by side with it. On one machine I had Oracle 10g, PostgreSQL
8, MySQL 5 and EnterpriseDB Beta 1 all running at the same time.
PostgreSQL today has a vibrant community
supporting and enhancing it. From PostgreSQL.org and pgFoundry.org to
independent admin and access tools, there is a complete library of software
to help users do their jobs.
With the Version 8 release, both Sun and
Red Hat are officially supporting PostgreSQL. Corporate support is good
news for corporate adoption. One of the biggest obstacles to open source
adoption is real, reliable support from a real, reliable entity with a
history of real, reliable support.
Both Sun and Red Hat are known entities.
Red Hat has made a name for itself in support and Sun has a longevity and
corporate clientele that speaks volumes about the Sun support organization.
PostgreSQL History Wrap-up
PostgreSQL is not just another RDBMS. PostgreSQL has a long and respected
lineage. Starting in the 1970s and moving forward to today, the database and
its ancestors have always been technology leaders.
PostgreSQL has made it into the business world by supporting entities in the
Pharmaceutical, Commerce, Government, Higher Education, Gaming, Healthcare,
and Software industries.
The PostgreSQL community is made up of dedicated database professionals who
have real goals and real targets for the future of PostgreSQL. You can read
the Roadmap and ToDo lists at
www.PostgreSQL.org to see that.
With the reliability and functionality introduced in PostgreSQL 8.x,
PostgreSQL has hit the big time. I think it is fair to say that the
developer's claims are true when they say PostgreSQL is 'the world's most
advanced open source database.?
This is an excerpt
from the book "EnterpriseDB: The Definitive Reference" by Rampant TechPress.