Many comments (related to "Are we losing momentum?") - Mailing list pgsql-hackers

From Rob Butler
Subject Many comments (related to "Are we losing momentum?")
Date
Msg-id 20030416153325.MUI28543.out003.verizon.net@out003
Whole thread Raw
List pgsql-hackers
Hello all

In earlier threads on the Hackers mailing list there were discussions of a few things that I would like to comment on.
Sorryin advance for the length of this post. 

First, PostgreSQL needs 2PC AND eager replication AND lazy replication all at the same time.  Of those however, I think
Postgreswould get the most bang for the buck by supporting 2PC and eager (postgres-r) asap. Add lazy replication when
youcan later.  (Besides 2PC, and postgres-r seem to be closer to completion and integration with the main postgres
developmenttree) 

Also, 2PC and eager replication should work together simultaneously. Why?....

I may want performance and reliability provided by eager replication, but I also need to update the database and
performsome operations on a pair of queues as a single transaction.  In order for this to be possible we need both
replicationand 2PC, and they have to work together!  In this situation 2PC and replication have to be developed with
knowledgeof each other.  Lazy replication could be added to this situation later without to much effect.  

Another thing I noted is that people are asking for 2PC with the JDBC driver.  Obviously that can only happen when the
databasesupports the feature.  However, from what I last saw on the JDBC list archives it doesn't appear as if the JDBC
driverdevelopers know you guys are changing the FE/BE protocol and may soon be adding 2PC.  I think the JDBC developers
shouldbe made aware of this asap...  If all of a sudden the JDBC driver doesn't work with the newest version of
Postgresthere is going to be some upset people! You should also ask the JDBC driver developers to take part in the
discussionsof the new FE/BE protocol (if they aren't already).  2PC / XA resources in the JDBC driver will provide a
verylarge boon to Postgres in the Java / J2EE arena. 

Second, PostgreSQL needs to run as a production grade system on Windows if you want to increase "mind share".  Why?....

Postgres is great, and free ($) but if you can only run a "production" system on UN*X there is a cost as far as a
windowsdeveloper is concerned.  That cost is the time and effort required to learn some flavor of UN*X in order to
deploythe database.  That is a very significant investment in time ($) to learn and money ($) for books. (Yes you can
learneverything you need online for free, but who is going to do that... People buy books.) 

When you get a production quality Postgres on Windows you will be immediately increasing the potential user base for
Postgresand that will have a very large effect on the "mind share" postgres has.  I would bet one of the reasons MySQL
isso popular is because a Windows developer can just install a binary and use it on their systems. 

Also a very important point everyone seemed to miss in regards to MySQL is that you CAN use it in a "commercial"
environmentas long as you are not distributing your product.  I.E. if you create an app only to be used by your company
internally,then the company doesn't need to buy a MySQL license.  Also, if the company downloads some open source
software,and downloads MySQL, and deploys them both for internal use it is not required to purchase a license for
MySQL.

Why do I KNOW all this?  Because I am a Windows user / Java developer, who has been spending a lot of time ($) and
moneyon books ($) to learn Linux (Because it is awesome!)...  I also spent a lot of time going over MySQL, Postgres,
Firebird,SAPDB and even the old Sybase version that was released for Linux.  I’ve also worked (at work) with Oracle,
DB2,MS-SQL. 

Postgres should not and is not competing with MySQL, and that should not be your focus.  Postgres is competing with
Oracle,MS-SQL, DB2, Sybase, Firebird, etc.  Why?...   

For a few reasons:

1) Some MySQL users have a near religious affiliation with MySQL.  You will never convert these people. Don't even try.

2) Some MySQL users are Windows users who would use any open source database they can, as long as they can run it on
Windowsin a "production" setting.  For these users Postgres is not an option for the moment.  When Postgres Win32 is
available(and production grade) I think many of these users will begin investigating it.  Until recently the only
optionfor an open source DB on Windows was MySQL.  (Now you have Firebird, SAPDB, and probably others).  So yes in some
aspectyou are competing with MySQL here...  But why compete, just make the best product you can and let the user decide
whichone they want to use. 

3) Some MySQL users only need what MySQL provides.  There is no incentive for these users to switch; the system they
knowdoes what they need. 

Don't try to compete with MySQL it's a waste of time.

DO compete with Oracle, etc..

1) Postgres is a contender in many significant areas to the commercial DB's.  When postgres has replication and 2PC
thiswill definitely increase the threat that Postgres is to the commercial DB market. 

2) Users who need triggers, stored procedures, etc. cannot consider MySQL.. it doesn't support those features (at the
moment). They can look at Postgres, SAPDB, Firebird, and the commercial DB's.  To compete Postgres has to be better
thanthese other options. 

What makes Postgres the better solution in this arena?
a) price - although remember the related costs I mentioned above.  Also firebird and SAPDB are free and run on Windows,
sothey may have a "lower price" for Windows developers for the moment.  Postgres Win32 will help us in this area. 
b) reliability - no, all the DB's are fairly reliable. (let’s not waste time discussing this one ok folks)
c) XA resources in Java, 2PC.. No, we don't have it yet.. We need it.  I think the firebird JDBC driver has this
already. This sounds like it’s coming in 7.4. 
d) Replication - no, we don't have it yet.. We need it.  Sounds like master slave is coming in 7.4.  We need to get
multi-mastersoon.  You can already do multi-master replication in MySQL.  (Yes we all know that what they have for
replicationis not as robust, especially if you use it in multi-master (circular replication a->b->c->a) but at least
theyhave something.  Let’s not waste our time discussing what they have..  Let’s instead spend that time building an
evenbetter solution for Postgres.) 
e) cross-db queries - no, we don't have it yet.. We need it. (extend postgres views capability, dblink and use 2pc?
Seeearlier post). 
f) stored procedures that return result sets (tuples). – Postgres finally got that in 7.3.
g) …insert your needed feature here…
If Postgres had 2pc, and Replication that would definitely move it closer to killing the commercial db's.  2pc is a
buildingblock to getting cross-db queries (across servers). 

So, from the above RIGHT NOW Postgres is NOT a better solution than the commercial DB’s except in the area of price…
Andthat is true only for people already familiar with UN*X.  Don’t get me wrong here folks I love Postgres..  Its just
timefor us to take a step back and look at the facts, and the facts are Postgres needs even more to be truly
competitivewhere it should be competing. (Not competing with MySQL.)  I think many of the features Postgres needs to be
abetter competitor are coming in the 7.4 release. 

Other things that can / need to be done to increase Postgres “mind share”.

a)    Embrace the Java community.  The Java community has very good and close ties to the open source community.  This
isobvious because of the numerous open source projects in and for java.  Jakarta.apache.org and all the frameworks on
itlike log4j, Struts, etc.  Free open source J2EE app servers like Jboss, Jonas, etc..  However, the JDBC driver for
Postgresis HARD TO FIND!  It’s hard to find because someone new to postgres can’t find anything about it on the
Postgresql.orghome page.  There is no link to it, and no mention of it.  Granted the JDBC driver can be found by
searchinggoogle, and by looking in the interfaces folder of the download.  But a new Java visitor may not search
google,and probably won’t bother to download Postgres if they don’t think it supports JDBC.  Also, Postgres supports
manydifferent languages for use in functions and stored procedures, but it doesn’t support Java.  Many commercial DB’s
do. Maybe Postgres should consider adding support for Java in this area?  (I don’t think this is overly important, it’s
justsomething else that could be done.) 

b)    The Postgres group has done a lot to improve the homepage of Postgresql.org.  But when you click on most links it
takesyou to another site with a completely different look and feel.  The side effect of this is that the Postgres
projectlooks as if it is un-organized.  Even more needs to be done in this area.  The postgres site should be more
cohesivewith a single look and feel for as much of the site and its links as possible.  Look at apache.org.  They have
MANYprojects going on, but have a singular (or at least very similar) look and feel across most of their projects.  You
wanta real shocker…  Visit the gborg homepage (click the gborg link on the bottom left corner of the postgres site).
Thenread the news on the right side of the gborg homepage.  See that url for http://www.greatbridge.org/ in the
GreatBridge.OrgVersion 2.0.0 Release story from way back in 2001!  Go ahead, visit that URL.  What’s the first thing
yousee on that page?  “Purchase IBM DB2 At IBM.com”.  Come on!  Not even a mention of Postgres, and this is right on
thegborg homepage!  The firebird, sapdb and mysql sites are killing postgres here.  The postgres homepage and related
linksis the first thing someone new to postgres sees!  There shouldn’t be news on any of the main pages from back in
2001. It looks like nothing is going on with Postgres.  There has got to be more recent news that can be put up.  Also,
goingback to the Java thing, the link for “PostgreSQL JDBC 2.0 API compliance” on the JDBC homepage goes to a dead link
andhas been that way for weeks.  What does this tell a new person looking to use Postgres from Java? 

I could keep going here, but this message is long enough already…

Basically my points are:

1) Postgres IS GREAT, but for the moment the real competition (Commercial DB’s) are providing more features.  We need
tocatch up in some areas, and provide things they can’t in others (easy / free / safe / multi-master eager replication) 

2) We shouldn’t be competing with MySQL.

3) Postgres may be great, but the perception given by collection of sites for postgres is that the project is
un-organized. All the other open source DB’s have a better look / feel / organization in this area. 

Later
Rob



pgsql-hackers by date:

Previous
From: Rob Butler
Date:
Subject: Re: cross-db queries (was Are we losing momentum?)
Next
From: Tom Lane
Date:
Subject: Re: GLOBAL vs LOCAL temp tables