Comment choisir entre deux systèmes de base de données aussi populaires que MySQL & PostgreSQL, chacun alignant des références hors pair en plus de qualités reconnues : vitesse de traitement, large communauté, support de multiples langages… Que choisir ? Quelques éléments de réponse.
Si vous devez bâtir le système de gestion de base de données relationnelle (SGBDR) d’une entreprise, il faut en premier lieu sélectionner un environnement donné. La décision n’est pas aisée en soi car elle va impliquer le futur de l’entreprise en question, laquelle aura à traiter, si tout se passe comme prévu un nombre a priori imprévisiblement énorme de clients, de produits, de fournisseurs… Le SGBDR qui fonctionnait avec des temps de réponses excellents lorsque le site avait 10000 visiteurs par jours saura-t-il tenir le choc lorsque le cap du million est dépassé ? Un réseau social comme Friendster, fort populaire en 2004, s’est effondré faute d’avoir pu assumer un afflux de membres inattendu.
Un développeur quelque peu aventureux pourra être tenté par une solution relativement récente mais fort appréciée comme Snowflake. Mais en réalité, pour la plupart le dilemme va se jouer entre deux mastodontes : MySQL et PostgreSQL. Deux valeurs sûres, bien établies et fourmillant de qualité. Alors, comment repérer celle qui devrait correspondre le mieux à son projet ?
PostgreSQL, l'un des plus anciens système de base de données
PostgreSQL est le plus ancien du lot. Il a pris naissance à l’University of California en 1989 suite aux travaux d’une équipe incluant un grand spécialiste des SGDBR, Michael Stonebraker, sur la base du légendaire Ingres, alors concurrent principal de Oracle.
Sa popularité est venue de divers facteurs:
- open source avec une licence particulièrement souple,
- des mises à jour fréquentes,
- personnalisable, comme avec les fonctions définies par l’utilisateur,
- des types de données très divers, et qui peuvent pareillement être définis
- des types d’indexation variés,
- excellente « scalability » (capacité à évoluer avec les accroissements de volumes de données à traiter)
- une forte communauté d’usagers actifs.
Ce SGBDR est notamment devenu l’armature de nombreuses applications Web célèbres : Facebook, Instagram, Spotify, Etsy, IMDB… Il a également été adopté par des sociétés telles que Apple ou Sun Microsystems.
MySQL, qu'est ce que c'est ?
On pourrait croire que les jeux sont faits. Or, MySQL n’a pas grand chose à envier à PostgreSQL. Apparu pour sa part en 1995, il est à l’origine l’oeuvre d’un informaticien suédois, Michael ‘Monty’ Widenius et de son équipe chez MySQL AB en Finlande. Son succès a été si fort que la société a été absorbée par Sun Microsystems en 1998 puis par Oracle en 2010.
Parmi ses atouts majeurs figurent:
- open source,
- une bonne facilité d’apprentissage,
- un coût peu élevé,
- la capacité à gérer de vastes datasets avec vélocité,
- une stabilité éprouvée,
- des options de scalability,
- une maintenance par Oracle soi-même avec des mises à jour fréquentes,
- une communauté d’usagers prêts à aider ceux qui ont des questions.
Pour ce qui est de ses références, MySQL aligne lui aussi des noms de prestige. Ainsi, WordPress repose sur ce SGBDR. Il est en usage chez Netflix, Twitter, Google (notamment pour YouTube), la NASA, Wikipédia, Uber, la US Navy…
Qu'est ce qui différencie les deux systèmes de base de données ?
Alors qui choisir parmi ces deux vedettes ? Quelques critères peuvent être énoncés.
Facilité d’usage
Si la facilité d’usage est un facteur essentiel à vos yeux, alors avantage à MySQL. Il a en effet la réputation d’être aisé à installer et optimiser. Qui plus est, on trouve aisément des database admin ayant une expérience MySQL. PostgreSQL, par comparaison va nécessiter davantage d’expertise technique.
Vitesse d’opération
Il n’est pas facile de départager ces deux mastodontes sur ce critère. MySQL est fort rapide sur les fonctions hautement concurrentes et le read-only. Oui mais, sur des requêtes complexes et nombreuses et une charge énorme, PostgreSQL va mieux tirer son épingle du jeu. De fait, certains benchmarks favorisent l’un ou l’autre. Toutefois, le MVCC (multi-version concurrency control – contrôle des accès concurrents apparaît comme un point fort de PostgreSQL, même si MySQL propose le MVCC via le moteur InnoDB.
Compatibilité
Les deux SGDBR sont compatibles avec les principaux langages de programmation. Toutefois PostgreSQL paraît un peu mieux fourni. Et il repose sur un langage de programmation orienté objet, ce qui offre plus de possibilités. Quant aux systèmes d’exploitation, nous retrouvons les incontournables (Windows, MacOS, Linux) de part et d’autres, mais aussi Solaris.
Scalability
MySQL peut intégrer des données de nombreux moteurs de stockage. Il reste que PostgreSQL a été conçu dès l’origine pour la gestion de très gros volumes de données. La société Adjust.com s’en sert pour gérer 4 Péta-octets de données et fait état de performances brillantes.
Support
MySQL dispose d’une communauté plus vaste et prête à contribuer. PostgreSQL dispose également d’une vaste communauté, mais avec une assistance moins aisée à obtenir selon ce que rapporte le site d’évaluation G2.
Conclusion
Alors, que choisir ? Étant doté de davantage de caractéristiques, PostgreSQL sera plus adapté à la gestion de situations « extraordinaires », soit des requêtes complexes sur des bases de données ultra-volumineuses. Si en revanche, vous cherchez une base de données fiable mais plus simple d’approche, MySQL apparaît comme le meilleur choix.