3 pièce(s) jointe(s)
MySQL est une « base de données plutôt médiocre », déclare un ingénieur Oracle en partance
MySQL est une « base de données plutôt médiocre », déclare un ingénieur Oracle en partance,
PostgreSQL est une meilleure option pour un SGBD open source, selon lui
Intégré à Oracle à la suite de l'acquisition par Sun en 2010, MySQL est un système de gestion de base de données relationnelle, distribué sous une double licence GPL et propriétaire. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde avec environ 50 000 téléchargements jour et des installations qui ont dépassé les 12 millions dans le monde. C’est ce SGBDR intégré dans les solutions de plus de 3 000 fournisseurs de logiciels indépendants/OEM, dont Adobe, Alcatel-Lucent, Cisco, General Electric, Hewlett-Packard et Symantec qui est traité de médiocre par l’ancien employé d’Oracle et membre du projet MySQL, Steinar Gunderson, « MySQL est une base de données plutôt médiocre, et vous devriez fortement envisager d'utiliser PostgresSQL à sa place ».
L'équipe MySQL développe la première base de données open source au monde, utilisée par les propriétés, les fournisseurs de cloud computing et les entreprises les plus importantes et les plus innovantes du web, notamment Facebook, Twitter, eBay, Pinterest, Tumblr, Wikipedia et YouTube. MySQL est également intégré dans les solutions de plus de 3 000 fournisseurs de logiciels indépendants/OEM, dont Adobe, Alcatel-Lucent, Cisco, General Electric, Hewlett-Packard et Symantec. Propulsé par l'adoption de la pile LAMP (Linux, Apache, MySQL et PHP/Perl/Python) comme standard de l'industrie pour la création d'applications web. MySQL fait aujourd’hui partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels, en concurrence avec Oracle, PostgreSQL et Microsoft SQL Server.
Sun a racheté MySQL AB dans le cadre de la plus grande acquisition de logiciels libres jamais réalisée. MySQL a été intégré à Oracle après l'acquisition de Sun en 2010. L'équipe MySQL d'Oracle gère tous les aspects de MySQL, notamment l'ingénierie, le marketing, les ventes et le support. Les domaines de produits comprennent MySQL Server et le moteur de stockage InnoDB, MySQL Cluster, MySQL Workbench, MySQL Enterprise Edition Enterprise Monitor et MySQL Connectors. Oracle a accéléré ses investissements dans MySQL.
Avec l'émergence du big data, couplée au passage au cloud computing et à la croissance des technologies mobiles, sociales et web, MySQL est idéalement positionné pour se développer dans certaines des startups et entreprises les plus exigeantes et innovantes de la planète. Cependant, Steinar Gunderson qui travaille actuellement pour Google, sur le navigateur Web Chrome, mais qui a également travaillé dans l'équipe chargée de l'optimisation de MySQL pour Oracle, estime que « MySQL est une base de données plutôt médiocre… ».
Steinar Gunderson a travaillé dans l'équipe chargée de l'optimisation de MySQL pour Oracle, où il a écrit le nouvel exécuteur de MySQL 8.0 ainsi que le nouvel optimiseur de jointure à venir. Pour l’ex-membre de l’équipe MySQL, aujourd’hui chez Google, MySQL 8.0 (avec son numéro de version mineure toujours plus élevé) est un bien meilleur produit que ne l'était la version 5.7. Mais il y a des limites à ce que l'on peut faire déclare Gunderson ; « les changements que d'autres et moi avons effectués amènent l'optimiseur MySQL vers un design assez standard du début des années 2000 avec quelques modifications intéressantes, mais c'est aussi là que ça s'arrête. »
« Venir à MySQL, c'était comme entrer dans un univers parallèle, déclare Gunderson, il y avait beaucoup de gens qui croyaient sincèrement que MySQL était un produit de pointe. En même temps, j'assistais à l'orientation et on m'expliquait comment l'optimiseur fonctionnait en interne, et j'avais vraiment besoin de pauses de choc pour comprendre à quel point presque tout était primitif. Dans un sens, cela ne me dérangeait pas tant que ça ; beaucoup de mauvais code signifie qu'il y a beaucoup de possibilités d'amélioration, et la direction soutenait fortement les grands remaniements. »
Selon Gunderson, certains membres de l’équipe MySQL étaient des hypocrites, présentant MySQL comme parfait. Cependant, la réalité était tout autre chose, « même des choses manifestement folles comme l'exécuteur, où tout était un gros morceau et où tout interagissait avec tout le reste, étaient saluées comme "efficaces" (ce qui n'était pas le cas). »
« Ne croyez pas une seconde que MariaDB est meilleur. Certains membres de l’équipe sont partis parce qu'ils étaient mécontents de la nouvelle gouvernance, pas parce qu'ils se sont soudainement réveillés un jour et ont réalisé le désordre royal qu'ils avaient créé dans le code. » Par exemple, le trieur devait littéralement se soucier de savoir si son entrée provenait d'un balayage de table ou d'un balayage de plage, car il n'y avait pas de modularité.
Tout ce qui n'était pas l'un de ces deux éléments, y compris les jointures, nécessitait de grandes contorsions, estime Gunderson. « Les jointures externes complètes étaient tout simplement impossibles à exécuter dans la conception donnée sans réécrire la requête (MySQL ne les supporte toujours pas, mais au moins maintenant il n'est pas entravé par l'ancienne conception we-can-do-left-deep-plans-only). Et ne me lancez pas sur le système de "tranches", qui est peut-être la conception la plus folle que j'ai jamais vue dans un logiciel réel ».
MySQL ou PostgreSQL ?
PostgreSQL est un système de gestion de base de données relationnelle et objet (SGBDRO). C'est un outil libre disponible selon les termes d'une licence de type BSD. Comme les projets libres Apache et Linux, PostgreSQL n'est pas contrôlé par une seule entreprise, mais est fondé sur une communauté mondiale de développeurs et d'entreprises.
Ce SGBDRO utilise des types de données modernes, dits composés ou enrichis suivant les terminologies utilisées dans le vocable informatique usuel. Ceci signifie que PostgreSQL peut stocker plus de types de données que les types simples traditionnels entiers, caractères, etc. L'utilisateur peut créer des types, des fonctions, utiliser l'héritage de type, etc. Entre 2012 et 2015, PostgreSQL était plus avancé que ses concurrents MariaDB et Firebird, ou propriétaires comme Oracle, MySQL, Sybase, DB2, Informix et Microsoft SQL Server, dans la conformité aux standards SQL.
PostgreSQL est largement reconnu pour son comportement stable, proche d'Oracle, mais aussi pour ses possibilités de programmation étendues, directement dans le moteur de la base de données, via PL/pgSQL. Le traitement interne des données peut aussi être couplé à d'autres modules externes compilés dans d'autres langages. Postgres serait plus lent et posséderait une gestion des connexions plus mauvaise qui nécessite généralement un pooler, mais le moteur actuel et ses performances sont plébiscités par un grand nombre de développeurs.
« J'ai vraiment aimé MySQL (et plus récemment MariaDB), et j'ai connu récemment quelques désagréments importants avec Postgres, et ce, pour un ensemble de raisons complètement différentes », déclare un internaute. « La réplication logique est la plus importante. MySQL dispose de la réplication logique et "mixte" depuis une décennie. PostgreSQL n'a intégré la réplication logique que récemment, et c'est encore très ennuyeux. Il ne réplique pas les déclarations de changement de schéma, donc celles-ci doivent être appliquées indépendamment par un système externe, et bien sûr, elles ne seront pas programmées exactement au bon moment, donc la réplication restera bloquée », poursuit-il.
Selon ce programmeur, Postgres aurait besoin d'un pooler/proxy de connexion externe, MySQL pas si tôt. « Je suis un développeur d'infrastructure, pas un DBA ou un utilisateur SQL avancé… Si vous gardez les choses simples afin d'avoir confiance en l'efficacité et les performances, alors MySQL fonctionne très bien selon mon expérience, et Postgres, malgré son exactitude académique et son ensemble de fonctionnalités de requêtes avancées, a été très ennuyeux. », conclut-il.
Source : Sesse
Et vous ?
:fleche: Avez-vous expérimenté les SGBD MySQL et PostgreSQL ? Lequel préférez-vous ?
:fleche: Pensez-vous que MySQL est médiocre ? Quel est votre avis sur la réaction de l'ingénieur Oracle en partance ?
:fleche: « PostgreSQL, malgré son exactitude académique et l'ensemble de ses fonctionnalités, de ses requêtes avancées, est très ennuyeux », partagez-vous cet avis ?
Voir aussi :
:fleche: MySQL abandonne les terminologies "master", "slave", "whitelist", "blacklist" et indique que ces modifications seront implémentées dans tous les produits MySQL dès les prochaines versions
:fleche: MariaDB SkySQL : La nouvelle mise à jour majeure de la base de données Cloud intègre les bases SQL distribuées, pour garantir évolutivité et élasticité
:fleche: PostgreSQL 14 est disponible avec l'amélioration des performances, la prise en charge étendue des données non structurées JSON et l'amélioration des capacités en matière de procédures stockées
:fleche: Depuis 20 ans, PostgreSQL aurait mal utilisé fsync(), compromettant la cohérence des données, des solutions ont été proposées au FOSDEM 2019
:fleche: 40 % des professionnels IT veulent accélérer leur migration vers le Cloud, une étude de l'impact du COVID-19 sur l'adoption du Cloud par MariaDB
Personnellement, je trouve que MS Sql Server est bien en-dessous de MySQL & Postgres
Personnellement, je trouve que MS Sql Server est bien en-dessous de MySQL & Postgres 😊.
Honnêtement, on est tous d’accord que s’il n’y avait pas Microsoft devant le nom de SQL Server, on n’en aurait jamais entendu parler :-p
SQL server _EST_ performant
Y a des tas de raisons de ne pas aimer SQL server.
Son déni des standards, même pas d'export Excel dans ssms, ...
Mais dire qu'il n'est pas performant ??
Alors déso mais ça c'est n'importe quoi.
Et oui je sais de quoi je parle
Juste parti pris, mon avis
.C'est vrai que MySQL m'a toujours paru simple d'utilisation, d'installation (apt), léger (au contraire d'oracle qui prenait de Go, en plusieurs fichiers lol).
.Postgresql m 'a toujours été '"vendu" comme hyper stable, plus avancé en objet, avancé en GIS. Moins utilisé par les newbies, sans doute car moins de pub ; et souvent utilisé dans le monde professionnel.
Absolument d'accord depuis plus de 10 ans !
MySQL : une source d'ennui sans fin :
- utilisée à tort et à travers y compris pour de toutes petites bases de données alors que le serveur est une usine à gaz sans nom.
- une psychose de la sécurité qui rend l'installation de plus en plus longue et difficile (évidement vu que les utilisateurs ont pris pour habitude de connecter leur site à leur base en utilisant le owner de la base, qui a tous les droits dessus, y compris de la dropper !)
- la possibilité de compiler une procédure stockée exécutant une requête dont une colonne ou une table n'existe pas !
- la possibilité de dropper un objet alors qu'il reste utilisé dans le code !!!! (Ex : drop de table alors que des procédures l'utilisent) !
- Ce n'est que depuis peu que MySQL gère les procédures stockées !
- changez de version et votre code ne fonctionne plus ! C'est tellement vrai que beaucoup utilisent encore MySQL 5.6 !!!!
(changement de code SQL dans les procédures stockées, déprécation de charset , changement de syntaxe de LOAD DATE, interdiction de chargement de fichier par défaut !!!!!! etc.....)
- comment est-il possible de faire un SGBDR qui, lorsqu'on créer une clé étrangère, ne génère pas l'indexe en même temps ?
- comment est-il possible que MySQL ne sache toujours pas gérer les clés étrangères a plusieurs colonnes ? Impossible d'exploiter des clés naturelles, on en revient toujours aux auto-incréments.
Et avez vous vu une seul fois WorkBench fonctionner sans bug gênant ?
La durée de restauration d'une base MySQL est aussi déconcertante (4h pour restaurer une base dont le backup fait 300Mo sur un serveur de dev avec disque en SSD avec un intel i7 et 16Go de RAM).
La restauration d'un backup de 300Mo sur Firebird (190 tables, 160 procédures stockées) sur la même machine dure 1 minute ! Certe, le format de backup n'est pas le même.
Dans l'ordre de mes préférences des SGBDR open source, selon les cas :
- petite base de données sans procédures stockées ni gestion des droits ==> sqlite
- une base avec procédures stockées, fonctions internes, gestion des droits, bonnes performances et exigeant relativement peu de connexions simultanées == > Firebird !
- besoin de plus ? ==> PostGresql
MySQL = ni fait, ni à faire.
Le problème de MySQL est plutôt dans certaines optimisations manquantes sur des fonctions avancées
Comme il a été dit dans certains des commentaires, MySQL est plutôt performant sur des requêtes simples...
Un des problèmes qui peuvent survenir, c'est par exemple, sur des tables avec de relativement nombreuses entrées, d'utiliser les vues avec des définitions d'algorithmes en interne.
J'ai récemment optimisé une vue qui se construisait sur un table de "seulement" 33k entrées, et qui mettait 42 secondes à se construire (je n'ai pas programmé cette horreur), en remplaçant cette vue par une table réelle construite à partir d'un script php/mysql qui a mis moins d'une seconde à s'exécuter la première fois et se met à jour toutes les heures en moins de 50ms, j'obtiens le même résultat que la vue...
Le tout est donc d'utiliser MySQL dans ce qu'il sait faire au mieux, à savoir des choses simples. Lui adjoindre un second langage pour les choses complexes est chose requise.
ET POUR LES GROSSES BASES ?
POSTGRES est définitivement plus qu'une alternative à Oracle ou SQLServer, n'en déplaise à certains DBA frileux ou adeptes du clickodrome qui le trouvent "ennuyeux".
Au contraire, et c'est même sans doute là que l'on reconnait les vrais professionnels, hihihi.
Soulignons que la question de la performance comparée ORACLE/PostGresql n'est digne que des commerciaux du premier et un faux débat à une époque où le prix de la licence Oracle équivaut à celui d'une batterie de machines physiques hébergeant une armée de machines virtuelles.
Un DBA (et j'en suis depuis ORACLE V4 en 1985) arrivera toujours à faire marcher un SGBD, surtout s'il sait (faire) paralléliser et utiliser les ressources matérielles contemporaines citées ci-dessus.
Notons que le mode de gestion de la mémoire cache de PostGres partageant le cache de fichiers système impose une machine virtuelle dédiée à chaque instance, ce qui est décidément le sens de l'histoire.
Tout ce qui précède est valide dans un contexte sérieux : bases de plusieurs (dizaines de) To, contenant des tables partitionnées de plusieurs milliards d'enregistrements et avec un taux d'insertion dépassant 1000 enrts/s.
Et c'est précisément là que PostGres n'est pas du tout ennuyeux, et permet de déchainer sa créativité, à la différence d'Oracle où il faut sans cesse aller voir son chef ou son client pour une improbable extension de licence de ceci ou de celà.
Sinon, plus petit, il y a ce que vous préférez à un moment donné, et ce pourra être n'importe quoi : Mysql (qui appartient à Oracle), MariaDB, Access (oui, oui, qui peut s'avérer très amusant), Sqllite...
En revanche, migrer soi-même d'Oracle à PostGresql peut être une galère, mais ça existe, des sociétés spécialisées le font assez bien.
Il faut donc faire virer leur cuti aux développeurs (mais yapa la fonction COUNT(*) ?) et aux DBA (zone de confort, invitation aux grand-messes Oracle annuelles) AVANT la conception du projet.
Terminons en précisant justement que sur un site important, le coût de licence/maintenance d'Oracle peut représenter le salaire de plusieurs ingénieurs.
Alors autant payer des salaires à des jeunes (ou pas) en France qu'enrichir Larry Ellison, non ?