We're building a web based e-learning application

Choice of DBMS

At every start-up/project that is based on Linux one of the first and biggest decisions is which database to use.

In the Linux world there are many options, but considering our needs we had two choose between the two… usual suspects, PostgreSQL  and MySQL.
For those of you who just want the answer, we chose the one with the elephant logo, PostgreSQL :-) .

postgresql

Now, how we got there:
Initially we had an idea on what we wanted to store in our database system and what functionality we would like to use from them.
Both databases supported (or claimed they did, but we will discuss this later) all the required features, which made our choice more difficult since the capabilities are similar.
Then we roamed the Internet searching for comparison articles and researches as well as asking friends. A good informative link was the wikivs one:
http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL. One important factor on making a decision is the size as well as the requirements
of the application. This is an issue for us since we do not have an estimation of the data we will use since we are still in prototyping phase.

At the end of the day, it became a matter of personal preference, buzz as well as the history of those two projects.
History: MySQL has a history of having more features, while PostgreSQL has the fame of being more stable and rolling out features in a more conservative pace. Since both have the features we need, we preferred PostgreSQL.
Fear of the future: At the time of writing this blog post, Sun systems, that owns the company that owns MySQL is being merged with Oracle, which does not own now only Sun, but… Oracle. MySQL might be fragmented, since one of it’s founding members is rolling a new product. All these have been extensively reported in the news. Summarising all those, we have the fear of further fragmentation of the RDBMS or even it’s death (if Oracle’s boss says so). We are a very small company to cope with someone forcing us to change our RDBMS, or worse even people mocking us for not using the Microsoft stack.
Stored Procedures: PL/SQL, one of the languages that you can write stored procedures in PostgreSQL, is very similar to Oracle’s similar language. Accidentally both members of the Notion Learning team had some Oracle stored procedure experience. That is a plus we have already utilised, in some pair programming sessions.
Documentation: This is a quality versus quantity issue. Working with MySQL one can google up to thousands of pages with tutorials and help, generally of good quality, but some of not so good and many in total beginner level. On the PostgreSQL side, the situation is different: few resources but of very high quality. That has the immediate outcome that all the information is being stored into few locations, saving time to search for answers, something vital in a start-up. Eventually that was true: In the first month of using the language whichever question came up, the answer was at either the official manual, or at stackoverflow (http://stackoverflow.com/) or a few google clicks away. This reminds of the *BSD vs linux situation where many pro-BSD advocates argue that there are not so many tutorials and pages about BSD unices, mainly because the man-pages are of such high quality that people just read those.
Tools: Exactly the same landscape as documentation, few (and free) of high quality for PostgreSQL, more, of various levels for MySQL. Some commercial ones might be purchased in the future. The commercial ones existing add value to the product, instead of trying to clone MySQLs original but more expensive enterprise tool-chain.

This is a summary of our DBMS choosing. But there are some arguments in favour of MySQL worthwhile to mention:

MySQL is everywhere and there are many good bundles for every OS platform (eg. MAMP for Mac and WAMP for windows). It took us many hours to make a stack on an XP development machine. MySQL has more people around it so a larger pool of potential developers, who we won’t have to train after hiring them. Although it is not yet necessary, the ability to choose database engines seems very appealing.

Hope you found this posting informative, please drop us a line with your opinion.

Tags: , , , , ,

This entry was posted on Friday, July 3rd, 2009 at 7:40 pm and is filed under Technical discussion. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply





XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>