Thursday 5 February 2009

The Most Appropriate Open Source Database ?

An upcoming development of mine ideally needs to store data in a powerful, multi user relational database system. Not a problem - I'm a big fan of Oracle and use it daily. The fly in the ointment this time is that due to the nature of the software the database system needs to be inexpensive, ideally free.

There are several 'free' database systems to choose from. the two most well known and highly rated are MySQL and PostgreSQL. Of the two MySQL seems to be great for 'quick and dirty' data storage while from the research I have done PostgreSQL seems to be far more advanced and with features nearer to what I would expect from Oracle.

I have experience of using MySQL, both locally on my Mac and also as part of the Plesk installation on my dedicated web server. It seems straight forward enough and would probably suit my needs, but the more I read the more drawn towards PostgreSQL I am becoming.

A big benefit of both of these database systems is the ability to install the server software on my Macbook Pro, a big plus when traveling, as Oracle doesn't install on a Mac and requires a seperate VM on which to run.

A very fast download and equally fast installation on my Mac left me very surprised. PostgreSQL really feels very professional and even comes with some nice admin tools. I tried the same exercise on one of my virtual Windows 2003 servers with the same result.

I have yet to do any extensive testing with PostgreSQL but I have already ruled out MySQL. Far from being free, it cannot be used with my commercial application without I first purchase a license. Apparently MySQL is released under the very restrictive GPL license and this effectively means that if I use MySQL as my data store then my commercial application falls under the same licensing - in other words I have to make it Open Source. Which I am not prepared to do.

PostgreSQL on the other hand is released under the far simpler BSD license. Which you can read below: (Click to enlarge the image)



This is a much better fit for my purpose. I'm not sure why MySQL appears to be so much more popular given the restrictions of the licensing ? Maybe it is just easier to use ? Maybe people do not realise how restrictive the licensing is ?

Anyway, it's full steam ahead with evaluating PostgreSQL then. The elephant takes the lead :-)

Note: Another big plus point in favour of PostgreSQL from my point of view is that native drivers are available for my current development platform of choice, REALbasic. No middleware needed ... If PostgreSQL turns out to be as good as I suspect it is, it may well replace Oracle in some of my future higher value commercial applications.



www.artenscience.co.uk
Quality Commercial Software and Custom Software Development


Arten Science RSS Feed

3 comments:

Anonymous said...

Steve, having used both MySQL and Postgres, I would also choose Postgres 90+% of the time.

However, you should re-read the terms of the GPL - if you use MySQL as part of your application, then your application does *NOT* then need to be released under the GPL. This restriction only applies to MySQL itself - if you were to make changes to MySQL (e.g. create a new type of table format), *and* you decided to distribute those changes, you would also be obliged to make your changes *to MySQL* available for free.

Assuming you're not changing MySQL code, your application can be released under whatever licence you choose.

larson said...

http://www.blogitude.com/2009/01/13/sun-claims-mysql-backend-requires-commercial-license/
I do not think you need a mysql license unless you make changes and redistribute mysql. Just using it does not mean you need to release your code under the GPL.

Steve Cholerton said...

I'd like to disagree with you both and point to link that verifies what I'm saying ... unfortunately further research seems to indicate that MySQL are as confused about their licensing as everyone else - I cannot find a definitive answer anywhere !

The nature of the GPL is very viral though - and I for one would rather steer clear, just in case :-)