Post­greSQL et MySQL cons­ti­tuent deux des systèmes de gestion de bases de données open source les plus répandus. Mais quels sont leurs dif­fé­rences et leurs points communs exac­te­ment et lequel de ces deux outils convient le mieux à dif­fé­rents scénarios de dé­ploie­ment ?

Post­greSQL ou MySQL ?

Post­greSQL et MySQL sont tous deux des systèmes de gestion de banques de données (DBMS). Pour l’essentiel, ces deux systèmes tendent à être plus si­mi­laires que dif­fé­rents. Néanmoins, si on compare Post­greSQL vs. MySQL, on peut déceler certaines dis­tinc­tions subtiles qui pourront, ou pas, bé­né­fi­cier à votre projet.

Conseil

Apprenez-en plus sur ces deux systèmes dans nos articles détaillés :

Chacun des deux systèmes a recours au langage de pro­gram­ma­tion SQL en tant qu’interface centrale d’in­te­rac­tion avec les bases de données et les données qu’elles con­tien­nent. La dé­cla­ra­tion la plus connue est cer­tai­ne­ment SELECT pour exécuter des requêtes. Ceci permet aux données d’être trouvées et sorties au sein de la base de données. De surcroît, il existe dif­fé­rentes commandes SQL pour contrôler le DBMS.

Le périmètre fonc­tion­nel de SQL est défini à travers diverses normes. Les im­plé­men­ta­tions courantes les couvrent re­la­ti­ve­ment bien. Lorsque l’on compare Post­greSQL vs. MySQL, Post­greSQL s’avère plus puissant et com­pa­tible avec un éventail plus étendu de fonctions que MySQL.

Conseil

Jamais entendu parler du SQL ? Jetez un œil à notre in­tro­duc­tion au SQL.

Une dif­fé­rence im­por­tante entre Post­greSQL et MySQL est leur ar­chi­tec­ture de base. Chacun des deux systèmes est un système de gestion de bases de données re­la­tion­nel (RDBMS). Cependant, Post­greSQL peut faire beaucoup plus, étant donné qu’il s’agit d’un DBMS objet-re­la­tion­nel (ORDBMS).

Chacun de ces DBMS a pour socle un moteur de stockage qui fait office d’interface pour stocker les données sur des supports de données physiques. Pour un accès de haute per­for­mance, des index sont utilisés, lesquels renvoient aux entrées in­di­vi­duelles de base de données. Il existe dif­fé­rents moteurs de stockage et méthodes d’in­dexa­tion, chacun avec ses avantages et ses in­con­vé­nients.

Conseil

Post­greSQL et MySQL sont des systèmes de gestion de bases de données open source, ce qui les dif­fé­ren­cie des produits exclusifs de gros four­nis­seurs tels que Microsoft et IBM. De plus, il existe de nombreux autres DBMS open source. Apprenez-en plus sur les bases de données open source les plus im­por­tantes dans notre com­pa­ra­tif.

MySQL : le RDBMS open source classique

MySQL fut développé au milieu des années 1990 par MySQL AB en Suède. L’en­tre­prise fut acquise par Sun Mi­cro­sys­tems en 2008, puis par Oracle en 2010. Du fait de la méfiance de la com­mu­nauté open source vis-à-vis d’Oracle, « MariaDB » fut développé en tant qu’em­bran­che­ment com­mer­cial de MySQL. Ceci visait à garantir le fait que le projet de­meu­re­rait sous une licence open source.

Dans les années qui virent l’explosion du World Wide Web, MySQL devint un composant populaire de l’in­con­tour­nable pile LAMP. Le logiciel de base de données est désormais intégré aux côtés de Linux, Apache et PHP, au sein de la plupart des plans d’hé­ber­ge­ment Web. MySQL est vite devenu la norme pour les projets Web fondés sur les bases de données re­la­tion­nelles.

Post­greSQL : la puissante al­ter­na­tive objet-re­la­tion­nelle

À l’origine, Post­greSQL fut conçu sous le nom de « Postgres », en tant que suc­ces­seur du DBMS Ingres. Il fut développé au milieu des années 1980 au sein de l’Uni­ver­sité de Ca­li­for­nie, Berkeley. Le code fut publié sous la licence « Berkeley Software Dis­tri­bu­tion » (BSD). Au milieu des années 1990, SQL fut adopté en tant qu’interface uniforme, ce qui s’ac­com­pagna du chan­ge­ment de nom de Postgre, qui devint « Post­greSQL ». Chacun des deux noms est toujours utilisé aujourd’hui.

Selon les mots d’IBM, Post­greSQL est :

Citation

« One of the most compliant, stable and mature re­la­tio­nal databases available today and can easily handle complex queries. » / source : https://www.ibm.com/cloud/blog/post­gresql-vs-mysql-whats-the-dif­fe­rence

« L’une des bases de données les plus adéquates, stables et matures de nos jours, et peut fa­ci­le­ment prendre en main des requêtes complexes. » (traduit par IONOS)

Post­greSQL vs. MySQL : com­pa­ra­tif

Post­greSQL et MySQL sim­pli­fient tous deux le fait de tra­vail­ler avec des bases de données re­la­tion­nelles. Chacun des deux systèmes comprend des commandes SQL pour créer, modifier et remplir des tableaux, et exécuter des requêtes. Si on compare Post­greSQL vs. MySQL, on s’aperçoit qu’il existe des dif­fé­rences basiques dans leur fonc­tion­na­lité, les­quelles sont également visibles dans leurs ar­chi­tec­tures.

Tandis que MySQL constitue un pur système de gestion de banque de données re­la­tion­nel (RDBMS), Post­greSQL est DBMS objet-re­la­tion­nel (ORDBMS). Post­greSQL rend ac­ces­sible un vaste éventail de concepts issus de la pro­gram­ma­tion orientée objet. Parmi eux, on retrouve les types de données définis par les uti­li­sa­teurs, les types de données combinés et l’héritage. Post­greSQL est plus puissant que MySQL, mais aussi plus complexe.

Fonc­tion­na­lité DBMS Post­greSQL / ORDBMS MySQL / RDBMS
Plus de données par champ Tableaux supportés Nécessite un tableau séparé et une jonction
Relation m:n Ajustable di­rec­te­ment Nécessite un tableau sup­plé­men­taire et une jonction
Héritage Ajustable di­rec­te­ment Requiert une solution complexe/des vues, plusieurs tableaux, etc.
Données hié­rar­chiques Via JSON, HStore et XML JSON uni­que­ment
Valeurs boo­léennes Type de données per­son­na­lisé Im­plé­men­ta­tion en tant que TINYINT(1)

Les types de données

Les types de données sont le pilier de toute con­cep­tion solide de base de données et de toute uti­li­sa­tion pro­duc­tive des bases de données. Lorsque vous concevez des tableaux, vous spécifiez le type de données contenues dans les colonnes in­di­vi­duelles.

Type de données Post­greSQL MySQL
Valeurs boo­léennes Post­greSQL connaît son propre type de données boo­léennes. MySQL emprunte un détour. Au lieu d’im­plé­men­ter des valeurs boo­léennes comme leur propre type de données, les booléens sont stockés en tant que types de nombres TINYINT(1)
In­ter­valles Post­greSQL fournit un support étendu pour les types d’in­ter­valles, ce qui simplifie le travail avec des valeurs ordinales MySQL ne dispose pas d’un support dédié aux in­ter­valles à bord ; si vous en avez besoin, vous devrez vous dé­brouil­ler avec des al­ter­na­tives créées par vous-même.
Géo­don­nées Post­greSQL dispose de l’extension PostGIS, laquelle est con­si­dé­rée comme l’une des im­plé­men­ta­tions de GIS les plus matures. MySQL donne accès aux géo­don­nées et aux requêtes associées depuis la version 8. Néanmoins, le champ des fonctions est plus restreint qu’avec Post­greSQL.
Tableaux En tant qu’ORDBMS, Post­greSQL donne accès aux tableaux. Les tableaux Post­greSQL per­met­tent de stocker de multiples valeurs dans un champ unique. MySQL ne donne pas accès à ce type de données.
Données hié­rar­chiques/JSON Post­greSQL est com­pa­tible avec JSON en tant que type de données. Ceci permet à une structure de données complexe et imbriquée hié­rar­chi­que­ment d’être intégrée au sein d’un seul champ. MySQL est également com­pa­tible avec JSON en tant que type de données, mais ce n’est pas aussi puissant qu’avec Post­greSQL.

Per­for­mance

La question de la per­for­mance des bases de données est un sujet complexe. Les dif­fé­rents DBMS pré­sen­tent certains avantages et certains in­con­vé­nients en fonction de l’usage. En général, MySQL est considéré comme ex­trê­me­ment per­for­mant, en par­ti­cu­lier lorsque l’on accède à la base de données en « lecture intensive », c’est-à-dire en mode lecture. C’est le cas avec les systèmes de gestion de contenu tels que WordPress, qui lisent prin­ci­pa­le­ment du contenu issu de la base de données et le délivrent aux visiteurs.

À la dif­fé­rence de MySQL, Post­greSQL atteint un meilleur niveau de per­for­mance pour les opé­ra­tions com­pre­nant de lourdes tâches d’écriture. De plus, l’ORDBMS convient mieux aux solutions d’en­tre­po­sage de données et les autres systèmes pour l’ «Online Ana­ly­ti­cal Pro­ces­sing » (OLAP) (« Trai­te­ment Ana­ly­tique En Ligne »). Post­greSQL rend possible plusieurs con­nexions mais a des besoins plus im­por­tants en mémoire.

Sécurité et dis­po­ni­bi­lité

Les DBMS re­la­tion­nels ga­ran­tis­sent l’intégrité et la dis­po­ni­bi­lité des données. On appelle également cela les pro­prié­tés « ACID ». Post­greSQL est com­pa­tible avec les pro­prié­tés ACID ; avec MySQL cela dépend du moteur de stockage utilisé.

La situation est similaire con­cer­nant le « Mul­ti­ver­sion con­cur­rency control » (MVCC), qui garantit la cohérence des données dans le cas de plusieurs accès si­mul­ta­nés à la base de données. Avec Post­greSQL, MVCC est un fait acquis, tandis qu’avec MySQL, cela dépend du moteur de stockage. En termes de sécurité, MySQL offre le chif­fre­ment TLS. Post­greSQL utilise toujours l’ancienne norme SSL.

Ad­mi­nis­tra­tion

L’un des aspects im­por­tants du travail avec des DBMS est le fait qu’ils donnent accès à dif­fé­rentes in­ter­faces ad­mi­nis­tra­teur. Post­greSQL, comme MySQL, dispose d’une interface en ligne de commande (CLI) avec, res­pec­ti­ve­ment, psql et mysql. À l’aide des outils CLI, vous pouvez vous connecter à la base de données et exécuter le code SQL via une entrée directe ou un fichier script.

En plus des in­ter­faces de ligne de commande, Post­greSQL et MySQL disposent d’in­ter­faces gra­phiques uti­li­sa­teurs (GUI) basées sur le Web et natives. Leurs outils d’import et d’export dédiés per­met­tent la création et la res­tau­ra­tion de sau­ve­gardes de bases de données. Post­greSQL comprend pg_dump et pg_restore et est plus puissant, sur le plan des sau­ve­gardes, que la sau­ve­garde MySQL à l’aide de MySQL dump.

Outil admin Post­greSQL MySQL
CLI client Psql mysql
Web GUI phpP­gAd­min php­MyAd­min
Native GUI pgAdmin MySQL Workbench

Quand utilise-t-on Post­greSQL vs. MySQL ?

En comparant Post­greSQL vs. MySQL, il est clair qu’ils sont très dif­fé­rents, mais lequel de ces deux systèmes de gestion de base de données devriez-vous utiliser pour votre projet ? Heu­reu­se­ment, la réponse est simple : utilisez Post­greSQL si vous avez des besoins spé­ci­fiques pour votre base de données. Si ce n’est pas le cas, MySQL suffit.

En d’autres termes, vous uti­li­se­riez Post­greSQL pour im­plé­men­ter le site Internet d’une banque ou d’une or­ga­ni­sa­tion traitant des données critiques. La con­for­mité ACID complète s’avère payante dans ce cas. Une demande plus élevée pour de la stabilité et de la cohérence des données justifie la com­plexité des ORDBMS. De plus, les res­sources suf­fi­santes pour un en­vi­ron­ne­ment Post­greSQL à haute-per­for­mance y sont dis­po­nibles.

Une autre ap­pli­ca­tion de Post­greSQL a lieu lorsqu’une ar­chi­tec­ture projet nécessite la gestion de modèles de données so­phis­ti­qués. Pour mapper des hié­rar­chies d’objets complexes ou dans les cas où l’héritage est né­ces­saire en tant que composant central du modèle de données, opter pour l’uti­li­sa­tion de ce puissant ORDBMS est un bon choix. Ceci peut vous épargner d’avoir à utiliser le mappage objet-re­la­tion­nel (ORM).

Pour les projets Web de petite à moyenne envergure, MySQL constitue la meilleure option. Le RDBMS est moins vorace en termes de res­sources serveur. Il est plus facile de trouver un ad­mi­nis­tra­teur MySQL ex­pé­ri­menté et abordable. Ses fortes per­for­mances lorsqu’il lit des données font de lui une bonne option pour les sites Internet et les petites boutiques en ligne.

Enfin, il importe de noter que Post­greSQL et MySQL peuvent être utilisés en tandem. Ceci est par­ti­cu­liè­re­ment in­té­res­sant si on a recours à des solutions d’en­tre­po­sage de données. En général, une ou plusieurs instances MySQL ouvertes sur l’extérieur sont utilisées dans une telle con­fi­gu­ra­tion. Elles col­lec­tent des données et les trans­met­tent à une ins­tal­la­tion Post­greSQL qui mène des éva­lua­tions et des analyses.

Conseil

Jetez un œil à notre com­pa­ra­tif de MariaDB vs. MySQL.

Aller au menu principal