When the people wanted more, InnoDB appeared with full transaction support. But that wasn't enough. Now there may be 20 storage engine options -- more than enough to drive a DBA insane. Sure, there will be some times when it's nice to switch between the engines without rewriting your SQL, but there will always be confusion later. Did I choose MyISAM or InnoDB for that table? Or did I decide to write out the data in CSV format instead?
The profit motive
For all its success as an open source product, MySQL is still a business full of professional developers who earn a paycheck. While most users continue to enjoy the best features of the open source license, there's no doubt the company must continue to earn enough money to keep the lights on. This leads to a strange tension between the free code distributed as a "community edition" and the full product that is sold to businesses.
Should you pay? Do you get much for the money? Is it unfair to run a business on the community edition? Are the extra features in the enterprise edition simply gimmicks to lure us into paying forever? At the very least, this is another set of questions that demands an answer. Which edition? Which license? Which feature set?
Lack of native JSON support
The best way to see the age of MySQL is to install it, then realize that you need to add more drivers to make it useful. MySQL generally talks on port 3306, and it generally spits out data in its own inscrutable format. If you want your code to talk with it, you must add another layer of code that converts the MySQL-speak into something useful. These layers of code, distributed as libraries, often send people to buy a commercial license.
Modern data storage layers usually speak JSON directly. While MySQL and MariaDB now have the ability to parse JSON as part of SQL, this isn't the same as a nice, native JSON interface like the ones that can be found on CouchDB, MongoDB, or any of the latest tools.
The rise of closed-source, proprietary modules
Did I say that MySQL is open source? It is -- except for some of the newer, closed-source, proprietary modules built around the "open core." Programmers need to eat. Oracle needs to monetize its hard work. This is one of the realities of business. It's not like the hospitals that use MySQL are giving away medical care. It's not like the farmers who use MySQL are giving away food.
It's a bit unfair to hold MySQL to a higher standard, but open source success can be a trap. Just because it starts off free doesn't mean that it can remain so. If businesses want many of the newer features, they'll have to pay one way or another. Sometimes paying Oracle is much cheaper than writing the code in-house. Sometimes commercial, closed-source code makes sense. If only it were easy to figure out when this is true.
Sign up for CIO Asia eNewsletters.