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...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.