If you are a developer or sysadmin, you have probably heard or read a lot about MySQL and MariaDB. Both are quite efficient and even compatible relational database management systems. This makes it not always easy to decide on one or the other. So the goal of this post is to establish differences and similarities between MySQL and MariaDB. Also, I will try to answer the question that many people ask themselves, what’s the difference between both?
MySQL vs MariaDB: What are they?
I will start with the older one.
MySQL is a relational database management system that was born in 1994 by MySQL AB. It is incredibly popular in many projects worldwide.
It is mainly written in C and C++ and uses a Client-Server infrastructure. This allows queries to be made in the form of requests and handled as a system service.
Currently, MySQL is an Oracle property. This has brought some changes to the development and business model of the application.
Oracle does not have a good reputation within the open-source community and to protect the source code and the application, MariaDB was born.
MariaDB is a MySQL fork created in 2009 by Michael Widenius. It is a database management system that adds other programming languages such as Perl to its functions.
The development of MariaDB is under the supervision of the MariaDB Foundation which is in charge of publishing and safeguarding the source code.
Main similarities of both
Let’s start with a concrete fact. Both are very similar programs with fairly common objectives. On the other hand, it’s also a fact that MariaDB is a MySQL fork, which makes it compatible with many MySQL features.
Apart from this, we could establish some similarities to better understand both programs:
- Both focus mainly on the relational database model. Although also, they support a secondary model NoSQL and document-oriented.
- Both MySQL and MariaDB use the MySQL protocol for the data.
- Another similarity is that both support master-slave and master-master replication with GTID.
- Both can be installed on various operating systems such as Windows, Linux or BSD.
MySQL vs MariaDB the differences
Despite being compatible programs, the development has been differentiated each time and now we can talk about two compatible programs but with some very marked differences.
Firstly, the main difference for developers is the license. In MariaDB, the license is the GPLv2, that is, a very permissive license for many projects. On the other hand, MySQL shares a GPLv2 license for the community version and a more restrictive one for commercial versions.
Although both programs are indeed developed in C and C++, MariaDB incorporates the Perl and Bash language for many of its operations.
To make large backups MySQL uses a MySQL Enterprise Backup and MariaDB Backup program.
Routing and load balancing are made through MySQL router and MariaDB Max Scale respectively.
MariaDB supports many more database engines than MySQL. Some of them are Aria, Cassandra, CONNECT, Mroonga or MyRocks.
Although both have connectors for many languages, MariaDB officially supports Microsoft Excel, R, and Swift.
Reasons to use MySQL
This is a good question.
Under Oracle’s sponsorship, MySQL has further established itself as a stable, robust and professionally supported database manager.
MySQL is also available on various cloud platforms such as the Google cloud platform. Something that MariaDB does not have.
On the other hand, MySQL is currently very focused on the professional arena with exclusive tools for proprietary licenses. This means that the full potential of MySQL is focused on corporations.
This can lead to a great alternative for a business that will see how a MySQL license will bring in very big profits.
From the most technical point of view, we have a very stable application with support for many operating systems. Plus professional support when you need it.
Reasons to use MariaDB
The reasons for using MariaDB are very diverse. We could start with the issue of the license. Many developers prefer to use MariaDB at the beginning because the GPLv2 license is quite permissive for many projects.
Another aspect to take into account is that MariaDB supports many database engines. Each of the database engines has many different features that suit different situations.
In the previous point, it provides flexibility to developers and sysadmin who can choose the one that best suits their needs.
MariaDB has commercial and professional support, but that does not make the free and community version any less capable. This differs much from MySQL that has many limitations in the community version.
Another aspect to keep in mind is that MariaDB is available by default on most popular Linux distributions. So the installation and maintenance process becomes easier.
Also, MariaDB has a more active development and often releases a new version that fixes bugs and improves the performance of the program.
In general, the performance of MariaDB is better than MySQL. Especially in situations with medium or large databases. And thanks to several engines it supports.
So, MySQL or MariaDB?
The decision is not as easy as it seems. Both programs are quite good and meet their objectives adequately.
MySQL under Oracle’s tutelage has gained commercial and professional support but is somewhat restrictive for small projects.
With MariaDB, there is extraordinary community support. This makes a lot of people and documentation available to deploy a database server.
Nothing guarantees the continuity of these projects, but MariaDB is supported by a foundation and many Linux distributions which makes us think that in the future MariaDB will become more and more consolidated.
On the other hand, in some scenarios, MariaDB shows better performance and that’s why more and more projects are using it. This makes it depend on many factors for each developer.
In spite of this, in both cases, we are talking about solid and stable applications that have been tested by users.
So the final decision is yours. I hope this post has helped you put into perspective which decision to make and what the difference is between both.