Développeurs spécialistes MariaDB.

Créé en 2009, MariaDB est le système de gestion de bases de données relationnelles (SGBDR) le plus populaire du marché. Depuis Fedora 19 en 2013, vitrine de l'univers du logiciel libre, il remplace son grand frère MySQL grâce à sa fiabilité et à sa rapidité.

Ses utilisateurs les plus illustres, Google, Wordpress.com et Wikipedia, mais aussi les 25 millions débloqués en 2017 par la Commission européenne pour son développement et sa promotion, devraient vous convaincre de l'adopter.

Voici un bref tour d'horizon de ce qu'il peut vous apporter.

Les caractéristiques de MariaDB

Le succès de MariaDB repose sur trois éléments essentiels.

1 — C'est un fork de MySQL

Un fork est un logiciel créé à partir d'un autre. En reprenant le code source de MySQL, une des bases de données relationnelles les plus connues, MariaDB garde l'historique et toutes les fonctionnalités de cette dernière. Mais de plus, il les améliore, en ajoute de nouvelles, et apporte certains correctifs. Enfin, outre l'avantage de ces performances accrues, il est compatible, à quelques exceptions près, avec toutes les versions antérieures de MySQL. Il est donc possible de migrer de la première à la seconde facilement et instantanément.

2 — Il est distribué sous licence GPL (General Public License)

Ce qui signifie que c'est un logiciel libre et qu'il le restera selon la volonté de ses créateurs, d'anciens développeurs de MySQL. Après le rachat de ce dernier par Oracle, leurs craintes de voir leur SGBDR perdre son identité et son entière gratuité, les ont poussés à donner naissance à MariaDB. Leurs réticences se sont trouvées par la suite justifiées par le peu d'investissements réalisés et la politique commerciale à l'origine de l'érosion de la popularité de MySQL.

Par ailleurs, certaines fonctions avancées et les bibliothèques client de MySQL sont respectivement publiées sous modules fermés ou en GPL ce qui autorise leur libre utilisation, mais pas leur liaison avec des logiciels qui ne le sont pas. A contrario, MariaDB édite toutes les fonctionnalités, les siennes et celles de MySQL en open source. De plus, ses bibliothèques client pour C, Java (JDBC) et Windows (ODBC) sont publiées sous LGPL (Less General Public License), une version moins restreinte de GPL afin de permettre leur relation avec des logiciels à sources fermées. Chacun peut donc utiliser MariaDB à n'importe quelle fin, le modifier pour répondre à ses besoins et partager cette nouvelle version, ou encore distribuer des copies à son entourage.

3 — Une fondation gère son développement

Garante de sa philosophie, rester toujours en open source, la fondation MariaDB, une entité à but non lucratif, gère le développement technique et commercial du logiciel. Celui-ci repose sur une vraie communauté qui échange, travaille en équipe, publie tous les bugs et des cas de test pour tous ceux qui sont corrigés. Contrairement à Oracle, elle partage librement tous les plans de développement des nouvelles versions. MariaDB et toutes les décisions sont prises en totale concertation avec l'ensemble des contributeurs, de façon complètement transparente. De ce fait, MariaDB est très attractif pour les développeurs, ce qui explique aussi son dynamisme et sa réactivité.

Toutefois, en 2016, la version 2 de MaxScale, un proxy qui route le trafic de manière intelligente, est passée de la licence de GPL à BSL (Business Source Licence). Open source au départ, il insère une couche intermédiaire entre l'application et la base de données afin de pouvoir faire évoluer la seconde sans toucher à la première. Ce qui permet, pour simplifier, de gérer les ressources de la BDD (requêtes, réponses) d'un même endroit, quelles que soient les technologies utilisées.

Or, la licence réduit l'usage de MaxScale à trois serveurs de BDD. Au-delà, elle devient payante. Alors, même si elle retourne en GPL au bout de trois ans, le modèle du total open source est remis en question selon les membres de sa communauté. Mais comme tout produit libre d'accès, MariaDB souffre de la difficulté de rentabiliser ses services. Actuellement, il se tourne vers le cloud et les grandes entreprises pour tenter de monétiser son modèle. Parmi les contributeurs les plus importants, Facebook et le chinois Alibaba occupent ainsi une bonne place.

Les versions de MariaDB

Jusqu'à la mise à jour 5. 5 sortie en 2012, les numéros des versions de MariaDB étaient calés sur ceux de MySQL, et offraient des fonctionnalités quasiment identiques. Une fusion était effectuée pour chaque nouvelle édition de MySQL, ou quand un correctif s'appliquait à la branche principale du SGBDR. Ainsi, MariaDB 5. 5. 63 est à jour avec MySQL 5. 5. 63.

Cependant, en raison du nombre croissant d'améliorations apportées par rapport au logiciel d'origine, les développeurs ont décidé de décorréler les deux. Ils ont changé le système d'appellation, passant directement de 5, 5 à 10, 0. Depuis, la similarité n'est plus totale, même si la parité binaire de la bibliothèque client et la correspondance exacte avec les API (Application Programming Interface) sont complètement assurées.

MariaDB inclut des fonctionnalités introuvables chez son prédécesseur, mais n'intègre pas forcément toutes les siennes afin d'éliminer les éventuels problèmes de compatibilité. Normalement à versions majeures égales (par exemple 5, 1 ou 5, 5), aucun souci ne devrait survenir pour quitter MySQL au profit de MariaDB car :

  • les APIs clients, les protocoles et les structures sont les mêmes dans les deux systèmes
  • les connecteurs de MySQL pour toute une série de langage comme PHP, Perl, Python, PHP, Ruby, C, etc., fonctionnent sans problème avec MariaDB
  • les librairies client des deux SGBDR présentent une parité binaire
  • le paquet mysql-client est compris par MariaDB
  • la compatibilité des fichiers de données et de définition des tables est complète au niveau binaire
  • les mêmes appellations sont octroyées aux fichiers, chemins, ports, sockets...

Il est impératif toutefois de faire une mise à jour régulière (mysql_upgrade) pour conserver la compatibilité, accéder aux fonctionnalités et corrections de bugs développés par Oracle, et s'assurer que les nouveaux champs utilisés par MariaDB soient bien intégrés aux tables.

Même si elles sont rares, il reste malgré tout quelques incompatibilités entre MariaDB et MySQL. Par exemple, le stockage des données JSON qui se fait dans un format différent, depuis la version 10. 1 de MariaDB. Pour répliquer des colonnes d'objets JSON de MySQL à MariaDB, il est obligatoire de les convertir au format reconnu par cette dernière.

Les fonctionnalités de MariaDB

Conçu pour remplacer MySQL, MariaDB a pour but d'offrir un SGBDR de qualité, stable et toujours libre, largement compatible avec toutes les versions de son prédécesseur. Par rapport à ce dernier, voici les 7 des principales améliorations.

1 — Un plus grand choix de moteurs de stockage

Pour conserver et récupérer les données, les SGBDR ont recours à des algorithmes dits moteurs de stockage. Il en existe deux types, les transactionnels qui évitent l'interruption d'une opération et les autres, beaucoup plus rapides, mais moins fiables. En proposer plusieurs est un grand avantage pour les développeurs, car chacun d'entre eux possède ses propres caractéristiques. À savoir : quand on configure sa BDD, il faut renseigner le moteur de stockage choisi. En plus des standards que sont MylSAM, Blackhole, CSV, MEMORY, Archive et Merge, MariaDB en propose 15, dont certains ne sont pas pris en charge par MySQL :

  • Aria, utilisé pour les tables créées en interne par MariaDB, il permet d'effectuer très rapidement des requêtes complexes. Il est plus réactif que MyISAM qu'il remplace, car il met en cache les données des enregistrements et n'a donc pas à les écrire temporairement sur un disque comme le faisait son prédécesseur. C'est également «   crash-safe   », ce qui signifie qu'il engendre une restauration automatique après un crash.
  • XtraDB est un fork d'InnoDB développé et amélioré par Percona. Lorsque ce dernier publie de nouvelles versions, elles sont intégrées dans XtraDB. Il possède de nombreuses fonctionnalités particulièrement adaptées pour les environnements à haute performance.
  • FederatedX permet de se connecter à des informations stockées dans une base de données située sur un autre serveur SQL. Sa faiblesse réside dans l'impossibilité de changer son organisation (champs, index...).
  • OOGRAPH (Open Graph and Query) est un système de stockage orienté graph, c'est-à-dire adapté à la gestion des structures de données type graphe ou arbre.
  • SphinxSE est spécialisé en texte intégral. À partir des mots fournis par l'utilisateur, il scanne tous ceux contenus dans les données enregistrées pour rechercher les correspondances. Il intervient en tant que moteur de stockage pour MySQL ou MariaDB.
  • IBMDB21. Retiré des dernières versions de MariaDB, il n'est plus présent non plus dans MySQL. Il permet de connecter le SGBDR à des tables générées avec IBM DB21.
  • TokuDB est particulièrement adapté pour les grandes quantités de données. Il prend en charge les transactions SQL et XA.
  • CassandraSE a été mis au point pour relier MariaDB aux tables créées par Cassandra Apache, un puissant système de gestion de base de données distribuée, c'est-à-dire dont les données se répartissent dans plusieurs SGBD mais restent visibles comme un tout. Il est donc particulièrement adapté pour stocker les gros volumes d'informations répartis sur de multiples serveurs.
  • CONNECT permet de se relier à des données externes de différents types, parfois à distance à des bases de données, via le protocole MySQL ou la norme ODBC. Elles peuvent alors être lues, modifiées, créées ou stockées. CONNECT peut remplacer CSV et FederatedX.
  • SEQUENCE génère et renvoie une séquence de nombres naturels.
  • Spider permet de se connecter à une table MariaDB ou MySQL à distance.
  • PBXT, toujours distribué avec MariaDB, est un moteur de stockage transactionnel développé par PrimeBase et désactivé par défaut.
  • Mroonga, anciennement Groonga, est spécialisé en texte intégral. Il effectue rapidement des recherches dans toutes les langues. Une de ses caractéristiques importantes est la géolocalisation des requêtes.
  • ColumnStore est orienté colonnes, idéal pour le chargement de données massivement parallèle.
  • MyRocks, élaboré au départ pour Facebook, est un champion des gros volumes avec une compression élevée

2 — L'ajout d'une colonne des millisecondes

Une colonne supplémentaire nommée TIME_MS a été ajoutée à la table INFORMATION_SCHEMA.PROCESSLIST. Elle complète celle baptisée « TIME » dont l'unité est la seconde pour une plus grande précision.

3 — La création de colonnes dynamiques

Elles permettent de fournir une interface aux moteurs de stockage NoSQL, notamment aux bases de données colonnes. Dans ces dernières, il est possible de ranger un ensemble différent de colonnes par ligne (contrairement aux bases de données relationnelles). Cette organisation engendre une extraction rapide de colonnes de données, par exemple pour des requêtes analytiques, car elle limite considérablement le volume d'informations à charger sur le disque.

4 — L'insertion de colonnes virtuelles

Elles sont également appelées colonnes   «   calculées   » ou «   générées   ». Leur valeur est calculée automatiquement à partir de celles d'autres champs de la table. Il en existe deux types :

  • PERSISTENT, similaire à STORED, qui est stockée dans la table
  • VIRTUAL, qui est la valeur par défaut et qui est créée lors d'une requête.

Comme les calculs se font instantanément et ne sont pas conservés dans la base de données, ils permettent de gagner énormément de temps sur une certaine typologie de requêtes.

5 — a réplication multisources

Cette fonctionnalité ajoutée dans la version 10. 0 par MariaDB Galera Cluster permet à un serveur de posséder plusieurs serveurs à partir desquels il se réplique. L'intérêt réside dans la consolidation de la base de données par la fusion de toutes ses parties par exemple, ce qui permet de générer des rapports analytiques complets et d'avoir une sauvegarde centralisée. Enfin, la réplication est plus sûre et deux fois plus rapide pour de nombreuses configurations faisant beaucoup de modifications de données.

MariaDB 10. 0 peut réaliser également une réplication parallèle. Dans ce cas, le serveur principal (le maître) reçoit certaines requêtes en écritures et les envoient simultanément sur les autres (esclaves). Ainsi, la validation et l'exécution des demandes sont effectuées en même temps pour obtenir un état similaire partout. Pour que cela fonctionne, il faut que toutes les tables soient MariaDB 10. 0. 5 ou dans une version ultérieure. Cette méthode est utilisée pour augmenter les performances en traitement des requêtes, mais aussi pour tester la tolérance aux pannes.

Enfin, MariaDB Galera Cluster gère automatiquement l'ajout de nouveaux nœuds avec un contrôle personnalisé.

6 — La mise en place de pool de threads

MySQL gère chaque connexion client comme une unité d'exécution (thread)autonome et indépendante. Un système souvent efficace mais qui peut engendre une déperdition sensible de rapidité dans certains cas. Par exemple, si le même utilisateur laisse passer un laps de temps important entre ses requêtes car la mémoire occupe le disque en attendant. Pour pallier cet inconvénient, MariaDB offre la possibilité de gérer toutes les connexions à l'aide d'un seul pool de threads, permettant de faire tourner plus de 200 000 demandes en même temps avec un gain de célérité important. Toutefois, la première configuration reste possible. Cette fonction existe dans MySQL 5. 5, mais disponible uniquement dans la version payante.

7 — Une plus grande rapidité

Plusieurs éléments ont été mis en œuvre dans ce sens. Parmi ceux-ci :

  • Amélioration du code DBUG pour accélérer son exécution
  • Optimisation de la fonction CHECKSUM TABLE, très utile pour savoir si deux tables sont identiques
  • Les conversions de jeu de caractères ont été améliorées, et supprimées lorsqu'elles s'avéraient inutiles. Au final, le gain de rapidité est en moyenne de 1 à 5 %, même plus pour les plus volumes importants.
  • L'extension du jeu de tests avec plus de points de vérification assortis d'une vitesse d'exécution accrue
  • La connexion aux tables XTRADB avec le plug-in HandlerSocket. Comme les commandes SQL ne sont pas utilisées, l'analyseur n'intervient pas et l'opération gagne en célérité.
  • Accélération des index pour MEMORY. Il sont de 24 %, sur les INSERT pour des répertoires entiers, à 60% plus rapides pour ceux d'une colonne en CHAR.
  • Segmentation du cache d'index pour accélérer dans certains cas l'utilisation de ceux des tables MyISAM, en évitant les lectures répétées des informations.
  • Multiplication par 4 de la vitesse des tables MylSAm grâce à un cache de clé segmenté. Sans celui-ci, les verrous ralentissent les threads qui se concurrencent pour en acquérir un à chaque fois.

8 — La fonction Table Élimination

Certaines requêtes peuvent être résolues sans avoir à examiner toutes tables concernées. Il est possible d'en supprimer quand la demande se réfère par exemple à des données très normalisées.

9 — Une analyse de haute performance

Avec MariaDB AX, une solution capable de transformer en temps réel toutes les données sur l'activité d'une entreprise en information pertinente et exploitable, le SGBR fournit des analyses très fines.

10 — Et aussi...

  • Des sous-requêtes disponibles
  • Une fonctionnalité SIG (système d'information géographique), beaucoup plus performante
  • L'intégration de JavaScript Object Notation (JSON), pour transformer des données structurées en objets JavaScript afin de les transmettre sur des sites web.
  • Une nouvelle déclaration WITH qui permet, dans une requête, d'évoquer plusieurs fois une sous-requête, comme si une table temporaire était conçue juste pour cette demande.
  • Une extension des statistiques utilisateurs.
  • Etc.

Enfin, sachez que la sécurité est l'une des préoccupations principales des développeurs de MariaDB et en comblant les failles de MySQL, ils rendent le logiciel de plus en plus fiable. Robuste, évolutif et polyvalent, ce SGBDR élaboré en langage C offre un large éventail d'applications.