MariaDB: L’alternative communautaire à MySQL

Depuis le rachat de MySQL par Oracle, le spectre d’une fermeture de son code source plane, c’est pour contrecarrer cette éventualité que le concepteur à l’origine de MySQL lança la fondation MariaDB, cette nouvelle base de données est donc un fork doté de nouvelles fonctionnalités avant-gardistes.

MariaDB

MariaDB est développé dans un esprit open source, compilé sous licence GPL, LPGL et BSD, elle ne possède pas de fonctionnalité réservées à du code payant comme pour Mysql Enterprise, d’ailleurs ces fonctionnalités payantes de MySQL sont incluses dans MariaDB, son code est donc ouvert à tous.

Ici on ne badine pas avec la sécurité, l’équipe de MariaDB collabore étroitement avec le CVE  pour remonter et détailler les éventuelles failles, chaque fois qu’une faille est découverte, celle-ci est rapidement corrigée et de nouvelles versions de MariaDB deviennent disponibles en téléchargement.

But du projet

  • Fournir une version stable et toujours gratuite d’une branche MySQL.
  • S’assurer d’une complète compatibilité en phase avec les versions de MySQL (une branche est créée à chaque nouvelle version de MySQL).
  • Créer des tests publics à chaque nouveaux développements (là ou Oracle lui-même n’en fournit pas pour MySQL).

Voici en résumé, le leitmotiv du projet MariaDB, il faut souligner que certains respectent encore à la lettre le concept open source 😉

MariaDB 5.5 vers 10.0 ?

Beaucoup se poseront la question : « pourquoi un tel saut de puce ? », la version 5.5 étant l’actuelle version stable, et celle en développement est estampillée 10.0.

Je vous fournis les informations que j’ai pu glaner sur la blog offciel de MariaDB

–           Mysql 5.6 a profondément modifier la structure de son code (la raison de ce changement demeure à l’heure actuelle totalement inconnue), faire un merge avec la version 5.5  aurait pris trop de temps.

–           Beaucoup de fonctionnalités notamment issues du NoSQL (cassandra, réplication multi-sources,etc…) ont été introduites et ne sont plus issues de MySQL 5.6, une nouvelle version majeure s’imposait.

En résumé, MariaDB a introduit de nouvelles fonctionnalités qui lui sont propres, il n’est pas exclu qu’une version 5.6 en phase avec les fonctionnalités de MySQL 5.6 sorte un jour.

Nouveaux moteurs intégrés

Voici deux tableaux récapitulatifs concernant les différents moteurs disponibles, le premier indique la disponibilité dans les versions de MariaDB, le suivant donne un rapide aperçu de leur utilité.

Tableau de compatibilité

Moteur Version de MariaDB
v5.1 v5.2 v5.3 v5.5 V10.0
ARIA (ex Maria*) X X X X X
XtraDB X X X X X
PBXT X X X
FederatedX X X X X X
OQGRAPH X X X X
SphinxSE X
IBMDB2I X X X X
TokuDB X X
Cassandra X
CONNECT X
SEQUENCE X
Spider X

Tableau des fonctionnalités

Moteur Résumé Remarques
ARIA (ex Maria*) Remplace MyISAM Plus efficace avec les tables temporaires en les plaçant en mémoire plutôt que sur disque, jusqu’à 50% de gain sur la fonction GROUP
XtraDB Remplace InnoDB Meilleure extensibilité, paramétrage, plus de fonctionnalités, sur base du modèle ACID*, support MVCC*
PBXT Moteur transactionnel pour système hautement concurrentiel Idem qu’au-dessus mais buggé donc désactivé en 5.5
FederatedX Fork du moteur Federated Utilise libmysql pour communiquer avec des bases de données distantes.
OQGRAPH Pour Open Query Graph Gère des arbres de structure et des   données orientées graphique en SQL idéal pour les projets de réseau sociaux
SphinxSE Pour moteur de recherche full text Sphynx Plus d’infos sur le serveur Sphynx utilisé
IBMDB2I Permet à MariaDB de stocker ses données dans une base IBM DB2 Plus d’infos ici
TokuDB Moteur BigData basé sur des index fractal tree, utilise la compression. Plus d’infos ici
Cassandra Faire une jointure entre le monde SQL et NoSQL Utilise un parser pour interroger   Cassandra en SQL, transforme MariaDB en client.
CONNECT Pas du vrai ISO SQL/MED mais s’en rapproche fortement Permet de faire du MED   « simplifié » (Management of External Data), cad une gestion via   fichiers plats.
SEQUENCE Table de séquence temporaires Créer des séquences asc ou desc avec palliers
Spider Permet de faire un cluster de base de   données distantes (merge) Plus d’infos ici

*ACID : Atomic, Consistent, Isolated and Durable (voir wikipédia)
*MVCC : Gestion de la concurrence notamment le traitement automatique des dead locks.
*exMaria : Le moteur a été renommé pour ne pas prêter à confusion avec le nom de la DB.

MariaDB Galera Cluster

Il s’agit d’une technologie de clustering synchrone, qui permet d’avoir une haute disponibilité même en cas de crash d’un nœud, les données ne sont pas perdues et restent intègres. Les transactions sont exécutées sur tous les nœuds en parallèle. La plupart des bases de données open sources ne proposent que de l’asynchrone.

Avantages

MariaDB améliore considérablement la vitesse de MySQL en ajoutant de nouveaux moteurs plus performants, vous pouvez vous en apercevoir en regardant ce benchmark

Liste non exhaustive des améliorations:

  • Améliorations considérables des sous requêtes depuis la version 5.3
  • Réplication plus efficace et sécurisée, commit groupé du log binaire, en cas de crash, toutes les transactions commitées seront présentes après récupération et ce dans un état cohérent.
  • Amélioration des I/O asynchrones sous Windows avec le moteur InnoDB
  • Moteur d’index amélioré pour les tables mémoire (moteur MEMORY), pour les tables temporaires dont l’accès est plus rapide en mémoire que sur disque.
  • CHECKSUM_TABLE amélioré pour la comparaison de tables.
  • Conversion des caractères plus rapides (1 à 5%)
  • Pool de connexions amélioré, capable de supporter jusqu’à 200.000 connexions simultanées.
  • Mode DEBUG amélioré
  • Moteur ARIA amélioré pour les requêtes complexes, le moteur privilégiant le stockage des tables temporaires dans la mémoire plutôt que sur disque.
  • Réorganisation et optimisations des jeux de tests.

Installation

La première étape est de télécharger MariaDB, notez que si comme moi vous désirez l’installer sur une version de linux comme Ubuntu, il faut intégrer la clé GPG avec la commande « apt-key » afin de l’obtenir via le dépôt officiel, c’est je pense la manière la plus propre de procéder, mieux encore le site propose un gestionnaire de repositories pour toutes les versions de linux, vous n’avez qu’à choisir votre distribution, la version et magie, la procédure s’affiche en dessous.

Cependant si vous devez installer en mode offline voici la procédure pour le tarball et cerise sur la gâteau, celle-ci est en en français

Pour mon test, j’utiliserai une distribution d’Ubuntu 12.04LTS et la version 5.5 de MariaDB sur une machine virtuelle doté de 2 gigas de mémoire et 2 processeurs.

sudo apt-get install python-software-properties
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://mariadb.cu.be//repo/5.5/ubuntu precise main'
sudo apt-get update
sudo apt-get install mariadb-server

Tests

Étant donné qu’une batterie de tests basé sur le TPC est disponible ici, je ne m’étendrais pas sur le sujet, je me contenterai de charger plusieurs millions de lignes de données grâce à Talend, je vérifierai par la même occasion que MariaDB est à 100% compatible en utilisant le driver fourni en standard.

Chargement données dans MaraiDB avec Talend

Le chargement ne prend que 19,8 secondes pour 1 million de lignes.

Les requêtes agrégation sont quasi instantanées

Requête d'aggrégation avec MariaDB

Notez au passage que MySQL Workbench est également compatible avec MariaDB

Mysql Workbench 6.0 avec MariaDB

Conclusion

Ce qui est grisant avec le monde open source, c’est que l’on peut retrouver des outils puissants et bien documentés, mieux encore, ils sont  disponibles sur la toile et malgré la concurrence féroce des éditeurs payants, ils n’ont pas à rougir de leurs prestations.

Cette base de données ne propose que des avantages, 100% open source, une meilleure rapidité d’exécution, de nouvelles fonctionnalités avancées, avec MariaDB, il est clairement évident que vous aurez le beurre et l’argent du beurre, il est à espérer que cela dure le plus longtemps possible 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

Petit calcul pour valider votre commentaire! merci * Time limit is exhausted. Please reload CAPTCHA.