MariaDB est un système de gestion de base de données édité sous licence GPL. Il s'agit d'un dérivé communautaire de MySQL : la gouvernance du projet est assurée par la fondation MariaDB, et sa maintenance par la société MariaDB plc, successeur de Monty Program AB. Cette gouvernance confère au logiciel l'assurance de rester libre.

En 2009, à la suite du rachat de MySQL par Sun Microsystems et des annonces du rachat de Sun Microsystems par Oracle Corporation, Michael Widenius, fondateur de MySQL, quitte cette société pour lancer le projet MariaDB, dans une démarche visant à remplacer MySQL tout en assurant l'interopérabilité.

Nom et logo MariaDB doit son nom à Maria, la de Michael Widenius ; MySQL avait quant à lui été nommé en l'honneur de sa première fille, My.

Son logo représente un lion de mer, que Widenius a choisi à la suite d'une rencontre avec ces animaux lors d'une session de plongée avec tuba avec sa fille aux îles Galápagos, en 2002.

Histoire MariaDB a été créé en 2009 par Michael « Monty » Widenius et d'autres développeurs originaux de MySQL, suite à l'annonce du rachat de Sun Microsystems — propriétaire de MySQL depuis 2008 — par Oracle Corporation. Soucieux qu'Oracle restreigne le développement en open source, Widenius et ses collaborateurs ont publié la première version, MariaDB 5.1.38, le 29 octobre 2009.

Les premières versions (5.1, 5.2, 5.3, 5.5) reprenaient le schéma de numérotation de MySQL pour signaler une compatibilité de substitution directe. En 2013, la Wikimedia Foundation a migré les bases de données de Wikipédia vers MariaDB, et Google ainsi que Mozilla ont adopté MariaDB pour leurs bases de données internes. Plusieurs grandes distributions Linux ont ensuite remplacé MySQL par MariaDB comme base de données par défaut, dont openSUSE et Fedora (2013), Red Hat Enterprise Linux (2014) et Debian (2017).

En 2012, les développeurs ont annoncé que la prochaine série de versions serait numérotée 10.x, marquant explicitement l'indépendance du projet vis-à-vis de MySQL. La série 10.x (à partir de 2014) a introduit notamment la réplication multi-primaire virtuellement synchrone via Galera Cluster, un mode de compatibilité Oracle avec la syntaxe PL/SQL, ainsi que la première version à Long-term support (LTS), MariaDB 10.6, en 2021.

La série 11.x (à partir de 2022) a introduit en 2024 un support natif de la recherche vectorielle, disponible en version LTS avec MariaDB 11.8 (2025). La série 12.x, lancée en 2025, se distingue par un nombre record de contributions extérieures à MariaDB plc. La série 13.x est disponible en version préliminaire depuis 2026.

Caractéristiques techniques

Compatibilité avec MySQL Les deux principales caractéristiques qui distinguent MariaDB et MySQL de PostgreSQL sont l'utilisation de threads plutôt que de processus et une prise en charge étendue et intégrée des configurations de réplication, à la fois locales et globales. Cela inclut la réplication géodistribuée et les configurations multi-primaires via Galera Cluster.

L'API et le protocole de MariaDB sont compatibles avec ceux de MySQL, et prennent notamment en charge les opérations natives non bloquantes ainsi que le suivi de progression. La plupart des connecteurs, bibliothèques et applications conçus pour MySQL fonctionnent avec MariaDB. Les connecteurs officiels de MariaDB sont publiés sous licence LGPL, ce qui permet leur utilisation dans des applications commerciales sans les contraintes du copyleft, et sont largement utilisés par les distributions de systèmes d'exploitation pour se connecter aussi bien à MariaDB qu'à MySQL.

Le format sur disque de MySQL et de MariaDB était identique jusqu'à MySQL 5.7. MySQL 8.0 a modifié ce format — en supprimant les fichiers de schéma .frm, en changeant le protocole d'authentification par défaut et en modifiant d'autres fonctionnalités — ce qui fait que le transfert de données entre MySQL 8.0 (ou une version ultérieure) et MariaDB nécessite un export logique puis une réimportation. La plupart des fonctionnalités visibles par l'utilisateur partagent largement la même syntaxe, ce qui facilite la migration de MySQL vers MariaDB. La réplication entre MySQL et MariaDB reste possible dans les deux sens.

Certaines fonctionnalités divergent davantage, notamment le format de réplication GTID et l'implémentation du stockage JSON.

MariaDB intègre un pool de threads (thread pool) dans toutes ses éditions, y compris la version communautaire, qui gère les connexions via un petit groupe de threads de travail plutôt qu'un modèle à un thread par connexion. Le pool de threads de MySQL, longtemps réservé à MySQL Enterprise Edition, est disponible dans MySQL Community Edition depuis la version 26.7.0 (Early Access).

Compatibilité avec Oracle Le mode de compatibilité Oracle (sql_mode=ORACLE), disponible depuis MariaDB 10.3, est conçu pour faciliter une migration incrémentale depuis Oracle Database, en permettant de porter les applications fonctionnalité par fonctionnalité ou application par application plutôt que de nécessiter une réécriture complète. Le mode Oracle prend en charge la syntaxe des procédures stockées PL/SQL, une gestion de NULL compatible avec Oracle, ainsi que des fonctions de style Oracle telles que NVL() et DECODE(). Dans de nombreux cas, les applications Oracle peuvent fonctionner sans modification avec MariaDB en remplaçant simplement le connecteur ODBC ou JDBC d'Oracle par celui de MariaDB. Le mode Oracle a été développé initialement en collaboration avec DBS Bank.

Les séquences, créées avec CREATE SEQUENCE, sont des objets de base de données à part entière, indépendants de toute table particulière, avec prise en charge des séquences décroissantes et un contrôle fin de la mise en cache ; MySQL ne dispose d'aucune instruction CREATE SEQUENCE équivalente.

Moteurs de stockage MariaDB prend en charge une architecture de moteurs de stockage enfichables, permettant de choisir un moteur différent pour chaque table selon les besoins de la charge de travail — un éventail plus large que celui de MySQL, centré sur InnoDB.

InnoDB : le moteur par défaut, offrant des transactions conformes aux propriétés ACID, un verrouillage au niveau des lignes, la prise en charge des clés étrangères et la récupération après panne. Aria : moteur résistant aux pannes utilisé en interne pour les tables temporaires et système, avec récupération via un journal de transactions en écriture anticipée (write-ahead log). MyRocks : basé sur RocksDB, un moteur de type log-structured merge-tree développé par Meta, offrant un débit d'écriture plus élevé et une meilleure compression pour les charges de travail à forte intensité d'écriture. Heap/Memory : moteur de stockage en mémoire pour des données temporaires à accès rapide ; les données sont perdues au redémarrage du serveur. Spider : moteur de fragmentation (sharding) qui répartit les données entre plusieurs instances de MariaDB, permettant de les interroger de manière transparente comme une seule table ; il prend en charge le partitionnement et les transactions XA. CONNECT : permet à MariaDB d'interroger des sources de données externes — notamment CSV, ODBC, JDBC, MongoDB et d'autres formats — comme s'il s'agissait de tables SQL standard. DuckDB : moteur de stockage enfichable qui intègre le moteur analytique en colonnes de DuckDB au sein de MariaDB Server.

Transactions et concurrence MariaDB propose des transactions entièrement conformes aux propriétés ACID, avec la prise en charge de plusieurs niveaux d'isolation : lecture non validée (read uncommitted), lecture validée (read committed), lecture répétable (repeatable read) et sérialisable. Le moteur de stockage par défaut, InnoDB, implémente le contrôle de concurrence multiversion (MVCC), permettant aux lecteurs et aux rédacteurs d'opérer simultanément sans se bloquer mutuellement. Depuis MariaDB 11.8, l'isolation par instantané (snapshot isolation) utilise par défaut le mode strict, garantissant que les transactions voient une vue cohérente de la base de données depuis leur instant de démarrage.

Architecture de plugins Au-delà des moteurs de stockage, MariaDB dispose d'un ensemble d'API enfichables (pluggable). Les catégories de plugins comprennent :

Méthodes d'authentification Recherche en texte intégral, notamment Mroonga pour les langues CJK (chinois, japonais, coréen) Audit : journalisation de l'activité de la base de données à des fins de sécurité et de conformité Gestion des clés de chiffrement, notamment l'intégration avec HashiCorp Vault et AWS Key Management Plugins de supervision et de statistiques Validation des mots de passe Handler Socket : une API à haute vitesse permettant d'utiliser les tables InnoDB comme un magasin clé-valeur Méthodes de compression : bzip2, lz4, lzma, lzo et snappy Types de données enfichables, notamment inet, json, uuid et mysql_json Fonctions définies par l'utilisateur, chargeables en C, C++ ou Rust ; les fonctions simples et les fonctions d'agrégation (group-by) sont toutes deux prises en charge

Les plugins peuvent être chargés ou remplacés à l'exécution sans qu'il soit nécessaire de recompiler le serveur. Un catalogue sélectionné de plugins et d'autres outils compatibles avec MariaDB est maintenu par la fondation MariaDB sous le nom de MariaDB Server Ecosystem Hub.

Connectivité MariaDB fournit des connecteurs officiels pour C, C++, Java, Python, Node.js, ODBC et R2DBC, publiés sous licence LGPL, ce qui permet leur utilisation dans des applications commerciales sans les contraintes du copyleft. MariaDB utilise le protocole client-serveur de MySQL, maintenant une compatibilité au niveau du protocole avec les bibliothèques clientes de MySQL.

Langage SQL MariaDB prend en charge le SQL standard, notamment les procédures stockées, les fonctions, les déclencheurs (triggers), les vues, les fonctions de fenêtrage et le type de données JSON, avec un ensemble complet de fonctions de stockage et d'interrogation de documents.

Les tables à contrôle de versions de système (system-versioned tables), conformes à la norme SQL:2011, enregistrent automatiquement l'historique complet de chaque ligne. Les données historiques peuvent être interrogées à l'aide de la clause FOR SYSTEM_TIME AS OF pour récupérer l'état d'une table à un instant passé donné, sans nécessiter de tables d'audit ni de déclencheurs maintenus manuellement.

L'algorithme INSTANT pour ALTER TABLE permet d'effectuer en quelques microsecondes l'ajout ou la suppression de colonnes ainsi que la modification des valeurs par défaut, en ne mettant à jour que les métadonnées, sans reconstruire la table. Depuis MariaDB 11.2, les modifications de schéma non instantanées s'exécutent par défaut de manière non bloquante, permettant des lectures et écritures concurrentes pendant l'opération.

Analytique MariaDB prend en charge les charges de travail analytiques grâce à ColumnStore, un moteur de stockage en colonnes qui conserve les données par colonne plutôt que par ligne, réduisant les entrées-sorties pour les requêtes d'agrégation et le rendant adapté aux cas d'usage d'entrepôt de données et d'informatique décisionnelle. Les capacités analytiques SQL standard, notamment les fonctions de fenêtrage et les expressions de table commune (common table expressions), sont prises en charge par tous les moteurs de stockage. L'édition Enterprise de MariaDB plc peut utiliser Exasol pour accélérer les requêtes analytiques.

Réplication et haute disponibilité MariaDB prend en charge la réplication primaire-secondaire au moyen d'un journal binaire (binary log), avec des modes asynchrone et semi-synchrone. La réplication multi-source permet à un serveur secondaire de recevoir des modifications de plusieurs serveurs primaires simultanément, et la réplication parallèle réduit le retard en appliquant les modifications de manière concurrente.