Les ForKs MySQL

Avant de rentrer dans la description des différents Forks MySQL, je vais d’abord aborder les différentes étapes d’évolution de cet SGBD depuis sa création en 1995 jusqu’à aujourd’hui.

Historique de MySQL :

  • MySQL est l’œuvre de la société Suédoise MySQL AB fondée par David Axmark, Allan Larsson et Michael « Monty Widenius ».
  • La 1ère version de MySQL est apparue en Mai 195. MySQL a d’abord été créé pour un usage personnel à partir de mSQL (Mini SQL) en s’appuyant sur un langage de bas niveau ISAM (Indexed Sequential Access Method).
  • MySQL est passé en Licence GPL à partir de la version 3.23.19 en Juin 2000 basé sur le moteur non transactionnel « MyISAM ». Le moteur transactionnel « InnoDB » a été intégré à partir de la version 3.23.34a.
  • L’évolution des versions MySQL :

Version

Année

·         Version 4.0 ·         Première version en Octobre 2001, stable depuis Mars 2003.
·         Version 4.1 ·         Première version en Avril 2003, stable depuis Octobre 2004.
·         Version 5.0 ·         Première version en Décembre 2003, stable depuis Octobre 2005.
·         Version 5.1 ·         Première version en Novembre 2005, stable depuis Septembre 2007.
·         Version 5.2 ·         Distribuée en avant-première en février 2007, cette ligne a ensuite été renommée 6.0, puis abandonnée.
·         Version 5.5 ·         Version stable depuis Octobre 2010. MySQL Cluster 7.0 depuis 2009
·         Version 5.6 ·         Version stable depuis Novembre 2011. MySQL Cluster 7.1
·         Version 5.7 ·         Version stable depuis Octobre 2015. MySQL Cluster 7.2
  • En Février 2008, MySQL a été racheté par la société Sun Microsystème pour 1 milliard de dollars.
  • Le 20 Avril 2009, la société Oracle Corporation a annoncé le rachat de Sun Microsystème pour 7,4 milliards de dollars. Et suite à ce rachat :
    • L’équipe MySQL France a créé la société SkySQL.
    • Le fondateur de MySQL (Monty W.) a créé la société MariaDB.
    • En 2014 SkySQL a rejoint la société MariaDB pour donner naissance à MariaDB Foundation.

Moteurs de Stockage MySQL : 

L’une des spécificités les plus importantes de MySQL est sa capacité à gérer plusieurs moteurs de stockage au sein d’une seule base de données, chaque table pouvant utiliser un moteur de stockage différent au sein d’une même base de données.
Les moteurs de stockage les plus utilisés et les plus connus sont MyISAM, InnoDB et NDB :

  • MyISAM :
    • Moteur de stockage par défaut de MySQL jusqu’à la version 5.5.
    • Un moteur non transactionnel et le recovery des bases est limité, donc représente un risque de perte et d’incohérence des données en cas de crash du système.
    • Verrouillage au niveau table.
    • Stockage dans trois fichiers par table (structure, données et index).
    • Très rapide en lecture
    • Le moteur porte le nom Aria sous MariaDB, une évolution ACID de MyISAM.
    • Le nouveau moteur (Aria) fonctionne en mode transactionnel et non-transactionnel avec MariaDB.
  •  InnoDB :
    • Le moteur de stockage transactionnel (ACID) de MySQL, créé et maintenu par InnoBase (racheté par Oracle en Octobre 2005).
    • Moteur de stockage par défaut depuis la 5.6.
    • Verrouillage au niveau ligne.
    • Niveau d’isolation « REPETABLE READ » par défaut.
    • Stockage dans un table-space (ibdatas) par instance ou par table.
    • Le fork d’Innodb chez Percona porte le nom XtraDB (une amélioration de l’InnoDB).
  •  NDB  :
    • Le moteur de stockage transactionnel du cluster MySQL.
    • Les instances de stockage sont séparées des instances du moteur MySQL (SGBD).
    • La synchronisation entre les nœuds de stockage se fait via une réplication de type Synchrone.
    • Ajout des nœuds de stockage à chaud et les données des tables sont partitionnées entre les différents nœuds.
    • Niveau d’isolation « READ COMMITED » par défaut.
    • La solution de haute-disponibilité de MySQL.
    • Bascule automatique entre les différents nœuds et tous les nœuds sont accessibles en lecture/écriture.
  • Autres moteurs de stockages :    Memory, CSV, ARCHIVE, Falcon, ScaleDB, …

Les Forks de MySQL :

Les Forks les plus connus et les plus utilisés de MySQL sont : Le MySQL d’Oracle, Percona Server et MariaDB.

  • MySQL Oracle :
    • C’est la suite de MySQL historique.
    • Distribué en Community Edition (Open Source) et en Edition commerciale (Standard ou Entreprise).
    • Les éditions commerciales regroupeent d’autres outils comme :
      • Entreprise monitor : pour le tuning, le monitoring des instances et des réplications, analyseur de requêtes, …).
      • HotBackup : pour des sauvegarde à chaud des bases de données en mode Full, Incrémental, Partiel, compression et cryptage des sauvegardes, …
      • Entreprise Security : Le TDE (cryptage transparent des données), Audit, Cryptage des données.
      • Et d’autres fonctionnalités qui ne sont pas disponibles en Community Edition.
    • Distribuée aussi sous forme d’image Docker.
  • Percona Server :
    • Percona est une société de conseil (Créer en 2006) dont l’activité principale repose sur de MySQL, MariaDB et MongoDB avec une spécialisation orientée vers les performances.
    • Tous les produits de Percona sont en Open Source :
      • Percona server équivalent à MySQL
      • XtraDB équivalent à InnoDB
      • XtraBackup équivalent à HotBackup d’Oracle.
      • Percona XtraDB Cluster équivalent de MySQL Cluster avec NDB.
      • Percona ToolKit et Monitoring Plugins pour faciliter l’administration des serveurs.
      • Et très récemment l’outil de monitoring&management (PMM) équivalent à Entreprise Monitor d’Oracle.
    • Les versions Percona Server sont à jour avec les version MySQL et ils sont compatibles avec MySQL et MariaDB.
    • La société Percona assure aussi le support 24/7, le Consulting, les formations et l’infrastructure autour de MySQL, MariaDB et MongoDB.
    • Possède un blog très intéressant sur les performances MySQL.
    • Distribuée aussi sous forme d’image Docker.
  • MariaDB :
    • Le concurrent réel d’Oracle. Créé par l’un des fondateurs de MySQL suite au rachat de Sun Microsytems par Oracle.
    • MariaDB est le nouveau SGBD concurrent de MySQL.
    • Utilise Aria à la place de MyISAM pour le moteur non transactionnel, le XtraDB de Percona à la place de l’InnoDB, et Galera Cluster pour la solution de Clustering.
    • MariaDB est distribuée en Community Edition (Open source et gratuite)  et en Edition Entreprise (Standard, Advanced et MariaDB Entreprise Cluster).
    • La version Entreprise est payante mais les sources restent toujours en Open Source.
    • La version Entreprise regroupe :
      • La solution de backup (Hot Backup) basée sur la solution XtraBackup de Percona.
      • Le Monitoring et Query Analyser basés sur la solution de MONyog et SQLyog de la société WebYog.
      • Le support 7/24 et la correction de bugs
    •  MariaDB est distribuée aussi sous forme d’image Docker.
    • MariaDB a développé d’autres moteurs de stockage très intéressant comme : ColumnStore, Connect Storage Engine, Seqences engine, … Et l’intégration du plugin NoSQL Cassandra.
    • MariaDB et SkySQL travaillent actuellement sur un nouveau projet NewSQL entre le SQL et le NoSQL(Une sorte d’un SGBD hybride).
    • MariaDB est compatible avec MySQL jusqu’à la version 5.5.

Tableau récapitulatif des fonctionnalités des différents Forks :

Fonctionnalités

MySQL Oracle

Percona

MariaDB

SGBD
  • MySQL
  • Percona Server for MySQL
  • MariaDB
Storage Engines
  • MyISAM
  • InnoDB
  • MEMORY
  • CSV
  • ARCHIVE
  • MERGE
  • FEDERATED
  • BLACKHOLE
  • XtraDB
  • TokuDB
  • CSV
  • MyISAM
  • CSV
  • MEMORY
  • BLACKHOLE
  • MRG_MYISAM
  • InnoDB
  • ARCHIVE
  • FEDERATED
  •  Aria
  • MyISAM
  • XtraDB
  • ARCHIVE
  • BLACKHOLE
  • Cassandra
  • ColumnStore
  • CONNECT
  •  CSV
  • FerderatedX
  • MEMORY
  •  MERGE
  • Mroonga
  • OQGRAPH
  • ScaleDB
  • Sequence
  • SphinxSE
  • Spider
  • TokuDB
  • Legacy
Cluster Engine
  • NDB Cluster
  • XtraDB Cluster
  • Galera Cluster
Dernière Version
  • MySQL 5.7
  • Percona Server 5.7
  • MariaDB 10.1
Edition
  • Community (Open source et gratuite)
  • Standard
  • Entreprise
  • Cluster Carrier Grade
  • Une seule Edition (Open source et gratuite)
  • Community (Open source et gratuite)
  • Standard
  • Advanced
  • Cluster
Code Source
  • Open (Community)
  • Propriétaire pour les Editions commerciales.
  • Open
  • Open
OS
  • Red Hat Enterprise Linux
  • Oracle Linux
  • Fedora
  • Windows
  • Ubuntu Linux
  • Debian Linux
  • SUSE Linux Entreprise Server
  • Sun Solaris
  • Mac OS X
  • FreeBSD
  • Linux Generic
  • Debian Linux
  • Linux Generic
  • Red Hat Enterprise Linux
  • Oracle Linux
  • CentOS
  • Ubuntu
  • Windows
  • Linux
  • Solaris
  • Debian
  • Ubuntu
  • Redhat Linux
  • CentOS
  • Fedora
Réplication
  • Réplication Multi-source
  • Réplication Synchrone + semi-synchrone
  • Réplication synchron multi-master (NDB Cluster).
  • Réplication Monitoring
  • Réplication Circular
  • Réplication Multi-thread
  • Réplication checksum
  • Réplication Multi-source
  • Réplication Synchrone + semi-synchrone
  • Réplication synchron multi-master (XtraDB Cluster).
  • Réplication Monitoring
  • Réplication Circular
  • Réplication Multi-thread
  • Réplication checksum
  • Réplication Multi-source
  • Réplication Synchrone + semi-synchrone
  • Réplication synchron multi-master (Galera Cluster).
  • Réplication Monitoring
  • Réplication Circular
  • Réplication Parallel
  • Réplication checksum

 

Tuning/Monitoring
  • MySQL Entreprise Monitor (Dashbord, Advisors , Query Analyser, Replication Monitor)
  • MySQL WorkBench (gratuit )
  • Percona monitoring&management (PMM) (gratuit)
  • Percona Toolkit for MySQL, Monitoring plugins(nagios) (gratuit)
  • MariaDB Entreprise Monitor (MONyog,  Visual Query Editor – SQLyog)
Backup/load
  • HotBackup
  • Mysqldump/mysqlhotbackup/mysqlimport  (gratuits)
  • XtraBackup (gratuite)
  • mysqldump (gratuit)
  • Hot Backup (XtraBackup)
  • Mysqldump/mysqlhotbackup/mysqlimport  (gratuit)
Autres Fonctionalities
  • Audit
  • Encryption + Compression
  • Partitioning
  • TDE
  • Thead pool
  • MySQL Fabric + Router (Orchestrateur )   (gratuit)
  • Docker image
  • Audit
  • Encryption + Compression
  • Partitioning
  • Thread pool
  • MySQL Fabric + Router(Orchestrateur)
  • Docker image
  • Audit
  • Encryption + Compression
  • Partitioning
  • TDE
  • Thread pool
  • MaxScale Router (Orchestrateur) (gratuit)
  • Docker image
Compatibilité
  • MySQL
  • MySQL et MariaDB
  • MySQL
Prix public (Licence, support) / serveur /an
  • Standard >= 1 740 € (1-4 Socket) , >= 3 468 € (> 4 Socket)
  • Entreprise >= 4 344 € (1-4 Socket), >= 8 688 € (> 4 Socket)
  • Cluster >= 8 688 € (1-4 Socket), >=17 364 € (> 4 Socket).
  • Non communiqué
  • Standard = 2000 €
  • Advanced = 4000 €
  • Cluster (03 Noeuds) = 5500 €

Exemples de grandes entreprises qui ont franchi le pas de la migration de MySQL vers MariaDB :

  • Le groupe Google
  • Le réseau social en ligne Facebook
  • Le site Web Wikipedia
  • Les distributions Linux Fedora et OpenSUSE.
  • ……

Quelques arguments en faveur de MariaDB :

  • MariaDB est plus ouvert que MySQL Oracle et compte plus de contributeurs au développement de son code source.
  • Plus transparent qu’Oracle au niveau de développement et de la publication des patchs de sécurité.
  • Plus réactif qu’Oracle pour la correction des bugs.
  • Derrière MariaDB il y a les fondateurs et les anciens développeurs de MySQL.
  • MariaDB développe plus de fonctionnalités et plus d’Engines.

J’espère que cet article vous sera utile.