On Apr 17, 2008, at 9:08 AM, Mark Waser wrote:
Yes, the newest versions of PostgeSQL could spank SQL Server 2000
after it was several years old. One tremendous advantage of
PostgreSQL is it's very short development cycle.
Actually, this was a fundamental and known weakness in the SQL Server
2000 transactional model, being more like DB2 than Oracle. Because
PostgreSQL has used the same kind of model as Oracle -- and for a very
long time -- it has always been relatively strong at OLTP throughput.
Until SQL Server 2005, the Microsoft offering was never really
competitive. It had little to do with development timelines. On the
other hand, PostgreSQL was a bit of a dog at OLAP until relatively
recently.
You imply that the performance is due to some kind of linear
development path, but in fact SQL Server 2005 changed its internal
model to be like Oracle and PostgreSQL so that it could be competitive
at OLTP. It is a matter of algorithm selection and tradeoffs, not
engineering effort. SQL Server (until two years ago) has always had
relatively poor lock concurrency, but gave very good baseline OLAP
performance as a consequence of that decision. The reality is that it
is much easier to make the Oracle/Postgres model perform
satisfactorily at OLAP than to make the old SQL Server model perform
satisfactorily at OLTP.
-- in 2005 they switched to a transaction model more like
PostgreSQL and Oracle and gained some parity. SQL Server still
does not really distribute all that easily, unlike Oracle or
PostgreSQL.
Have you ever worked with an Oracle distributed database? Oracle
does not distribute well.
I've worked with very large databases on several major platforms,
including Oracle and SQL Server in many different guises. Oracle's
parallel implementation may not distribute that well, but that is
because traditional transactional semantics are *theoretically
incapable* of distributing well. To the extent it is possible at all,
Oracle does a very good job at making it work.
There are new transactional architectures in academia that should work
better in a modern distributed environment than any of the current
commercial adaptations of classical architectures to distributed
environments.
Oracle only scales well when you know how to properly use it. In
most installations that I've seen, Oracle underperforms even SQL
Server 2000 because the DBA didn't do the necessary to make it
perform optimally (because Oracle is *NOT* average person
friendly). I've made *a lot* of money optimizing people's Oracle
installations that I shouldn't have been able to make if Oracle
could get out of it's own way.
No argument here, one of the major problems of Oracle is that it is
bloody impossible to use well without a full-time staff. I spent many
years solving scaling problems on extremely large Oracle systems. The
insidiousness of PostgreSQL in the market is that it is very Oracle-
like at a high-level but *massively* simpler and easier to use and
administer while still delivering much of the performance and a
significant subset of the features of Oracle. SQL Server has done
well against Oracle for similar reasons.
The main problem with SQL Server these days is that it does not run on
Unix. Most of the major historical suckiness does not apply to the
current version.
Making deep and very flexible customization a safe core feature
was a design decision tradeoff in PostgreSQL that is somewhat
unique to it. You can do a lot of really cool software
implementation tricks with it that Oracle and SQL Server do not do.
Yes. The biggest problems with PostgreSQL are that it doesn't have
a Microsoft compatibility mode and it isn't clear to corporations
where you can get *absolutely guaranteed* support.
Sun Microsystems not only officially supports it, they do a lot of
development on it, as does Fujitsu in Asia, Red Hat and a few other
large companies that are heavily invested in it. A significant
portion of the main PostgreSQL developers do it as their official
corporate job.
PostgreSQL is very broadly ANSI compatible (including a lot of
ancillary database standards surrounding SQL), and to the extent it
has a "flavor" it clearly borrows from Oracle rather than SQL Server.
SQL Server has a lot of bits that do not conform to standards that
everyone else supports. From a historical perspective, PostgreSQL
shares a transaction model with Oracle, started on Unix, and has been
around since a time when SQL Server was not something you would want
to emulate. PostgreSQL has matured to the point where it mostly
follows standards to the extent possible but has enough unique
features and capabilities that it has started to become a flavor of
its own.
If you could swap out an MS-SQL server *immediately* for a
PostgreSQL server simply by copy the data and rebinding a WINS name
or an IP address, I would be in hog heaven even if support wasn't
absolutely guaranteed since I could always switch back. Given that
there's a huge transition cost (changing scripts, procedures, etc.),
I can't get *ANY* agreement for the thought of switching (and I'm
sure that there are *MANY* more in my circumstances).
The only corporate database that relatively easily ports back and
forth with PostgreSQL is Oracle. Nonetheless, a number of people have
ported applications to PostgreSQL from MS-SQL with good results;
questions about porting nuances come up regularly on the PostgreSQL
mailing lists.
Beyond your basic ANSI compliance, database portability only sort of
exists. Inevitably people use non-standard platform features that
expose the specific capabilities of the engine being used to maximize
performance. As a practical matter, you pick a database platform and
stick with it as long as is reasonably possible.
J. Andrew Rogers
-------------------------------------------
agi
Archives: http://www.listbox.com/member/archive/303/=now
RSS Feed: http://www.listbox.com/member/archive/rss/303/
Modify Your Subscription:
http://www.listbox.com/member/?member_id=8660244&id_secret=101455710-f059c4
Powered by Listbox: http://www.listbox.com