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. Ive 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. (lets 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 its 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. Lets not waste our time discussing what they have.. Lets 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 DBs except in the area of price Andthat is true only for people already familiar with UN*X. Dont 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! Its hard to find because someone new to postgres cant 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 wont bother to download Postgres if they dont think it supports JDBC. Also, Postgres supports manydifferent languages for use in functions and stored procedures, but it doesnt support Java. Many commercial DBs do. Maybe Postgres should consider adding support for Java in this area? (I dont think this is overly important, its 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. Whats 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 shouldnt 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 DBs) are providing more features. We need tocatch up in some areas, and provide things they cant in others (easy / free / safe / multi-master eager replication) 2) We shouldnt 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 DBs have a better look / feel / organization in this area. Later Rob
pgsql-hackers by date: