MySQL and MariaDB are relational database management systems (RDBMS) best known for their mutual compatibility and their identical command and query syntaxes. In fact, MariaDB is a free and open source fork of MySQL that inherited many of that database's characteristics.
However, MySQL and MariaDB are diverging, and their present datafile-level compatibility is expected to lapse. What does this mean for organizations considering using either or both?
The Swedish software house MySQL AB created the first MySQL release in 1995. MySQL AB grew into a large open source company, and its RDBMS became one of the most-used databases.
In 2008, Sun Microsystems acquired MySQL AB, and in 2010, Oracle acquired Sun. On the day of Oracle’s announcement, MySQL AB co-founder Michael "Monty" Widenius forked the existing code to create MariaDB, primarily due to concerns about the acquisition, to keep a version of the program free and open source.
MySQL is now developed by Oracle, which offers a free, open source Community version as well as proprietary, licensed Standard and Enterprise editions. It has a larger user base than its forked counterpart, but latest releases lag slightly in terms of feature set compared to MariaDB.
MariaDB, developed by the MariaDB Foundation and its associated community, is completely open source. MariaDB was initially based on and intended to enhance MySQL 5.1 with new, improved functionality. Its most recent version makes several features available that aren't supported by MySQL, such as set operations, window functions, and table versioning.
Each RDBMS has high-profile users in various industries.
The MySQL roster includes Zappos (e-commerce), NASA (aerospace/defense), McGraw-Hill Education, Eli Lilly (health care pharma), and Tesla (manufacturing).
MariaDB users include Walgreens (retail), Intel and Nokia (technology), Verizon (wireless communications), NASDAQ (financial markets), and DBS (financial services).
These RDBMSes feature compatible schemas. Data files and table definitions match, both databases support the same kinds of indexes, and both boast similar query optimization options.
Additionally, MySQL connectors work with MariaDB because the two products' APIs and protocols are the same. Interfacing with databases through the command line is essentially identical in both systems, and MySQL tools such as mysqladmin and mysqldump work with MariaDB..
Each project has independently developed new and differing features since the fork, however. For example, MySQL now has a native JSON datatype, while MariaDB only supports JSON-like data and JSON-related operations. For its part, MariaDB offers a columnar storage engine, unlike MySQL.
Both support many of the same storage engines:
MariaDB supports additional storage engines such as Aria, Cassandra, MariaDB ColumnStore, MyRocks, and XtraDB.
MySQL and MariaDB allow users to replicate individual tables or whole databases across servers for backup and clustering, including replication from one RDBMS to the other, though compatibility varies between versions. MariaDB supports several minor additional features for replication.
On the database security front, MySQL 8.0 has taken a step forward by implementing default authentication utilizing the SHA-256 algorithm. Meanwhile, MariaDB distinguishes itself by allowing users to encrypt all logs and temporary tables.
MySQL has its own key management tools (available only in Enterprise editions). MariaDB provides an Amazon Web Services (AWS) encryption key plugin.
Regarding user privileges and authentication, MySQL includes a super-read-only mode that can prevent users with even SUPER administrative rights from modifying or updating tables and databases. Meanwhile, MariaDB introduced invisible columns — hidden data attributes that do not appear in query results.
MariaDB also supports role-based access control (RBAC) mechanisms, and hence has more sophisticated user rights configuration options and internal security.
The two RDBMSes have similar speed and performance. Benchmarking differences depend upon the specific versions and storage engines used, use cases and queries, number of users and concurrency requirements, and the operations or metrics measuring performance.
There are specific architectural differences that impact performance. MariaDB supports thread pools, which can improve concurrent connection and execution, especially for simple but CPU-intensive queries, such as those in online transaction processing. MySQL does not have options for a non-static number of threads, except in the proprietary Enterprise version, which includes thread pools.
Both MySQL and MariaDB run on all major platforms and operating systems, though MySQL is additionally available on IBM’s z/OS for mainframes.
Both are offered on AWS, Microsoft Azure, and Rackspace Cloud, and MySQL is available as a service on Google Cloud Platform.
The platforms have very different development models. Oracle develops MySQL and offers one open source Community edition and several paid, closed-source editions with greater support and more features. MySQL development and governance is exclusive to Oracle employees and closed to the public.
MariaDB code and documentation is managed by the MariaDB Foundation, which operates under a community governance model involving public voting and transparent discussions. MariaDB’s crowdsourced approach yields new versions more often than Oracle releases new MySQL versions. This means bugs may be resolved and fixes deployed quickly, but that may require systems administrators at sites using MariaDB to roll out more frequent updates.
Both MariaDB and the Community edition of MySQL use a GPLv2 license.
Though there are many similarities between the RDBMSes, a glance at MariaDB’s documentation highlights myriad incompatibilities. What’s more, MariaDB announced that it no longer will guarantee drop-in compatibility, and several of its most recent releases have accelerated the divergence between the two platforms. Users evaluating the two should not consider them interchangeable.
When choosing between MySQL and MariaDB, the fundamental question to answer is which system your organization feels more comfortable with. Both are stable, well-supported RDBMSes.
If you're considering either RDBMS, chances are you're eventually going to want to use some of the data you store in it for business intelligence. When that day comes, you'll want to replicate your data to a cloud-based data warehouse. Stitch's ETL platform supports both MySQL and MariaDB as data sources, and all popular cloud data warehouses as destinations.
Try Stitch for free today and efficiently load data from your favorite relational database into the leading data destinations.