MySQL passe de la version 5 à la version 8 et intègre du NoSQL et JSON

Oracle vient d’annoncer la disponibilité générale de MySQL 8.0. Il s’agit de la nouvelle version majeure de son système de gestion de bases de données relationnelles (SGBDR) distribué sous une double licence (GPL et propriétaire) et qui se présente comme l’un des SGBD les plus populaires au monde. Oracle a volontairement décidé de passer de la version 5.x à la version 8.0 pour que la numérotation reflète la profondeur des nouveautés et améliorations apportées à son SGBDR. Mais lesquelles ?

MySQL Document Store

La première grande nouveauté par rapport aux versions précédentes est MySQL Document Store, qui permet aux développeurs et administrateurs de bases de données de déployer des bases MySQL qui implémentent un modèle document store, relationnel ou hybride. Document Store était déjà disponible depuis MySQL 5.7.12, mais on peut dire qu’il fait son entrée officielle dans la version 8.0. D’après Oracle, MySQL Document Store offre aux développeurs une flexibilité maximale pour développer des applications relationnelles SQL traditionnelles et des applications de bases de données NoSQL orientées document. Cela élimine donc le besoin d’une base de données NoSQL orientée document distincte. MySQL Document Store fournit une prise en charge des transactions multidocuments et une conformité ACID (Atomicité, Cohérence, Isolation et Durabilité) complète pour les documents JSON sans schéma.


Architecture de MySQL 8 Document Store

Nouvelles fonctionnalités SQL

MySQL 8.0 introduit de nombreuses nouvelles fonctionnalités SQL demandées par les développeurs. C’est le cas par exemple des fonctions Window – parfois appelées fonctions analytiques – qui sont semblables à des fonctions agrégées groupées qui effectuent des calculs sur un ensemble de lignes. Mais on notera aussi les expressions de table communes (CTE, Common Table Expressions). Une expression de table commune est comparable à une table dérivée, en ce sens qu’elle n’est pas stockée sous forme d’objet et dure uniquement le temps de la requête. Mais contrairement à une table dérivée, une expression CTE peut faire référence à elle-même et être référencée plusieurs fois dans la même requête.

MySQL 8.0 offre aussi de nouvelles possibilités de gérer les lignes verrouillées avec les mots-clés SKIP LOCKED et NOWAIT. Normalement, lorsqu’une ligne est verrouillée à cause d’un UPDATE ou d’un SELECT … FOR UPDATE, toute autre transaction devra attendre avant de pouvoir accéder à cette ligne verrouillée. Mais dans certains cas d’utilisation, il est nécessaire de faire un retour immédiatement si une ligne est verrouillée ou d’ignorer tout simplement les lignes verrouillées. C’est là que NOWAIT et SKIP LOCKED entrent en jeu. Des clauses de verrouillage utilisant NOWAIT ou SKIP LOCKED ne vont jamais attendre que la transaction qui a entraîné le verrouillage des lignes auxquelles elles veulent accéder soit terminée. Dans le premier cas, la requête va échouer avec une erreur. Et dans le second cas, les lignes verrouillées vont être ignorées et ne seront pas lues du tout.

La nouvelle version majeure de MySQL fournit également la fonction GROUPING() qui est utilisée pour distinguer les valeurs null renvoyées par les extensions de la clause GROUP BY telles que ROLLUP des valeurs null standard.

Nouvelles fonctions JSON

MySQL 8.0 vient encore avec de nouvelles fonctions JSON. C’est le cas par exemple de : la fonction de table JSON_TABLE() qui crée une vue relationnelle des données JSON ; les fonctions d’agrégation JSON_ARRAYAGG() pour générer des tableaux JSON et JSON_OBJECTAGG() pour générer des objets JSON ; et la fonction de fusion JSON_MERGE_PATCH().

En plus des nouvelles fonctions JSON, MySQL 8.0 offre de meilleures performances pour trier ou regrouper les valeurs JSON. Les premiers tests, d’après Oracle, montrent une amélioration des performances de tri de 1,2 à 18 fois, en fonction du cas d’utilisation. On note encore la prise en charge de la mise à jour partielle pour les fonctions JSON_REMOVE(), JSON_SET() et JSON_REPLACE(). L’idée est que si seulement certaines parties d’un document JSON sont mises à jour, on doit donner des informations au gestionnaire (handler) sur ce qui a été changé, afin que le moteur de stockage et la réplication n’aient pas besoin d’écrire le document complet.

Autres fonctionnalités : fiabilité, performance, sécurité, haute disponibilité, etc.

MySQL 8.0 améliore aussi la fiabilité en assurant un DDL atomique et sans incident, avec le dictionnaire de données transactionnel. Avec cela, l’utilisateur est garanti que toute déclaration DDL sera exécutée entièrement ou pas du tout. Ceci est particulièrement important dans un environnement répliqué, sinon il peut y avoir des scénarios dans lesquels les serveurs maîtres et esclaves ne sont pas synchronisés.

Entre autres nouvelles fonctionnalités, on peut citer la possibilité de changer la visibilité d’un index (visible/invisible). Un index invisible n’est pas pris en compte par l’optimiseur lorsqu’il fait le plan d’exécution de la requête. Cependant, l’index est toujours maintenu en arrière-plan, il n’est donc pas difficile de le rendre visible à nouveau. Le but est de permettre à l’administrateur de base de données de déterminer si un index peut être supprimé ou non. Si vous suspectez un index de ne pas être utilisé, vous pouvez le rendre d’abord invisible, puis surveiller les performances de la requête et, finalement, supprimer l’index si vous ne constatez pas de lenteur dans l’exécution de la requête.

MySQL fournit aussi une solution de haute disponibilité native et intégrée pour vos bases de données avec InnoDB Cluster. Ce dernier intègre étroitement MySQL Server avec Group Replication, MySQL Router, et MySQL Shell, de sorte que vous n’ayez pas besoin de compter sur des outils externes, des scripts ou d’autres composants.

Comme fonctionnalités de sécurité, OpenSSL est utilisé en tant que bibliothèque TLS/SSL par défaut pour MySQL Enterprise Edition et MySQL Community Edition. MySQL 8.0 implémente aussi des rôles SQL. Un rôle est une collection nommée de privilèges. Le but est de simplifier la gestion des droits d’accès des utilisateurs. Vous pouvez par exemple attribuer des rôles aux utilisateurs, attribuer des privilèges aux rôles, créer des rôles, supprimer des rôles et décider quels rôles sont applicables pendant une session.

En termes de performances, la nouvelle version du SGBDR est jusqu’à deux fois plus rapide que son prédécesseur (MySQL 5.7), avec de meilleures performances pour les charges de travail en lecture/écriture, les charges de travail liées aux entrées/sorties, etc.

D’après Oracle, les développeurs veulent pouvoir stocker des emojis dans leurs bases de données, ainsi UTF8MB4 est maintenant le jeu de caractères par défaut dans la version 8.0. Le géant des SGBD rappelle que UTF8MB4 est l’encodage de caractères dominant pour le web, et ce changement rendra la vie plus facile pour la grande majorité des utilisateurs de MySQL.

On ne pourrait citer ici la liste exhaustive des nouveautés de MySQL 8.0. Vous trouverez plus de détails sur cette version sur le site d’Oracle. Mais précisons que, de manière logique, il y a des fonctionnalités supplémentaires pour MySQL 8.0 Enterprise Edition. Pour les applications critiques, MySQL Enterprise Edition offre d’autres fonctionnalités telles que :

  • MySQL Enterprise Backup : pour les sauvegardes complètes, incrémentielles et partielles, la récupération ponctuelle et la compression de sauvegarde ;
  • MySQL Enterprise High Availability : pour une haute disponibilité intégrée et native pour les entreprises avec InnoDB Cluster ;
  • MySQL Enterprise Transparent Data Encryption (TDE) : pour le chiffrement des données au repos ;
  • MySQL Enterprise Encryption : pour le chiffrement, la génération de clés, les signatures numériques et autres fonctionnalités cryptographiques ;
  • MySQL Enterprise Authentication : pour une intégration avec les infrastructures de sécurité existantes, y compris PAM et Windows Active Directory ;
  • MySQL Enterprise Firewall : pour une protection en temps réel contre les attaques spécifiques de bases de données, telles que l’injection SQL ;
  • MySQL Enterprise Audit : pour l’ajout d’une conformité d’audit aux applications nouvelles et existantes ;
  • MySQL Enterprise Monitor : pour la gestion de votre infrastructure de base de données ;
  • Oracle Enterprise Manager : pour surveiller les bases de données MySQL à partir d’implémentations OEM existantes.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.