mardi, 14 avril 2020 00:24

MySQL et MariaDB, si proches mais si différentes

Écrit par Julien

MySQL est l'une des bases de données les plus utilisées dans le monde. Elle est gratuite et Open Source depuis 1995. Cependant, avec le rachat de Sun par Oracle, son modèle de commercialisation a changé. On est alors passé à un système de double licence dont une commerciale. Cela n’a pas été du goût de nombreux membres de l’équipe originale de MySQL. Ils ont quitté l’entreprise pour donner naissance à un « Fork » , MariaDB. Bien que basé sur son prédécesseur ce nouveau SGBD en est assez différent. Voici un historique de ces deux poids lourds des données ainsi qu’un point sur leurs différences, forces et faiblesses.

Les riches heures d’un moteur SGBD Open Source

MySQL est une base de données relationnelle (RDBMS) qui a vu le jour en 1995. Elle a été créée par Michael Monty Widenius et David Axmark lorsque le marché était dominé par les solutions propriétaires de Microsoft et d'Oracle. Développée en C/C++, MySQL devient vite l'une des bases de données les plus populaires. Elle est rapidement adoptée par les développeurs internet et atteint son apogée entre 2004 et 2005. MySQL est aujourd'hui une marque archétypale. Son rôle a été essentiel dans la construction du web tel que nous le connaissons aujourd'hui. Moins de dix ans après sa sortie publique, MySQL dominait le marché des bases de données relationnelles Open Source.

Un rachat en pleine ascension

En 2008, MySQL AB, la société suédoise à l'origine de MySQL, est rachetée par Sun Microsystems pour environ 1 milliard de dollars. Cette société a notamment créé JAVA et le système d'exploitation Unix Solaris. Elle et a contribué de manière significative à différentes technologies informatiques. Notamment dans le domaine du supercomputing et des stations graphiques. Malheureusement l’acquisition de l’icône de l’Open Source qu’est MySQL ne suffit pas à sauver Sun de la faillite. La société est achetée par Oracle, le géant privé des SGBD, au nez et à la barbe d’IBM. C’est un coup de génie de Larry Ellison, PDG d’Oracle, car son SGBD nommé Oracle comme la société en représente 80% des revenus. A l’époque MySQL est son concurrent le plus sérieux et en plus il est Open Source.

Les critiques infondées des puristes

Avec la caution financière d’un géant privé comme Oracle derrière l’équipe réduite de MySQL les réactions ne se sont pas fait attendre. Les puristes comme un de ses créateurs, Michael "Monty" Widenius, crièrent au scandale et même à l’aide. Il écrit à la Commission Européenne pour qu’elle soutienne sa cause et aide à préserver l’aspect Open Source des futures versions. Il craignait, à tort, qu’Oracle rachète le SGBD pour éliminer un concurrent trop gênant pour son propre produit. Il n’en fut rien. MySQL avait fait de sérieux progrès et les grandes entreprises du Fortune 50 transféraient progressivement leurs bases de données (surtout en lecture seule) d'Oracle vers MySQL Leurs licences coûtaient des millions et les frais administratifs liés à l’usage de MySQL étaient bien moins élevés. Ellison n’allait pas tueur la poule aux œufs d’or.

MySQL absorbée mais toujours bien vivante

L'acquisition de la base de données Open Source eu lieu et Widenius, qui avait déjà quitté Sun, forma Monty Program AB. Il emmena dans son sillage de nombreux développeurs MySQL. On peut aujourd’hui s'interroger sur la légitimité des craintes de Monty, le pire des scénarios ne s'est pas produit. Certains ont même avancé que MySQL avait été acheté par Oracle comme simple "victime collatérale" de l'acquisition de Sun. Le développeur du principal moteur de stockage de MySQL, InnoDB, une société finlandaise, a été racheté par Oracle en 2005. Elle a plus tard fusionné avec Oracle qui ensuite racheta Berkeley DB, fournisseur d'un autre moteur bien moins utilisé. Malgré une version Entreprise payante, Oracle a préservé le côté GPL de la licence de MySql. Compatible avec Linux, le SGBD est inclus par défaut dans les distributions Linux, notamment par défaut avec Ubuntu.

Une large acceptation par les tous les marchés

Parmi les géants du Net qui utilisent MySQL, on peut citer, entre autres, YouTube, Booking.com, Airbnb, WeChat, Twitter, Spotify et Netflix (facturation). En 2011 Facebook signalait que ses instances MySQL subissaient sans broncher jusqu'à 60 millions de requêtes par seconde, et près de 4 millions d’accès en lecture/écriture d’enregistrements par seconde. La base de données gérait pratiquement toutes les interactions des utilisateurs : goûts, partages, mises à jour de statut, alertes, requêtes, etc. D’autres organisations renommées utilisent MySQL, c’est le cas notamment de GitHub, de l’US Navy, de la NASA et de Tesla.

Les raisons d’un succès mérité

Un facteur qui a contribué à l'essor et à l'adoption de MySQL est phpMyAdmin. Cet outil d'administration de base de données basé sur le web a été créé en 1998. Il a tôt été employé dans les consoles de gestion des fournisseurs d'hébergement partagé comme cPanel. Ecrit en PHP il a rendu facile l'administration de MySQL sur les serveurs LAMP. Il a rendu possible l’exécution de la plupart des tâches de gestion des données sans que les utilisateurs n'aient à utiliser un terminal Linux. L’autre facteur de la popularité de MySQL est sans aucun doute WordPress qui représente environ 60% des systèmes CMS. Depuis 2003 WordPress est rapidement devenu une autre icône de l’Open Source.

Puis vint le « Fork »

En octobre 2009 le créateur de MySQL, des membres de son ancienne équipe et des passionnés promoteurs de l’Open Source dévoilent MariaDB. Plus qu’un nouveau produit c’est en fait une nouvelle branche généalogique de MySQL, un « Fork » ou embranchement de développement. Cette version 5.1.38 Beta, basée sur MySQL 5.1.38, doit assurer pour toujours le caractère Open Source du projet. L'ensemble des fonctionnalités de MariaDB sont entièrement sous licence GPL tandis que MySQL conserve une approche de double licence, avec des fonctionnalités premium sous licence propriétaire et payante. Oracle ne peut donc pas légalement tirer profit du code de MariaDB et le fusionner à sa base de données propriétaire. En 2009 Monty Program AB et Percona, une société fournissant des services MySQL haut de gamme, ont créé l'Open Database Alliance. Leur objectif est d'unifier tous les développements et services liés à MySQL au sein du « Fork » MariaDB.

Retrouver l’esprit collaboratif de l’Open Source

Il faut savoir que désormais la majorité du nouveau code de MySQL est dû à des développeurs Oracle. A l’opposé, MariaDB peut s’enorgueillir d’un large soutien de sa communauté. En 2019 les contributions volontaires au code ont été de 1009, 247 pour MySQL. Ce chiffre est le même pour les requêtes en Pull sur GitHub (sur 179 ouvertes). MySQL n’a reçu que 247 requêtes Pull dont une seule ouverte. MariaDB dispose d’une liste de diffusion publique et de celle de Maria Discuss. Fin 2012, la fondation MariaDB a été créée pour superviser le développement de la base de données. Elle peut notamment se reposer sur les Maria Captains qui sont des développeurs de confiance ayant un accès en écriture aux principaux arbres MariaDB.

Un développement fulgurant

Peu après la bifurcation, de nombreux développeurs MySQL originaux ont rejoint le projet MariaDB. Les vendeurs de Linux comme Red Hat, CentOS, Arch Linux, Debian, OpenSuse, Slackware, Fedora sont passés à MariaDB comme SGBDR par défaut. C’est aussi le cas pour les distributions BSD, FreeBSD et OpenBSD, tandis qu'Ubuntu l’inclut par défaut. MariaDB a connu un développement dynamique. En raison de l'ensemble des nouvelles fonctionnalités introduites en 2012 elle est passé du numéro de version 5.*, compatible avec MySQL, à 10.0. cela dénote une volonté de refléter le bond en avant des nouvelles fonctionnalités apportées. Des sociétés telles qu'Alibaba Cloud, Tencent, IBM, Microsoft, Booking.com sont devenues des sponsors platine. La Wikimedia Foundation a annoncé en 2013 le passage de Wikipedia à MariaDB. La même chose s'est produite avec Google, et la liste de ses utilisateurs comprend maintenant la Deutsche Bank, la DBS Bank, le Nasdaq, Verizon, Craigslist, et bien d'autres.

Un développement en parallèle plutôt profitable

Aujourd'hui, les deux bases de données sont très populaires et sont largement utilisées par la communauté des développeurs. MySQL est classée n°2 parmi les bases de données relationnelles et n°2 pour l'ensemble des BDD. La base de données Oracle étant n°1. MariaDB est légèrement moins bien classée, n°9 parmi les bases de données relationnelles et n°14 pour l'ensemble des BDD. Techniquement les différences des deux systèmes sont faciles à établir. Chacun gère les pools de threads d'une manière différente. MariaDB prend en charge de nombreux moteurs de stockage différents et dans de nombreux cas elle offre des performances améliorées.

Un haut niveau de compatibilité garanti

MariaDB a été conçu comme un remplacement binaire complet qui doit permettre à tous les utilisateurs de MySQL d'échanger l'un pour l'autre sur leurs systèmes. MySQL est une application client-serveur, et tant son programme serveur mysqld, son client mysql, que les programmes auxiliaires, comme mysqldump, gardent le même nom avec MariaDB. Les fichiers de définition des données et des tableaux sont compatibles ainsi que toutes les API et protocoles clients. Les noms de fichiers, les binaires et les chemins d'accès sont les mêmes sur MySQL et MariaDB. Il en va de même avec les ports et les sockets. Tous les connecteurs MySQL, PHP, Perl, Python, Java et autres, fonctionnent avec MariaDB. Le paquet client MySQL fonctionne de manière interchangeable avec MariaDB, tout comme avec MySQL. Des fusions mensuelles sont effectuées pour assurer la compatibilité et pour obtenir les nouvelles fonctionnalités et les corrections de bogues d'Oracle.

A l’avenir, de la place pour deux

Bien que MariaDB ne remplace pas encore MySQL, il a créé une saine concurrence, voire une émulation. Ce ne peut être que favorable aux futures innovations proposées par les deux SGBD. Avec le soutien d'Oracle, MySQL pourrait bien régner en maître dans un avenir proche. Cependant, techniquement parlant, MariaDB est tout à fait de taille à se substituer à MySQL si une entreprise en fait le choix. Le passage de MySQL à MariaDB ne nécessite presqu’aucun portage puisque les données et les structures de données n'ont pas besoin d'être ajustées. Bien que MariaDB ne remplace pas MySQL dans l'immédiat, son évolution vaut la peine d'être suivie avec attention. Ce « Fork » réussi est en passe de devenir un concurrent plutôt sérieux sur un marché très convoité.