MySQL ou MariaDB?
Le plus populaire des gestionnaires de bases de données relationnelles est installé sur des millions de serveurs. Cela inclut Youtube, Flickr, Yahoo!, Facebook (à coté de Hadoop), Twitter.
MySQL s'utilise aussi bien pour de très grands sites que pour de petites bases de données.
Le site Tumblr supporte 60 milliards de lignes sous MySQL ce qui requiert 200 serveurs dédiés concurrents et un outil special, Jetpants, mais on peut l'utiliser pour une simple table avec deux colonnes.
MySQL est créé en 1995 par David Axmark, Allan Larsson et Michael Widenius qui fondent la société MySQL AB pour le commercialiser.
En juin 2000 il passe sous licence GPL mais il conserve une double licence, on peut choisir une licence payante, notamment pour l'intégrer à d'autres logiciels incompatible avec GPL.
La société est acquise par Sun le 26 février 2008. Quand elle-même est acquise par Oracle le 20 avril 2009, MySQL a un nouveau propriétaire (et des utilisateurs inquiets, voir plus loin).
La popularité de MySQL décline depuis 2012, car le logiciel tend à être remplacé par MariaDB (du même auteur), plus performant et avec des mainteneurs plus réactifs.
Le créateur a donné au logiciel le nom de sa seconde fille, Maria, tandis que MySQL vient de My qui est celui de la première (cela est la source d'une confusion qui a fait que de nombreux produits ont voulu imiter MySQL en se donnant le préfix My, qui signifie "mien", en anglais).
En mai 2017, la Commission Européenne a débloqué 25 millions d'euro pour le développement et la promotion de MariaDB. Cela lui permettra d'agrandir son équipe et accélérer son développement.
Une conception orientée vers la lecture
MySQL est optimisé pour la lecture, il convient bien pour le Web ou la consultation des pages est plus fréquente que leur création ou modification.
Il supporte les requêtes concurrentes d'utilisateurs multiples (contrairement à SQLite par exemple qui n'en exécute qu'une à la fois).
Il est compatible avec SQL2 et le langage procédural PL/SQL depuis la version 5.
On utilise souvent MySQL en conjonction avec MemCached, un programme qui conserve la base de données en mémoire pour accélérer les transactions. Les grands sites comme Facebook, Twitter l'utilisent. Il est disponible pour Wordpress, Joomla, Drupal.
Des moteurs de stockage différents peuvent être utilisés par le système, dont le rôle est de gérer la création et suppression des données de la base, et le stockage correspondant dans le système de fichier:
- MyISAM. Le moteur par défaut initial.
- InnoDB. Plus puissant, racheté par Oracle en octobre 2005, est devenu le moteur par défaut, avec la version 5.5.
- BerkeleyDB. A été racheté par Oracle en février 2006, obsolète depuis MySQL 5.1.
- Et de nombreux autres.
MySQL Cluster est une version multi-serveurs. Elle répartit la charge ce qui permet de fonctionner en temps réel sans attente ni défaillance. Dans ce cas le moteur NDB est utilisé en plus un des moteurs traditionnels ci-dessus. La version 7.2GA peut traiter un milliard de transactions par minute. Elle est open source, seul le support est payant.
Il faut savoir toutefois que si MySQL Cluster est fournie en version gratuite par Oracle (sur ses serveurs), elle ne l'est plus lorsque le traffic devient trop important et Oracle propose une solution tarifée à la place.
La plupart des langages de programmation peuvent être utilisée pour utiliser le SGDB, donc pour effectuer des requêtes.
Les langages les plus couramment utilisés étant PHP et Java.
Le M de MySQL donne une lettre à l'environnement LAMP (Linux Apache MySQL PHP), un système de serveur de sites très populaire.
MySQL ou MariaDB?
Après le rachat de Sun par Oracle, éditeur de base de donnée qui trouve en MySQL un produit gratuit concurrent de ses autres produits payants, quel peut être l'avenir de MySQL? Celui de Delphes?
Oracle essaie de monétiser le logiciel qui tend à remplacer son principal produit, Oracle Database, avec des compléments qui coûtent entre 2000 et 10000 dollars par ordinateur.
Le créateur de MySQL, Michael Widenius, donne son avis: Les créateurs de MySQL ne sont plus chez Sun. Son projet est une "Fedora" pour MySQL, un projet indépendant libre de toute attache commerciale.
Comme MySQL tend a devenir de plus en plus commercial, les solutions alternatives finiront par la remplacer. A 2000$ par serveur par an, cela peut devenir indispensable. Oracle semble involontairement encourager cette tendance en accomplissant un premier pas: les tests qui vérifient la fonctionnement du logiciel ne sont plus fournis.
MariaDB est la distribution qui tend à prendre la place de MySQL et elle provient aussi d'un créateur de MySQL, Michael Widenius. Basée sur MySQL 5.1, elle est plus rapide, utilise XtraDB ou InnoDB et ajoute des capacités qu'Oracle ne fournit que sur la version commerciale de MySQL.
En outre cette distribution se développe avec le temps. La version 10 permet par exemple de consulter des données dans une base Cassandra ou par ODBC.
Wikipedia a migré de MySQL à MariaDB en 2013 et les distributions Linux font de même (Fedora dans la version 19, Suse la 12.3, Slackware la 14.1, Arch Linux la 2013.03), Red Hat en 7. Google utilise (sur des milliers de serveurs) MariaDB et même participe à son développement.
Voir la liste des différences entre MariaDB et MySQL (anglais). Noter qu'il y a encore plus de différences avec chaque nouvelle version. Et malgré les différences, on peut installer directement MariaDB en remplacement de MySQL, sans changement dans les bases. Sous Linux avec juste une commande.
Cependant MySQL continue d'évoluer et la version 5.7.7 implémente le stockage d'objets JSON dans un format binaire permettant un accès rapide. MySQL n'est pas enterrée.
Parts de marché
En mai 2015. Ces chiffres (nombre de postes) sont donnés par le site DB-Engine qui se base sur de nombreux critères: références sur les médias, offres d'emplois, recherches dans les moteurs, ....
Graphique par Scriptol.fr
Oracle et Microsoft SQL Server sont en forte baisse par rapport à mai 2014. MySQL en légère baisse. Les autres en progression. Les startups choisissent souvent Postgre.
Alternatives à MySQL
Outre MariDB quelques autres forks ont été créés qui tentent de conserver la compatibilité:
- Drizzle. Version allégée pour le cloud. Dérivée de MySQL 6.0 qui était en développement.
- Percona Server. Utilise le moteur de stockage XtraDB.
- OurDelta. Un sur-ensemble de MySQL.
- WebScaleSQL est un projet conjoint open source de Facebook, Google, Twitter et autres pour une version de MySQL capable de supporter des bases importantes et un très grand nombre de connexions. Bien sûr, Oracle ne fait pas partie des contributeurs, bien que propriétaire de MySQL.
On voit aussi PostgreSQL comme alternative open source. Mais le logiciel n'est pas exactement dans la même catégorie, il est plus difficile à installer et conçu spécialement pour des grandes bases de données, où l'écriture est aussi fréquente que le lecture. C'est plutôt une alternative à Oracle.
Uber à migré de PostgreSQL à Percona (fork de MySQL) plus Shemaless qui transforme la base de données en NoSQL. Ce choix dépend de leur type d'activité. Ils ont vu une accélération dans la mise à jour fréquentes des lignes. Pour être clair, Uber à migré de MySQL à PostgreSQL en 2013, puis avec l'introduction de Schemaless, est revenu à MySQL.
Par ailleurs, MemSQL, se veut le DBMS de demain. Il fonctionne entièrement en mémoire, accédant le disque à intervalle pour sauvegarder les données à conserver et ainsi se montre 30 fois plus rapide que MySQL. C'est vrai qu'on peut aussi charger une base de données MySQL en mémoire, la différence se faisant dans la façon dont les données sont périodiquement sauvées sur disque.
Mais ces chiffres sont contestés en arguant que les benchmarks sont fait sur la configuration par défaut et que l'on peut configurer MySQL pour le rendre plus rapide et aussi que la durabilité est désactivée pour atteindre cette vitesse. Deux autres logiciels fonctionnent de la même façon, Hana de SAP et VoltDB.
Et il y a aussi NoSQL un ensemble de conceptions différentes: couples clé-valeur, graphes, documents. On voit souvent NoSQL comme une solution pour les entreprises dont les bases de données deviennent gigantesque, cependant des compagnies comme Yahoo! et Twitter ont démontré que MySQL en cluster (en version personalisée) peut supporter de très grandes base de données. En outre on peut associer d'autres logiciels à MySQL pour gérer des structures différentes: voir Les bases de données des entreprises du Web.
Téléchargements
- MySQL. Télécharger une des versions du logiciel.
- phpMyAdmin. Interface pour gérer en ligne une base de donnée. On peut aussi le faire à partir de LibreOffice.
- HeidiSQL. Fonctionne localement et peut gérer une base de donnée distante. (Windows).
- Jetpants. Outils pour gérer des bases de données de très grande taille.