Re: Thesis on PostgreSQL - Mailing list pgsql-hackers

From Jim C. Nasby
Subject Re: Thesis on PostgreSQL
Date
Msg-id 20040904155618.GG69298@decibel.org
Whole thread Raw
In response to Re: Thesis on PostgreSQL  ("D'Arcy J.M. Cain" <darcy@druid.net>)
List pgsql-hackers
On Sat, Sep 04, 2004 at 09:24:04AM -0400, D'Arcy J.M. Cain wrote:
> On Fri, 3 Sep 2004 15:11:54 -0500
> "Jim C. Nasby" <decibel@decibel.org> wrote:
> > > I'm not aware of any generally accepted definitions of generations
> > > of > > database management systems.
> >  
> > Nor am I, but I'd say MySQL would be at least 2 if not 3 or 4
> > generations behind PostgreSQL if there was such a thing :). PostgreSQL
> > would also be a generation or two behind Oracle.
> 
> Bzzzt!  Do you work in Oracle's marketing department?  PostgreSQL is not
> a generation behind Oracle by any reasonable definition.  We may lack
> some features that they have but they lack some features we have.  You
> need to do some constructive defining to put one ahead of the other.
> 
> The only "generation" differentiation I have ever heard about in general
> use was based on the language used to talk to the database.  In that
> sense PostgreSQL is 3GL (SQL) and plpgsql might be 4GL.  Progress is a
> 4GL.  I'm not sure that's a feature though.
First of all let me say that PostgreSQL is an outstanding database. I
would even go so far as to put it ahead of DB2 and maybe MSSQL, even
though those two databases have some important features that PostgreSQL
doesn't.

Having said that, there's a *lot* of features Oracle has that
PostgreSQL doesn't:

Multi-master replication
Clustering (heh, both in the table sense and in the multiple machines
serving one database sense)
Parallelization of individual queries
Partitioning
Recursive queries
PL/SQL is a richer language than plpgsql, and can be used outside of
functions
All of the DBMS_* stuff
A more sophisticated optimizer (which translates into less time spent
worrying about how you're writing your SQL)

On the flip-side, PostgreSQL has features Oracle lacks:
Free!
The ability to heavily customize PostgreSQL, by adding datatypes and
even function languages.
Handling NULLs more rationally

There is also the difference in how Oracle and PostgreSQL handle MVCC
which eliminates the need for them to vacuum and helps scaleability
(since rollforward and undo logs can be placed on separate physical
partitions). It's very clear which way is ultimately better though, so
I'm not listing it as a feature of either.

I've probably forgotten some other features of PostgreSQL, and I know
there's Oracle features I haven't mentioned.

So, what defines a generation? If you're talking programming languages
(ie: 3GL vs 4GL), then there may be no difference (though I would put
PL/SQL closer to 4GL than I would plpgsql). But we're not talking about
programming languages here, we're talking about databases, and I would
argue that many of the features Oracle has would define a generation
gap, notable the scalability features and the more advanced replication.
Then there's the grid features in 10g, which I would say put it a
generation ahead of DB2 and MSSQL.

In any case, I don't think it's fair to jump the gun and assume I work
for Oracle (I don't, though I was offered a job). There's been much
discussion about how we need to stop comparing PostgreSQL to MySQL and
instead compare it to Oracle, and I believe this to be true. Trying to
ignore where Oracle outshines us isn't a way to do this.
-- 
Jim C. Nasby, Database Consultant               decibel@decibel.org 
Give your computer some brain candy! www.distributed.net Team #1828

Windows: "Where do you want to go today?"
Linux: "Where do you want to go tomorrow?"
FreeBSD: "Are you guys coming, or what?"


pgsql-hackers by date:

Previous
From: "D'Arcy J.M. Cain"
Date:
Subject: Re: Thesis on PostgreSQL
Next
From: "Marc G. Fournier"
Date:
Subject: Re: www.postgresql.org hacked ?