Dans l’article précédent, nous avons présenté l’histoire du serveur web Apache, son rôle dans l’essor d’Internet et la façon dont sa part de marché est absorbée par des concurrents comme Nginx. Apache fait partie de la famille LAMP – Linux + Apache + MySQL + PHP – et ce n’est pas un euphémisme de dire que plus de la moitié de tout Internet doit son existence à LAMP.

Aujourd’hui, nous allons examiner quelques-unes des différences entre MariaDB et MySQL, deux technologies de base de données similaires mais différentes utilisées pour alimenter des millions de sites Web dans le monde.

Qu’est-ce que MySQL

MySQL est une base de données relationnelle (SGBDR) qui a vu le jour en 1995, créée par Michael Monty Widenius et David Axmark. Elle a été créée lorsque le marché était dominé par Microsoft et les solutions propriétaires (et onéreuses) d’Oracle.

Ancienne page MySQL de 1998
Ancienne page MySQL de 1998 (Source de l’image : Archive.org)

MySQL est aujourd’hui une marque archétype. Son rôle a été déterminant dans la construction de l’Internet tel que nous le connaissons aujourd’hui. Cet article du Linux Journal met un peu de lumière sur ses débuts.

Avec l’adoption précoce de la double licence – et l’utilisation de la GNU GPL pour sa version gratuite – MySQL a ouvert la voie à de nombreux autres éditeurs de logiciels qui sont venus plus tard.

Comme l’a dit Michael Widenius au sujet de la double licence :

…puisque MySQL est un produit d’infrastructure facilement intégrable dans d’autres produits, nous avons pu vendre des licences à ceux qui voulaient intégrer MySQL dans leur produit mais ne voulaient pas rendre leur produit open source.

Les applications web déployées sur serveur, en tant que partie intégrante de la pile LAMP, n’intègrent généralement pas MySQL et ne distribuent pas leur code. Cela signifie que n’importe qui pouvait librement utiliser le logiciel pour ses propres produits web.

Moins d’une décennie après sa publication, MySQL dominait le marché des bases de données relationnelles open source.

Google Trends montre que l’intérêt pour MySQL a culminé entre 2004 et 2005 :

Intérêt pour MySQL au fil du temps
Intérêt pour MySQL au fil du temps

Quelques-unes des sociétés qui utilisent MySQL incluent :

  • Facebook, un rapport de 2011 mentionne jusqu’à « 60 millions de requêtes par seconde, et près de 4 millions de changements de lignes par seconde » et la gestion de MySQL « pratiquement toutes les interactions des utilisateurs : aime, partage, mises à jour de statut, alertes, requêtes ».
  • Netflix’s la partie facturation de sa plate-forme
  • Youtube
  • Booking.com
  • Airbnb
  • et bien d’autres.

Un autre facteur qui a contribué à l’essor et à l’adoption de MySQL mérite d’être mentionné est phpMyAdmin.

PhpMyAdmin est un outil d’administration de bases de données basé sur le Web qui remonte à 1998, et qui a fait son chemin assez tôt dans les consoles de gestion des fournisseurs d’hébergement mutualisé, incluant cPanel. C’est un outil écrit en PHP qui a facilité l’administration de MySQL sur les serveurs LAMP. Importer, exporter, composer des requêtes complexes, supprimer et créer des tables, effectuer des recherches complexes ne sont que quelques-unes des possibilités offertes par phpMyAdmin sans que les utilisateurs n’aient à utiliser le terminal Linux.

WordPress et MySQL

L’un des facteurs à l’origine de la popularité de MySQL est sans aucun doute WordPress, qui alimente aujourd’hui environ 60% des systèmes CMS ou 34% de l’ensemble du web.

WordPress était créé en 2003 par Matt Mullenweg et Mike Little, comme un fork d’un autre projet. Il a été écrit en PHP, il utilisait MySQL comme base de données, et quand il est apparu, son adoption a rattrapé son retard comme un feu de paille.

WordPress est rapidement devenu synonyme du concept de logiciel open source, tout comme sa pile de serveurs sous-jacente. DisplayWP dispose d’un beau graphique de la version MySQL minimale nécessaire pour chaque version de WordPress.

L’un des facteurs qui ont favorisé l’adoption de MySQL a été l’aspect GPL de ses licences. Comme il est compatible avec Linux, il a commencé à être inclus par défaut dans les distributions Linux. Aujourd’hui, il est inclus par défaut avec Ubuntu.

Bref aperçu de MySQL et du modèle de base de données relationnelle

MySQL a été conçu comme un SGBDR (système de gestion de bases de données relationnelles). Le modèle de base de données relationnelle remonte aux années 1970, comme l’indiquent les documents suivants « Les Douze Commandements de Codd ». En bref, ce modèle structure les données en tableaux composés de colonnes et de lignes. Chaque ligne est identifiée de façon unique par une clé (clé primaire pour utiliser le jargon SQL).

Ces clés primaires peuvent être utilisées comme des chevilles d’un tri qui sont utilisées par d’autres tables pour définir une relation à la ligne spécifique. Ainsi, la colonne FOREIGN KEY d’une table de base de données relationnelle fera référence à une colonne PRIMARY KEY d’une autre table, définissant une relation entre des lignes de tables différentes.

Comme Essential SQL l’explique : « La clé primaire se compose d’une ou plusieurs colonnes dont les données sont utilisées pour identifier de manière unique chaque ligne de la table ». Les données des colonnes clés primaires doivent être uniques et ne peuvent pas être vides ou NULL. Dans une base de données relationnelle « la table n’a qu’une seule clé primaire, et sa définition est obligatoire. »

En même temps, la « clé étrangère » est un ensemble d’une ou plusieurs colonnes d’une table qui se réfère à la clé primaire d’une autre table. Il n’y a pas de code spécial, de configuration ou de définition de table que vous devez placer pour « désigner » officiellement une clé étrangère.

Modèle de base de données relationnelle dans MySQL
Modèle de base de données relationnelle dans MySQL

Ainsi, avec les bases de données relationnelles, il est possible de modéliser les données de manière sophistiquée et de définir les connexions entre les différents éléments de données. Dans notre exemple simple ci-dessus, nous avons deux tables, avec des lignes qui peuvent être reliées entre elles, par exemple, chaque personne possède une voiture.

Nous pouvons interroger ces données selon la logique dont nous avons besoin, nous pouvons filtrer l’ensemble des résultats en fonction de différents ensembles de critères, et nous pouvons construire notre requête d’une manière beaucoup plus complexe que ce que nous avons décrit ci-dessus.

Pour cette raison, les bases de données relationnelles – et les bases de données en général – utilisent des langages spécifiques au domaine, parmi lesquels le SQL, qui signifie Structured Query Language, est le langage prédominant sinon le seul utilisé par les SGBDR.

Acquisition par Sun

En 2008, la société MySQL AB, à l’origine de MySQL, a été rachetée par Sun Microsystems. Cette société a créé JAVA, Solaris Unix OS et a contribué de manière significative à différentes technologies informatiques. Comme Business Wire le rapportait à l’époque :

« Sun Microsystems, Inc. (NASDAQ:JAVA) a annoncé aujourd’hui la signature d’un accord définitif pour l’acquisition de MySQL AB, une icône open source et développeur de l’une des bases de données open source à la croissance la plus rapide au monde pour environ 1 milliard de dollars en contrepartie totale »

Cela prouvera bientôt que cette acquisition n’était pas suffisante pour empêcher la chute de Sun, mais elle donne une idée de la taille de MySQL à l’époque.

Oracle

Oracle Corporation est un fournisseur de la plus grande base de données source fermée à ce jour, la base de données Oracle.

C’était un concurrent direct de MySQL et pratiquement l’antithèse du modèle de logiciel libre et open source sous licence GPL que MySQL devenait à l’époque.

Quand Oracle a acheté Sun, et MySQL avec lui en 2010 (gagnant contre IBM pour cela), l’équipe de l Le monde FOSS a vu cela comme quelque chose d’aussi « sinistre » qu’une attaque Borg dans Star Trek. Un utilisateur se souvient de l’événement sur Quora :

MySQL was a grave threat to Oracle – at the time the Oracle database accounted for something north of 80% of all revenue (and given the skeleton crew needed to maintain it, even more of the profits).

MySQL was making serious inroads – large Fortune 50 companies with site licenses that cost millions were shifting databases (especially read-only ones) from Oracle to MySQL because the administrative overhead was that much lower. I know, I helped do some of these.

Many in the MySQL community wanted to add features that would make using even a free version of Oracle obsolete. MySQL was definitely going down that path. Tools were maturing and Larry was afraid.

So Oracle bought MySQL to make sure it would have a control over the brand, scatter the community and save its flagship from the unwashed masses.

C’était une conclusion logique, car MySQL, à l’époque, était devenu si populaire qu’il aurait pu être considéré comme une menace réelle pour le cœur de métier d’Oracle. Comme Ankush Thakur de Geekflare le dit. MySQL est devenu si populaire que très vite, les développeurs ont oublié que SQL et MySQL étaient deux choses différentes.

Avant même que l’acquisition n’ait lieu, à la fin de 2009, Monty Widenius, qui a quitté l’équipe MySQL cette année-là pour créer sa propre entreprise de fork et de bases de données, a publié un appel dramatique sur son blog (nous ne citerons que le début) :

Aidez à sauver MySQL

Moi, Michael « Monty » Widenius, le créateur de MySQL, je vous demande instamment d’aider à sauver MySQL des griffes d’Oracle. Sans votre aide immédiate, Oracle pourrait devenir propriétaire de MySQL d’un jour à l’autre. En écrivant à la Commission européenne (CE), vous pouvez soutenir cette cause et aider à garantir le développement futur du produit MySQL en tant que projet Open Source.

L’acquisition a néanmoins eu lieu un mois plus tard, au grand désarroi de nombreux membres de la communauté open source. Widenius avait déjà quitté Sun, formé Monty Program AB, et forké MySQL, jetant ainsi les bases de MariaDB. Tout en emmenant de nombreux développeurs MySQL avec lui.

Aujourd’hui encore, les gens s’interrogent sur la légitimité des craintes de Monty. Surtout que le pire scénario ne s’est pas produit du tout : Oracle n’a pas acquis MySQL uniquement pour le tuer.

Certains prétendent que MySQL a été acheté par Oracle comme rien de plus qu’une « victime collatérale » de l’acquisition de Sun. En 2009, ceux qui avaient les yeux rivés sur le marché des bases de données avaient des raisons de s’inquiéter.

Les avertissements étaient là. Le développeur du moteur de stockage principal de MySQL, InnoDB, une société finlandaise, a été racheté par Oracle en 2005. Plus tard, ils ont été entièrement fusionnés avec Oracle, mettant fin à l’entreprise d’origine. En 2006, Oracle a racheté les créateurs de Berkeley DB, fournisseur d’un autre moteur de stockage BDB moins important. Ils tournaient en rond.

Qu’est-ce que MariaDB

MariaDB a eu sa première version en octobre 2009, avec la version 5.1.38 Béta, basée sur MySQL 5.1.38. C’était un fork destiné à « s’assurer que la base de code MySQL serait libre pour toujours ».

Au moment du « fork », la crainte la plus répandue était que l’acquisition soit une prise de contrôle hostile dans le but de tuer MySQL. Cette préoccupation, du moins en partie, s’est révélée infondée.

Toujours en 2009, Monty Program AB et Percona, une société fournissant des services MySQL haut de gamme, a créé l’Open Database Alliance. Leur objectif était « d’unifier tous les développements et services liés à MySQL, en apportant une solution à la fragmentation et à l’incertitude des communautés, entreprises et experts techniques impliqués dans MySQL ».

L’idée était de « devenir le centre de l’industrie pour la base de données open source MySQL, y compris MySQL et le code dérivé, les binaires, la formation, le support et d’autres améliorations pour la communauté MySQL et l’écosystème des partenaires ».

Rétrospectivement, il est possible que ces étapes aient permis d’éviter un scénario pire pour la célèbre base de données.

MariaDB vs MySQL : Compatibilité

L’objectif de MariaDB (du nom de la fille de Widenius) en tant que fork de MySQL était de sécuriser l’accès futur à MySQL et son développement ultérieur. C’est pourquoi MariaDB a été conçu comme un remplacement complet des binaires – un remplacement «  drop-in », pour ainsi dire – permettant à tous les utilisateurs de MySQL d’échanger l’un contre l’autre sur leurs systèmes.

MySQL est une application client-serveur, et son programme serveur mysqld, son programme client mysql et ses programmes auxiliaires, comme mysqldump, conservent le même nom avec MariaDB.

Remplacer MySQL par MariaDB devient un processus transparent pour la plupart des applications et des besoins, en particulier WordPress. Les logiciels existants, depuis les outils CMS les plus populaires aux applications comme phpMyAdmin, il suffit de le sortir de la boîte, et les données réelles peuvent être exportées/importées de l’un dans l’autre sans aucun changement.

Le but de MariaDB’s est de maintenir la compatibilité avec MySQL. D’après le site de MariaDB,

  • les fichiers de définition de tables sont compatibles.
  • toutes les API et protocoles clients sont compatibles.
  • Les noms de fichiers, binaires et chemins sont les mêmes sur MySQL et MariaDB.
  • Les ports et les sockets sont les mêmes.
  • Tous les connecteurs MySQL – PHP, Perl, Python, Java, et autres – fonctionnent avec MariaDB.
  • Le package client MySQL fonctionne aussi bien avec MariaDB qu’avec MySQL.

Des fusions mensuelles sont effectuées pour assurer la compatibilité et pour obtenir toutes les nouvelles fonctionnalités et corrections de bogues d’Oracle.

MariaDB vs MySQL : Les raisons du “Fork”

Il y avait de multiples raisons derrière la sortie de MariaDB. La crainte qu’Oracle ne tue tout simplement son concurrent grandissant pour protéger son produit principal plus lucratif était certainement l’une des plus grandes. Les utilisateurs auraient perdu un produit fantastique et gratuit !

D’autres raisons étaient liées à l’assurance que MySQL serait resté libre et open source. Aujourd’hui, MariaDB est entièrement sous licence GPL avec l’ensemble de ses fonctionnalités, tandis que MySQL conserve une approche à double licence, avec des fonctionnalités payante sous licence propriétaire, la licence payante :

« MySQL Enterprise Edition inclut l’ensemble le plus complet de fonctionnalités avancées, d’outils de gestion et de support technique pour atteindre les plus hauts niveaux d’évolutivité, de sécurité, de fiabilité et de disponibilité de MySQL. Il réduit les risques, les coûts et la complexité du développement, du déploiement et de la gestion des applications MySQL critiques pour l’entreprise. »

Si nous comparons les deux ici, MariaDB a un avantage clair fourni par la licence GPL sur laquelle il est publié. En raison de la base de code propriétaire, Oracle ne peut pas légalement tirer profit du code MariaDB et le fusionner dans leur base de données.

Widenius promit : « Quand Oracle publiera une extension fermée pour MySQL, nous publierons aussi une extension open source. »

Questions communautaires

Une autre raison derrière le fork était de garder le projet « ouvert » dans le sens où il s’agit d’un projet communautaire (comme WordPress), dont la direction et le développement sont ouverts tout comme sa licence. Si nous y jetons un coup d’œil il est facile de conclure que la plupart du code MySQL provient de développeurs internes. Les développeurs d’Oracle remercient par exemple les contributions occasionnelles et notables de la communauté, mais c’est loin de l’ouverture de la MariaDB et loin de ce qu’était MySQL auparavant.

Pour mettre les choses en perspective, Au moment d’écrire ces lignes, le référentiel du serveur MariaDB compte plus de 186k commits, plus de 370 branches et 200 contributeurs. MySQL, d’autre part, compte plus de 148 000 commits, 9 branches et 72 contributeurs.

La discussion sur le développement de MariaDB, sa direction, le vote sur les fonctionnalités, etc. se fait sur une liste de diffusion accessible au public :

L'équipe des « Développeurs Maria »
L’équipe des « Développeurs Maria »

En plus de celle-ci, il y a aussi la liste de diffusion Maria Discuss.

Maria Captains est une équipe de développeurs de confiance à qui les développeurs peuvent soumettre des correctifs. Comme le dit la page de l’équipe sur Launchpad :

« Les capitaines sont des développeurs de confiance avec accès en écriture aux principales branches de MariaDB. Si vous voulez avoir un patch, soumettez-le à la liste des maria-developers et un ou plusieurs capitaines travailleront avec vous pour que le patch soit revu, approuvé et finalement inséré dans l’endroit approprié. »

Il y a eu quelques occasions où le processus de développement animé de MariaDB a prouvé son avantage sur celui fermé d’Oracle.

Fin 2012, la fondation MariaDB a été créée pour superviser le développement de la base de données.

Peu de temps après le fork, de nombreux développeurs MySQL originaux ont quitté le navire et 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, ainsi que les distributions BSD, FreeBSD et OpenBSD, et Ubuntu incluent MariaDB. La liste complète se trouve à l’adresse suivante ici.

Des entreprises comme Alibaba Cloud, Tencent, IBM, Microsoft, Booking.com sont devenues des sponsors platine.

Pour Kinsta, en tant que meilleur hébergeur d’applications, de bases de données et d’hébergement WordPress infogéré, il est intéressant de mentionner que parmi le conseil d’administration de la Fondation MariaDB se trouvent des personnes d’Automattic, un signe clair que les créateurs de WordPress ont adopté MariaDB.

Dans les années qui ont suivi la scission, MariaDB a connu un développement fulgurant, à tel point qu’en raison de l’ensemble des nouvelles fonctionnalités introduites en 2012, MariaDB a fait un bond en avant. de la version 5.*, compatible avec MySQL, à la version 10.0, voulant refléter le bond en avant des fonctionnalités qu’ils avaient réalisé.

Pour des raisons de performance, la Fondation Wikimedia a annoncé en 2013 qu’elle avait passé Wikipédia à MariaDB. La même chose s’est produite avec Google, et sa liste d’utilisateurs comprend maintenant Deutsche Bank, DBS Bank, Nasdaq, Verizon, Craigslist, et autres.

Parmi les utilisateurs de MySQL, nous avons GitHub, US Navy, NASA, Tesla, Netflix, WeChat, Facebook, Zendesk, Twitter, Zappos, YouTube, Spotify.

Depuis sa première version, l’intérêt pour le successeur de MySQL n’a cessé de croître, comme le montre Google Search Trends :

Intérêt pour MariaDB au fil du temps
Intérêt pour MariaDB au fil du temps

MariaDB vs MySQL : Principales différences

Bien que MariaDB ait commencé à être entièrement compatible avec MySQL, on peut s’attendre à ce que leurs chemins divergent davantage à l’avenir.

MariaDB vs MySQL
MariaDB vs MySQL

Dans son dernier billet, Widenius félicite Oracle pour son travail sur la version 8.0 de MySQL, en soulignant quelques différences et mises en garde telles que :

Thread Pool : similaire au problème de serveur Nginx par rapport à Apache, MySQL assignait des threads à chaque connexion client, et ceci, qui pouvait être comparé au démarrage d’un programme entier dans un PC, était simplement inefficace. MariaDB a introduit sa propre solution dans la version 5.5

Les colonnes invisibles sont la fonctionnalité exclusive de MariaDB depuis 10.3.3.3. Ils ne renvoient pas les résultats dans une instruction SELECT *, et il n’est pas nécessaire de leur attribuer une valeur dans une instruction INSERT.

MariaDB introduit des microsecondes dans ses types de données temporelles.

Moteurs de stockage : MariaDB utilise XtraDB, InnoDB, MariaDB ColumnStore, Aria, Archive, Blackhole, Cassandra Storage Engine, Connect, CSV, FederatedX, Memory storage engine, Merge, Mroonga, MyISAM, MyRocks, QQGraph, Sequence Storage Engine, SphinxSE, Spider, TokuDB. ColumnsStore est intéressant du point de vue des performances, car il permet une mise à l’échelle linéaire pour traiter des pétaoctets de données. En savoir plus à ce sujet sur leur blog.

Les moteurs de stockage MySQL sont InnoDB, MyISAM, Memory, CSV, Archive, Blackhole, Merge, Federated, Example.

Les vues des bases de données sont une fonctionnalité dans laquelle MariaDB introduit des optimisations significatives en n’interrogeant que les tables nécessaires.

Quelques fonctionnalités de MySQL introduites sont Type de données natif JSON, MySQL Shell dans la version 8.0 – qui permet les scripts javascript et python – et ne fonctionne pas avec MariaDB, extension d’authentification basé sur SHA-256, améliorant la sécurité sur mysql_native_password.

Ici vous pouvez trouver le liste complète des différences entre MariaDB et MySQL et les avantages du premier par rapport au second.

Résumé

MySQL est sous l’égide du plus grand fournisseur de bases de données commerciales au monde. Avec tant d’ingénieurs à plein temps travaillant 24 heures sur 24 pour développer de nouvelles fonctionnalités de qualité supérieure, nous avons déjà quelques points de divergence. MariaDB, d’autre part, rattrape généralement son retard lorsqu’il s’agit d’ajouter des fonctionnalités, mais ce n’est pas toujours immédiat et il n’y a aucune garantie.

Cela dit, il existe de nombreux scénarios dans lesquels MariaDB offre des performances améliorées. Ajoutez à cela des correctifs et des mises à jour plus agiles, un avenir open source plus stable, et un peu plus d’optimisme et vous verrez pourquoi chez Kinsta nous ne sommes pas seulement des fans mais nous utilisons aussi MariaDB dans le cadre de notre projet, la pile de serveurs basée sur les performances.

Tonino Jankov

Tonino is an entrepreneur, Linux & OSS enthusiast, developer, and tech educator. He has over ten years of experience in development and has been in the blockchain space for 3+ years. When he's not coding, he writes for SitePoint and Alibaba Cloud, binge-watches the newest works of fiction on Netflix, and explores new travel destinations.