Healthy competition can bring out the best in organizations. Just look at companies like Coke and Pepsi or General Motors and Ford, all of which were obsessed with outdoing the other while the customer (hopefully!) reaps the rewards. In this article, I’m going to compare another case where competition has brought about innovation between MySQL and its fork MariaDB.
Who Uses These Databases?
MySQL: MySQL has generated a strong following since it was started in 1995. Some organizations that use MySQL include: Pinterest, Twitter, YouTube, Netflix, Spotify, US Navy, NASA, Walmart, and Paypal.
MariaDB: MariaDB is being used at many large corporations, Linux distributions, and more. Some organizations that use MariaDB include Google, Craigslist, Wikipedia, archlinux, RedHat, CentOS, and Fedora.
What About Database Structure And Indexes?
MySQL: MySQL is a relational database with an ANSI-standard information schema which consists of tables, columns, views, triggers, cursors, and more. Its SQL is a broad subset of ANSI SQL 99.
MariaDB: Since MariaDB is a fork of MySQL, the database structure and indexes of MariaDB are the same as MySQL. This allows you to switch from MySQL to MariaDB without having to alter your applications, since the data and data structures will not need to change.
This means that:
- data and table definition files are compatible
- client protocols, structures, and APIs are identical
- MySQL connectors will work with MariaDB without modification
Even the command line tools are similar with mysqldump and mysqladmin still having the original names, allowing MariaDB to be a drop-in replacement.
To make sure MariaDB maintains drop-in compatibility, the MariaDB developers do a monthly merge of the MariaDB code with the MySQL code. Even with this, there are some differences between MariaDB and MySQL that could cause some minor compatibility issues.
Bill Karwin, author of SQL Antipatterns: Avoiding the Pitfall, believes that MySQL still has a lot of potential and will eventually diverge from MariaDB. “As time goes on, MySQL develops more extensive features or changes to its internal architecture. They have more developers on staff than MariaDB, so they are making changes at a faster pace.”
“Gradually, MySQL and MariaDB will diverge. A noteworthy example is the internal data dictionary that is currently under development for MySQL 8. This is a major change to the way metadata is stored and used within the server. MariaDB doesn’t have an equivalent feature. This may mark the end of datafile-level compatibility between MySQL and MariaDB,” says Karwin.
Where (And How) Are These Databases Deployed?
MySQL: MySQL is written in C and C++ and has binaries for the following systems: Microsoft Windows, OS X, Linux, AIX, BSDi, FreeBSD, HP-UX, IRIX, NetBSD, Novell Netware, and many more.
MariaDB: MariaDB is written in C, C++, Bash, and Perl and has binaries for the following systems: Microsoft Windows, Linux, OS X, FreeBSD, OpenBSD, Solaris, and many more.
Since MariaDB is designed to be a binary drop-in replacement for MySQL, you should be able to uninstall MySQL and then install MariaDB, and (assuming you’re using the same version of the data files) be able to connect. Please note, you will need to run mysql_upgrade to complete the upgrade process.
To download MariaDB, go to the MariaDB downloads page. For Ubuntu, Red Hat, Fedora, CentOS, or other Linux distributions, go to the download repository for your operating system.
What Types Of Replication / Clustering Are Available?
MySQL: MySQL offers master-master and master-slave replication, with the Galera Cluster available for multi-master.
MariaDB: MariaDB offers master-master and master-slave replication as well. MariaDB also uses the Galera Cluster for multi-master. As of MariaDB 10.1, Galera will be included with MariaDB. Enabling clustering will be as simple as activating the configuration parameters.
Who's Currently Behind The Databases?
In 2010, MySQL was acquired by the Oracle Corporation. At that time, one of the original developers, Michael “Monty” Widenius, felt that the Oracle Corporation had a conflict of interest between MySQL and their Oracle database. In response to this, he decided to create a fork of the project named MariaDB. Since then, there’s been a healthy competition between MySQL and MariaDB that has led to some great innovation. Since Oracle is backing MySQL and has a firm foundation, it continues to be the leader. However, MariaDB offers some compelling reasons for why people may want to switch databases.
MySQL: MySQL was originally started by MySQL AB in 1994 by a Swedish company that was created by David Axmark, Allan Larsson, and Michael “Monty” Widenius. The first version of MySQL was released in 1995. In 2008, Sun Microsystems purchased MySQL AB. In 2010, Sun Microsystems was acquired by Oracle.
MySQL is currently maintained by the Oracle Corporation.
MariaDB: On the day Oracle announced they had purchased MySQL, Michael “Monty” Widenius took several MySQL developers and started MariaDB, a fork of MySQL from that point.
"Widenius and many others in the open source community felt Oracle’s ownership might be a conflict of interest, since Oracle already had a competing closed source commercial database. They believed Oracle would be slow to further develop the MySQL database, given the potentially greater focus on the commercial Oracle database," says Brian Wheeler at DevOps.com.
MariaDB enterprise is managed by the MariaDB Corporation AB. The community MariaDB server is managed by the MariaDB Foundation.
The MariaDB Foundation uses a community governance model. They chose to separate the open source and commercial sides of the business.
"Because of the separation between the open source and commercial sides of the foundation, its governance generally is seen by the open source community as positive. This is in contrast to Oracle, which has both its commercial Oracle database and the open source MySQL both under the same governance. Often this is perceived as a conflict of interest, especially when it comes to keeping MySQL up to date," says Wheeler.
Who Provides Support?
MySQL: MySQL offers technical support services as part of Oracle's lifetime support. The support team contains MySQL developers and support engineers who offer 24/7 support as well as bug fixes, patches, and maintenance releases.
Oracle offers MySQL Premier Support, Extended Support, and Sustaining Support depending upon your needs.
MariaDB: MariaDB offers support engineers that are said to be experts in both MariaDB and MySQL. They offer 24/7 support with an enterprise subscription for mission-critical production systems.
Who Supplies Ongoing Development?
MySQL: Ongoing development is done by the Oracle Corporation. They continue to do development and are currently at version 5.7. Development decisions are not open to the public. Security releases come out every two months.
MariaDB: Where MySQL is developed by Oracle and decisions are not open to public discussion, MariaDB is developed with a different methodology. The development is open to the public where all development decisions can be debated and reviewed via a public mailing list. People can also submit patches for MariaDB. According to MariaDB, this methodology allows for more transparent and quicker security releases.
Who Maintains The Documentation?
MySQL: For mySQL, documentation is maintained by the Oracle Corporation.
MariaDB: For MariaDB, the main steward is the MariaDB Foundation, but other people are able to participate in development and documentation.
Is There An Active Community?
MySQL: MySQL is owned and managed by the Oracle Corporation. Oracle offers a Developer Zone on the MySQL website, which can be found at https://forums.mysql.com/. The site contains a variety of forums for running MySQL.
You can view additional information at:
MariaDB: Maria is developed by the open source community, allowing anyone to contribute. You can find additional information on how to connect with online community members, helping with documentation, development, events, and meetup groups at their Getting Involved page.
What About Database Connectors?
MySQL: MySQL offers a variety of database connectors including: ADO.NET, ODBC, JDBC, Python, C++, C, PHP, Perl, and Ruby.
Whether you choose MySQL, MariaDB, or both, Panoply has connectors for both databases. It provides a no-coding solution without the need for data preparation or transformation. This allows you to consolidate all of your data from MySQL, MariaDB, cloud services, and applications into a single data management platform.
Which Database Is Right For Your Business?
MySQL: MySQL is a proven database that has a strong following around the globe. The Oracle Corporation continues to maintain, enhance, and support the product.
MariaDB: The MariaDB provides a drop-in replacement for organizations running MySQL. It is managed by the MariaDB Foundation, allowing people to contribute to the open source product and documentation.
Both products may continue to diverge in the future. For many organizations the fundamental question comes down to, “Which one do you feel more comfortable with?” Would you prefer a larger corporation like Oracle Corp that manages MySQL, or would you feel more comfortable with an open solution like MariaDB? With either choice, your business will win by connecting your databases with Panoply.