For the past two years PostgreSQL has been my RDBMS of choice and has served me well. In fact I love PostgreSQL so much I decided to use it over the MySQL in my dissertation project, but for different reasons than the one exposed. Now someone has asked a sensible question on HackerNews and I am glad they did because the conversation unfolds nicely which tidbits from both sides.
I always got the impression (since I started using it in Prod in the late 90s) that the MySQL team had never worked on an RDBMS before, even as users, and didn’t really understand it. Back then they would say, you don’t need foreign keys, you can just enforce consistency in your application, you don’t need transactions, you can just handle it in your application, and so on and so on. Monty Widenius was very arrogant and thought he knew everything. Eventually they matured a bit and realized that actually, yes, the entire rest of the database community weren’t idiots, maybe there is something to these features, but now they needed to find a way to retro-fit them onto what they had and now – 20 years later – they still haven’t figured out how to smush it into their architecture.
Whereas the Postgres crew were fresh out of the Ingres project led by the genius Micheal Stonebraker, they had a very clear vision and a culture of doing the right thing, not the easy thing. There’s a steeper learning curve but once you have learned a few things you can easily guess the rest because it’s so consistent. For MySQL you really need a “guru” because there are so many dark corners and weird edge cases that make no sense, you just have to “know” them.gaius
And that is also where I found this article that goes in depth on why MySQL might not be such a good idea. Here is a bad argument on why you should use MySQL over something else.
- It’s getting better, so we might as well stay on it. It’s true, if you go by feature checklists and the manual, MySQL is improving “rapidly.” 5.6 is due out soon and superficially looks to contain a number of good changes. I have two problems with this line of reasoning:
- Why wait? Other databases are good now, not eventually.
- MySQL has a history of providing the bare minimum to satisfy a feature checkbox without actually making the feature work well, work consistently, or work in combination with other features.
Ah and this also reminds me about the list of features coming in PostgreSQL 10. If you haven’t read it yet, give it a chance.