Oracle a décidé d’en finir avec MySQL !

Les 1ères formations que j’ai données sur MySQL datent de 2003. J’ai près de 15 années d’expérience sur ce moteur de bases de données devenu relationnel avec l’arrivée d’InnoDB à partir de la version 3.23.

Le baiser de la mort

Oracle a décidé d'en finir avec MySQL !En rachetant Sun, Oracle a récupéré ce moteur Open Source et ne l’a pas vraiment fait évolué. Pas de CHECK CONSTRAINT au niveau de la définition des tables, ce qui nous oblige à passer par des triggers. Pas d’opérateur INTERSECT, MINUS/EXCEPT au niveau des requêtes. Pas de possibilité de combiner du LEFT JOIN et du RIGHT JOIN dans la même requête. J’ai voulu hier faire un UPDATE en utilisant une requête imbriquée dans ma clause WHERE. Refus du logiciel ! Pas de OVERPARTITION BY. Il faut bidouiller à chaque fois que vous avez une requête complexe à réaliser ! La plupart de ces restrictions fonctionnelles sont également valables dans MariaDB, à l’exception du CHECK CONSTRAINT disponible à partir de la version 10.2.1. Cerise sur le gâteau, et comme pour mieux en finir avec MySQL, Oracle a décidé d’abandonner le Query Cache,  recommandant de passer au logiciel ProxySQL qui n’existe même pas sous Windows. Les éditeurs d’application industrielles qui auront fait le choix de MySQL apprécieront !

Bref, Oracle a choisi de faire mourir MySQL. Et d’ailleurs, de très nombreuses entreprises ont d’ores et déjà basculé vers PostgreSQL, même si, dans certains cas, ce n’est pas la meilleure idée qu’elles ont pu avoir. Pour les automates, il peut être intéressant de jeter un œil sur Firebird ou bien d’utiliser SQL Server Express 2016. Quant à Oracle, il a décidé d’arrêter de fournir la version Expression Edition à partir de la version 12c de son célèbre moteur commercial.

Alors, MariaDB ?

Conscients du projet de l’éditeur, les auteurs de MySQL, qui ont maintenant tous quitté Oracle, ont forké le projet en créant MariaDB. Le travail à faire est considérable s’ils veulent mettre leur moteur de bases de données sur le même plan fonctionnel que PostgreSQL ! Le moteur MariaDB a toutefois de sérieux atouts en terme de performances par rapport à son « concurrent » Open Source.

Compte tenu des nombreuses applications Web s’appuyant sur MySQL, nous n’avons pas d’autre choix à court terme que de remplacer MySQL par MariaDB. Gageons que MariaDB maintienne, quant à lui, le Query Cache dans ses versions à venir !

Mon ami Bernard m’expliquait, il y a quelques instants au téléphone, que Debian 9 n’intégrera plus MySQL dans ses dépôts officiels.

Base de données  / Formateur MariaDB Formateur MySQL Formateur PostgreSQL Formateur SQL Server MariaDB MySQL PostgreSQL SQL Server Express 

Commentaires

Bonjour,
Votre ami Bernard n’a pas tout à fait raison, le métapacket pointera en effet bien vers MariaDB mais Mysql est bien toujours présent dans les dépôts officiels Debian 9:

# apt-cache policy mysql-server
mysql-server:
Installed: (none)
Candidate: 5.5.9999+default
Version table:
5.5.9999+default 500
500 http://ftp.debian.org:80/debian stretch/main amd64 Packages

@Arnaud

Merci pour la précision ! Je n’avais pas de Debian 9 sous le nez. Je n’ai pas pu vérifier.

Bonjour,
Oracle s’y prends bizarrement pour faire mourir MySQL en sortant :
– MySQL 5.5, 5.6 et 5.7 avec le query cache supporté jusqu’en 2023
– MySQL 8.0 bientôt, et sans le query cache (cf blog Morgan Tocker)
– MySQL Document Store
– MySQL InnoDB Cluster

La communauté des users est plutôt contente des progrès de MySQL et ne voudrait pas revenir à MySQL 3.23… MySQL ne veut surtout pas devenir un PostGreSQL…

…chacun est libre d’exprimer son opinion.

@Xav

L’abandon du Query Cache est parfaitement incompréhensible sur le plan technique. Je n’ai rien lu quant au mécanisme de substitution qui devrait le remplacer. Ce n’est en tout cas pas le rôle du read_buffer_size !

Ce n’est pas qu’une simple « opinion ». C’est un vrai problème de performance qui nous attend. Quant à la parade préconisée avec ProxySQL, ça en dit très long sur la désinvolture réelle de l’éditeur !

Laisser un commentaire

(requis)

(requis)