Maison  >  Article  >  base de données  >  Quelle est la différence entre la base de données pg et mysql ?

Quelle est la différence entre la base de données pg et mysql ?

青灯夜游
青灯夜游original
2020-08-28 16:29:5135092parcourir

Différences : 1. MySQL a tendance à être du point de vue de l'utilisateur ; la base de données pg a tendance à être d'un point de vue théorique. 2. MySQL laisse généralement la vérification de la légalité des données aux clients ; la base de données pg est plus stricte en termes de légalité. 3. En termes d'implémentation du standard SQL, la base de données pg est plus complète que MySQL et l'implémentation de ses fonctions est plus rigoureuse.

Quelle est la différence entre la base de données pg et mysql ?

MySQL

MySQL est relativement jeune, apparaissant pour la première fois en 1994 . Elle prétend être la base de données open source la plus populaire. MySQL est le M de LAMP (un progiciel de développement Web comprenant Linux, Apache et Perl/PHP/Python). La plupart des applications construites sur la pile LAMP utilisent MySQL, y compris des applications bien connues telles que WordPress, Drupal, Zend et phpBB.

Dès le début, MySQL a été conçu pour être un serveur Web rapide, utilisant la méthode rapide d'accès séquentiel à index (ISAM) et ne prenant pas en charge ACID. Après un développement rapide au début, MySQL a commencé à prendre en charge davantage de moteurs de stockage et a implémenté ACID via le moteur InnoDB. MySQL prend également en charge d'autres moteurs de stockage, fournit des fonctions de table temporaires (en utilisant le moteur de stockage MEMORY) et implémente des bases de données de lecture à grande vitesse via le moteur MyISAM. De plus, il existe d'autres moteurs de stockage de base et des moteurs tiers.

MySQL dispose d'une documentation très riche, comprenant de nombreux manuels de référence gratuits de haute qualité, des livres et des documents en ligne, ainsi qu'une formation et un support d'Oracle et de fournisseurs tiers.

MySQL a connu des changements de propriétaire et des événements dramatiques ces dernières années. Il a été initialement développé par MySQL AB, puis vendu à Sun pour 1 milliard de dollars en 2008. Sun a été racheté par Oracle en 2010. Oracle prend en charge plusieurs versions de MySQL : Standard, Enterprise, Classic, Cluster, Embedded et Community. Certains d’entre eux sont téléchargeables gratuitement, tandis que d’autres sont payants. Son code principal est basé sur la licence GPL, et des licences commerciales sont disponibles pour les développeurs et fabricants qui ne souhaitent pas utiliser la licence GPL.

Maintenant, il existe beaucoup plus de bases de données parmi lesquelles choisir en fonction du code MySQL d'origine, car plusieurs développeurs principaux de MySQL ont publié des forks MySQL. L'un des créateurs originaux de MySQL, Michael "Monty" Widenius, semblait regretter d'avoir vendu MySQL à Sun. Il a donc développé son propre fork MySQL, MariaDB, qui est gratuit et sous licence GPL. Drizzle, un fork créé par le célèbre développeur MySQL Brian Aker, a été largement réécrit, spécialement optimisé pour les applications multi-CPU, cloud, réseau et haute concurrence.

PostgreSQL

PostgreSQL se présente comme la base de données open source la plus avancée au monde. Certains fans de PostgreSQL disent que c'est comparable à Oracle, mais sans le prix élevé et le service client arrogant. Elle a une longue histoire, développée à l’origine à l’Université de Californie à Berkeley en 1985 pour succéder à la base de données Ingres.

PostgreSQL est un projet open source entièrement communautaire et maintenu par plus de 1 000 contributeurs à travers le monde. Il fournit une seule version entièrement fonctionnelle, contrairement à MySQL qui propose plusieurs éditions communautaires, éditions commerciales et éditions d'entreprise différentes. PostgreSQL est basé sur la licence gratuite BSD/MIT, et les organisations peuvent utiliser, copier, modifier et redistribuer le code à condition de fournir une notification de droit d'auteur.

La fiabilité est la priorité absolue de PostgreSQL. Il est connu pour sa qualité à toute épreuve et son ingénierie solide, prenant en charge des applications critiques à transactions élevées. La documentation de PostgreSQL est très bonne, avec un grand nombre de manuels en ligne gratuits et des manuels de référence archivés pour les anciennes versions. Le support communautaire de PostgreSQL est excellent, tout comme le support commercial de fournisseurs indépendants.

La cohérence et l'intégrité des données sont également des fonctionnalités hautement prioritaires de PostgreSQL. PostgreSQL prend entièrement en charge les fonctionnalités ACID, offre de solides garanties de sécurité pour l'accès aux bases de données et utilise pleinement les outils de sécurité d'entreprise, tels que Kerberos et OpenSSL. Vous pouvez définir vos propres contrôles pour garantir la qualité des données en fonction de vos propres règles métier. Parmi les nombreuses fonctionnalités de gestion, la récupération à un moment donné (PITR) est une fonctionnalité intéressante. Il s'agit d'une fonctionnalité flexible de haute disponibilité qui offre la possibilité de créer des sauvegardes à chaud, des instantanés et des restaurations en cas de panne. Mais ce n'est pas tout PostgreSQL. Le projet fournit également plusieurs méthodes pour gérer PostgreSQL afin d'obtenir une haute disponibilité, un équilibrage de charge, une réplication, etc., afin que vous puissiez utiliser les fonctions adaptées à vos besoins spécifiques.

Plateforme

MySQL et PostgreSQL apparaissent tous deux sur certains sites Web à fort trafic :

MySQL : Slashdot, Twitter , Facebook et Wikipédia

PostgreSQL : Yahoo utilise une base de données PostgreSQL modifiée pour gérer des centaines de millions d'événements par jour, ainsi que Reddit et Disqus

MySQL et PostgreSQL peuvent fonctionner sur plusieurs systèmes d'exploitation, tels que Linux, Unix, Mac OS X et Windows. Ils sont tous open source et gratuits, donc le seul coût lors de leur test est votre temps et votre matériel. Ils sont flexibles et évolutifs et peuvent être utilisés aussi bien sur de petits systèmes que sur de grands systèmes distribués. MySQL va plus loin que PostgreSQL dans un domaine, c'est-à-dire que ses tentacules s'étendent jusqu'au domaine intégré, ce qui est réalisé via libmysqld. PostgreSQL ne prend pas en charge les applications embarquées et adhère toujours à l'architecture client/serveur traditionnelle.

MySQL est généralement considéré comme un backend de base de données rapide pour les sites Web et les applications, capable d'une lecture rapide et d'un grand nombre d'opérations de requête, mais il n'est pas satisfaisant en termes de fonctionnalités complexes et de vérification de l'intégrité des données.

PostgreSQL est une base de données sérieuse et complète pour les applications transactionnelles d'entreprise, prenant en charge de puissantes fonctionnalités ACID et de nombreux contrôles d'intégrité des données. Tous deux sont très rapides sur certaines tâches et le comportement des différents moteurs de stockage MySQL est assez différent. Le moteur MyISAM est le plus rapide car il n'effectue que peu de contrôles d'intégrité des données. Il convient aux sites comportant de nombreuses opérations de lecture back-end, mais c'est un désastre pour les bases de données en lecture/écriture contenant des données sensibles car la table MyISAM peut éventuellement le faire. être endommagé. MySQL fournit des outils pour réparer les tables MySQL, mais pour les données sensibles, InnoDB qui prend en charge les fonctionnalités ACID est un meilleur choix.

En revanche, PostgreSQL est une base de données entièrement intégrée avec un seul moteur de stockage. Vous pouvez améliorer les performances en ajustant les paramètres dans le fichier postgresql.conf, ainsi qu'en ajustant les requêtes et les transactions. La documentation PostgreSQL fournit une introduction très détaillée au réglage des performances.

MySQL et PostgreSQL sont hautement configurables et peuvent être optimisés pour différentes tâches. Ils prennent tous en charge des extensions pour ajouter des fonctionnalités supplémentaires.

Une idée fausse courante est que MySQL est plus facile à apprendre que PostgreSQL. Les systèmes de bases de données relationnelles sont très complexes et les courbes d’apprentissage de ces deux bases de données sont en réalité similaires.

Compatibilité des normes

PostgreSQL est conçu pour la compatibilité SQL (la norme actuelle est ANSI-SQL:2008). MySQL est compatible avec la plupart des SQL, mais il possède également ses propres extensions pouvant prendre en charge les fonctionnalités NoSQL, qui sont présentées dans le manuel de référence. Il y a des avantages et des inconvénients à chaque approche. La conformité aux normes rend les administrateurs de bases de données, les développeurs de bases de données et les développeurs d'applications plus à l'aise, car cela signifie qu'ils n'ont qu'à apprendre un seul ensemble de normes, de fonctionnalités et de commandes. Cela permettra de gagner du temps, d’améliorer l’efficacité et de ne pas être limité à un fournisseur spécifique.

Les personnes qui soutiennent l'utilisation de fonctionnalités personnalisées non standard affirment que cela permet une adoption rapide de nouvelles fonctionnalités sans avoir à attendre la fin du processus de normalisation. La norme ANSI/ISO est en constante évolution, la compatibilité des normes est donc également un objectif changeant : les bases de données relationnelles bien connues Microsoft SQL Server, Oracle et IBM DB2 ne sont que partiellement compatibles avec la norme.

La différence entre MySQL et PostgreSQL (base de données pg)

MySQL est un SGBD créé par des développeurs d'applications tandis que PostgreSQL est créé par des développeurs de bases de données ; Création d'un SGBD.

En d'autres termes, MySQL tend vers le point de vue de l'utilisateur et répond à la question « Quel problème souhaitez-vous résoudre » tandis que PostgreSQL tend vers le point de vue théorique et répond à la question « Comment la base de données devrait-elle résoudre le problème » ; ".

MySQL laisse généralement la vérification de la légalité des données au client ; PostgreSQL est plus strict en termes de légalité. Par exemple, lors de l'insertion de l'heure « 2012-02-30 » dans MySQL, cela réussira, mais le résultat sera « 0000-00-00 » ; PostgreSQL ne permet pas d'insérer cette valeur ;

Généralement, PostgreSQL est considéré comme riche en fonctionnalités, tandis que MySQL est considéré comme plus rapide. Mais ce point de vue concerne essentiellement MySQL 4.x / PostgreSQL 7.x. Désormais, la situation a changé en termes de vitesse dans la version 9.x et les fonctionnalités de MySQL augmentent également.

Architecturalement, MySQL est divisé en deux couches : la couche SQL supérieure et plusieurs moteurs de stockage (tels que InnoDB, MyISAM). PostgreSQL ne dispose que d'un seul moteur de stockage offrant les deux fonctionnalités.

Ces deux systèmes de bases de données peuvent être optimisés et personnalisés en fonction de la situation de l'application. Il est difficile de dire avec précision lequel a les meilleures performances. Dès le début, le projet MySQL s'est concentré sur la vitesse, tandis que PostgreSQL s'est concentré dès le début sur les fonctionnalités et les spécifications.

Avantages de PostgreSQL par rapport à MySQL

1 L'implémentation standard de SQL est meilleure que MySQL et l'implémentation des fonctions est plus rigoureuse

2. , La prise en charge des fonctions des procédures stockées est meilleure que MySQL et il a la capacité de mettre en cache les plans d'exécution localement

3. Il a une prise en charge plus complète des connexions de table, des fonctions d'optimisation plus complètes, de nombreux types d'index pris en charge ; et des capacités de requêtes complexes Plus fortes ;

4. La table principale PG est stockée dans une table de tas, tandis que MySQL utilise un index pour organiser la table, qui peut prendre en charge une plus grande quantité de données que MySQL.

5. La réplication principale et secondaire de PG est une réplication physique Par rapport à la réplication logique basée sur les journaux binaires de MySQL, la cohérence des données est plus fiable, les performances de réplication sont plus élevées et l'impact sur les performances de l'hôte est moindre.

6. Le mécanisme de plug-in du moteur de stockage de MySQL a le problème de mécanismes de verrouillage complexes affectant la concurrence, mais PG n'existe pas.

Avantages de MySQL par rapport à PG :

1. Le mécanisme MVCC implémenté par innodb basé sur le segment de restauration est supérieur au mécanisme MVCC basé sur XID dans lequel les nouvelles et anciennes données de PG sont stockées ensemble. Les nouvelles et les anciennes données sont stockées ensemble et VACUUM doit être déclenché régulièrement, ce qui entraînera une surcharge redondante de verrouillage des objets d'E/S et de base de données, entraînant une diminution de la capacité globale de concurrence de la base de données. De plus, si VACUUM n'est pas nettoyé à temps, cela peut entraîner une expansion des données

2. MySQL utilise des index pour organiser les tables, cette méthode de stockage est très adaptée aux requêtes et aux opérations de suppression basées sur la correspondance de clé primaire, mais. il existe des contraintes sur la conception de la structure des tables ;

3. L'optimiseur de MySQL est relativement simple et la mise en œuvre des tables système, des opérateurs et des types de données est très simplifiée, ce qui est très approprié pour les opérations de requête simples ; >

4. Les exigences d'implémentation de la table de partition MySQL L'implémentation de partition basée sur une table d'héritage qui est supérieure à PG se reflète principalement dans la grande différence de performances de traitement lorsque le nombre de partitions atteint des milliers ou des dizaines de milliers.

5. Le mécanisme de plug-in du moteur de stockage de MySQL rend ses scénarios d'application plus étendus. Par exemple, en plus d'innodb adapté aux scénarios de traitement des transactions, myisam convient aux scénarios de requêtes de données statiques.

Recommandations associées : "

Tutoriel mysql"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn