Open Source Software Technical Articles

Want the Best of the Wazi Blogs Delivered Directly to your Inbox?

Subscribe to Wazi by Email

Your email:

Connect with Us!

Current Articles | RSS Feed RSS Feed

If MySQL falters, what do you replace it with?


The MySQL relational database serves as a back end for millions of websites, and powers millions of non-Internet data-handling applications. In 2009 ownership of MySQL passed to Oracle when it bought Sun, which had acquired MySQL the previous year. Since then developers and IT managers have worried that Oracle would someday cease support for MySQL because it competes with the company's profitable proprietary database products. This fear may be justified. In August, Alex Williams wrote at TechCrunch, "Oracle is holding back test cases in the latest release of MySQL. It’s a move that has all the markings of the company’s continued efforts to further close up the open source software and alienate the MySQL developer community." We tried to get Oracle to rebut that accusation, but multiple emails and phone calls did not get a response. Does this mean it's time to move from MySQL to another open source database – and if so, which one?

We asked a number of database experts what they think MySQL users should do. John Locke of development shop Freelock Computing is one of many experts we spoke with who suggests MariaDB. He says it's developer, Monty Widenius (who was CTO of MySQL AB before Sun bought the company), "has a great team put together. MariaDB is a great drop-in replacement for MySQL, with some nice performance boosts and an actual forward direction. If I were an enterprise customer of MySQL, I'd drop in MariaDB and sign up for support from Monty Program or whoever they recommend. You're going to get much better tech support and access to developers who built the system over the past couple decades, who understand why it works the way it does, and probably at a better rate than Oracle will charge you."

However, Locke says, "if you're not already built on MySQL, I'd take a hard look at Postgres, MongoDB, and the other options out there. One size does not fit all, and your needs may well be better suited to something entirely different."

Jesse Davis, director of R&D at data connectivity provider Progress DataDirect, has a similar take. "MySQL is one of the most prolific choices for SMB websites, but if I had to choose a FOSS alternative it would be PostgreSQL. It's a full-featured RDBMS that is easy to set up and has many functional similarities to mainline commercial databases. It has great analytics capabilities, so you can run your website and plug it into your favorite business analytics package."

Kaj Arnö is vice president of collaboration at SkySQL, which provides MySQL services and support. Arnö, a member of the original MySQL team, has a historical perspective on the question. "During MySQL AB times, the company was often approached with a question like, 'Sure, MySQL is good, but what if something happens to the small company behind it?' Our answer used to be that while MySQL AB had every intention to continue its existence, the GPL would protect the user base from any risks – implying that the community could at any point fork the GPL product should MySQL AB go bankrupt or otherwise be a bad steward of the product. While the imminent risk for MySQL users at that point wasn't Oracle taking over the product, the same safety net does protect MySQL users today. Anyone concerned with the implications of Oracle's stewardship of MySQL is also protected by the existence of MariaDB, which is a viable, plugin-compatible alternative to MySQL. It also has several added features that make it a better choice for many installations for technical reasons, even beyond the vendor political ones."

Dave Redfern, a senior software developer at online marketplace, says "MariaDB is designed to be a drop-in replacement for MySQL. It aims to be binary-compatible with the same MySQL release – in other words, 5.5 Maria offers the same features as MySQL 5.5. It uses the same client connection libraries and generally looks and behaves just like MySQL. Another possible alternative, Drizzle, on the other hand, has been retuned and dropped a number of features to provide better scaling and performance under higher loads. It can still use the same client connections, but this may change over time. Basically, if you have an existing application, it is better to use MariaDB or stick with MySQL for now and see what Oracle does next. If you're starting from scratch, Drizzle may be an option, or perhaps look to Postgres."

While most of the database experts we spoke with advised MySQL users who feel compelled to change platforms to move to another open source database, John Murdoch, president of software development contractor Wind Gap Data, LLC, has a different suggestion. "The database is typically the core of the application, and represents the largest piece of code that a developer brings into the project from elsewhere. Having a politically correct database may be a nicety, but you need a database to be fast, efficient, and above all extremely reliable. Microsoft SQL Server Express 2008 R2 is all of that, and supports up to a 10GB data file. For a small business website, that'd be my choice every time."

Aside from that one recommendation for SQL Server, the consensus among the more than 30 database experts we turned to for guidance seems to be that if you are using MySQL and you are happy with it, MariaSQL is the way to go. It's a direct MySQL fork that requires hardly any changes to your other software. As a drop-in replacement, MariaDB is the easiest way to migrate away from MySQL, and since it's Monty Widenius's baby, and Monty was a cofounder of MySQL who only quit working on it when Oracle got control of the MySQL trademarks and coprights, you can expect MariaDB support through Monty's company, Monty Program, to be top-notch.

Direct MySQL clones have an advantage because almost every programmer and web designer is familiar with MySQL. If you are picking a database for a new project, a majority of our experts suggest PostgreSQL, which is similar enough to MySQL that it doesn't take a person with MySQL experience long to learn. The others? It depends on many factors, including your skill level and your exact database needs. The experts we spoke with often cited NoSQL databases, which are faster and easier to work with than relational SQL databases when you need to store and retrieve huge quantities of data quickly, but don't need to manipulate it or define its relationship to other database entries.

Each of the databases mentioned in this article has its good and bad points, and each organization's database needs are different, so it is impossible to make a "one size fits all" recommendation. The main point here is not to recommend one database over another, but to point out that plenty of reliable, well-supported databases can be viable alternatives to Oracle's MySQL.

This work is licensed under a Creative Commons Attribution 3.0 Unported License
Creative Commons License.


There is no logical common sense or advantageous technical reason for one to replace MySQL database with the "Free Use" version of SQLServer, as was suggested by John Murdock other than his ignorance on the concept of replacement technical realities or his myopia of seeing the world strictly through a narrow Microsoft lens.
Posted @ Wednesday, December 26, 2012 10:31 AM by W. Anderson
I'm surprised no one said the obvious answer: PostgeSQL. 
I've been using it for years for both small personal projects and enterprise production, and I certainly recommend it.
Posted @ Wednesday, December 26, 2012 11:33 AM by Moi
Actually, PostGres was suggested by a majority of the experts I contacted, especially if you are starting a new project.
Posted @ Wednesday, December 26, 2012 1:07 PM by Robin
PostgreSQL. No contest. For any relational database work that is. Even if it has a lot of very interesting extensions. I'd probably combine it with MongoDB and/or Redis where applicable...
Posted @ Wednesday, December 26, 2012 4:39 PM by Ruurd Pels
Microsoft SQL Server? As a replacement for something actually good like MySQL? AAAHAHAHAHAHAHAHA!!!! I see the MCSE tunnel-vision strikes again, but Mr. Murdoch's probably a Microsoft Gold Partner. No, thanks. It's either MariaDB or PostgreSQL for us, depending on the specific need.  
Matter of fact, we're seriously looking at EnterpriseDB, the "corporatized" version of PostgreSQL, as a gradual replacement for our Oracle databases. A couple of tweaks need to be made to a few of our applications, but nothing really major. So far, it's looking interesting.
Posted @ Thursday, December 27, 2012 7:58 AM by Sum Yung Gai
PostgreSQL is an excellent product and has been in the playing field for many years. Highly recommended. MariaDB sounds very interesting being a fork of MySQL. As for the person that recommended MS SQL 2008, that is a closed-source solution that has a size limit; there's no way I would rely on it for a production application.
Posted @ Thursday, December 27, 2012 11:37 AM by chris_clay
Switching to POstgreSQL makes a lot of sense. It has a relatively brisk development rate, fairly large development community and commercial editions which offer Oracle compatibility (EnterpriseDB).
Posted @ Friday, December 28, 2012 2:05 PM by sola
SQL Express (the free edition) is stable, but it's not fast or efficient: it's limited to the number of cores it will use, and the RAM available (the limitation is not technical; it creates the 'added-value' of the licensed editions).  
How much this matters depends on what the database is used for. The limit has been increased for SQL Server 2012, but then again, you get a lot more cores and RAM in a modern server, so it significantly under-utilises any half-decent server.
Posted @ Sunday, December 30, 2012 4:44 AM by Tim
@tim: so basically for production purposes, it is a toy. Besides. Who in his right mind would pay for licenses if you can get better products that are free?
Posted @ Monday, December 31, 2012 3:19 AM by Ruurd Pels
Post Comment
Website (optional)

Allowed tags: <a> link, <b> bold, <i> italics