Le titre n'est pas un clickbait ou une hyperbole. J'ai l'intention de prouver qu'en vertu à la fois de la conception et de la mise en œuvre, PostgreSQL est objectivement et mesurablement une meilleure base de données que tout ce qui est actuellement disponible, avec ou sans considérations financières.
Comment diable puis-je prétendre et justifier une déclaration aussi noble ? Lisez la suite, gentil nerd. Je vous promets que votre temps ne sera pas perdu.
Sécurité transparente
PostgreSQL a une liste de diffusion de sécurité. Le projet PostgreSQL apprend les vecteurs d'intrusion en même temps que tout le monde. Rien n'est caché et tout ce qui est trouvé est travaillé à un rythme qui fait tourner la tête des vendeurs commerciaux. Ne vous laissez pas berner par des listes de défauts plus courtes publiées par le même fournisseur qui fournit le logiciel examiné.
Cela signifie que tous les vecteurs d'attaque connus sont traités dès qu'ils sont rendus publics. Ce type de réactivité de sécurité n'est même pas envisageable sur le marché commercial. Pour les fournisseurs commerciaux, le secret jusqu'à ce que le problème puisse être résolu est essentiel à la résolution. PostgreSQL n'obtient pas un tel soulagement, et c'est fantastique pour vous.
Le contrôle de la concurrence multi-versions est bon pour vous
PostgreSQL choisit une méthode de contrôle de la concurrence qui fonctionne le mieux pour les charges de travail INSERT et SELECT élevées.
Il est très facile à concevoir pour PostgreSQL, en gardant à l'esprit les limitations de la surcharge de suivi pour
METTRE À JOUR et SUPPRIMER. Surtout, si vous respectez vos données, vous devriez apprendre à aimer la sécurité des données que vous offre PostgreSQL .
DDL participe aux transactions à l'aide de PostgreSQL. Les migrations fonctionnent jusqu'au bout ou pas du tout (le pire type de ne pas fonctionner est presque de fonctionner). Les harnais de test sont extrêmement faciles à construire. Besoin de réinitialiser le harnais de test ? Juste ROLLBACK.
PostgreSQL prend en charge les formes d'isolation des transactions conformes aux normes, y compris la sérialisation, la lecture validée et la lecture répétable. Ces méthodes offrent une conformité ACID complète.
PostgreSQL fait tout
Alors, vous voulez NoSQL, Riak, REACT, Redis, Mongo, etc. ? PostgreSQL fait tout cela. Certes, pas avec toutes les cloches et les sifflets de tous les produits originaux. Par exemple, PostgreSQL ne crée pas de nouveaux fragments pour vous pour aucun de ceux-ci. C'est toujours un processus manuel. Mais encore une fois, il y a toujours pg_partman. . .
Vous voulez un magasin de données de colonne ? Que diriez-vous de hstore? Vous ne souhaitez pas recycler votre personnel ? Branchez la langue de votre choix et continuez à rouler. Vous voulez une réplication partielle ? La réplication logique en continu est faite pour vous.
J'aurais du mal à penser à une fonctionnalité que je veux que PostgreSQL n'ait pas, ou qu'il n'y ait pas d'extension bien connue à fournir.
Vous souhaitez extraire des données d'autres systèmes ? PostgreSQL possède la collection d'objets de fédération la plus dynamique de toutes les bases de données. Ils les appellent des wrappers de données étrangères, et vous pouvez connecter PostgreSQL à un alligator avec du ruban adhésif et des attaches zippées. Traitez tout comme s'il s'agissait de vos données.
Attachez-le à une carte
La communauté PostGIS peut sans doute être plus grande que la communauté PostgreSQL elle-même. Les capacités de mappage de PostgreSQL le placent dans une classe à part, même par rapport à des alternatives très coûteuses.
Le projet PostGIS a choisi PostgreSQL comme plate-forme en raison de la facilité d'extensibilité et des capacités étendues d'enrichissement des données. Ces capacités sont directement exposées pour que tout autre projet en profite. Ils sont également sans réponse par tout autre fournisseur, commercial ou open source.
En fin de compte, vous pouvez l'accrocher à n'importe quoi.
PostgreSQL se développe et ouvre la voie à l'open source
Le projet PostgreSQL est l'une des organisations les plus visibles dans le domaine des logiciels open source. Avec une énorme communauté et une croissance astronomique, toutes les lacunes qu'elle a maintenant seront sans doute vaincues dans un laps de temps dont les autres fournisseurs ne peuvent que rêver.
Des fonctionnalités supplémentaires de qualité professionnelle sont annoncées littéralement chaque jour, et le personnel chargé de la maintenance de ces fonctionnalités est sélectionné parmi un groupe de génies que chaque entreprise espère embaucher, et il n'y en a tout simplement pas assez pour tout le monde.
PostgreSQL construit des solutions stables pour toujours
PostgreSQL a une réplication logique intégrée au cœur. Cela permet des migrations entre versions. Relisez cela. Vous n'êtes pas limité à une version matérielle ou logicielle spécifique. La solution peut être mise à jour indéfiniment.
De plus, PostgreSQL est pris en charge sur de nombreuses plates-formes, y compris les versions super stables de Linux. Avez-vous besoin d'une solution qui survit au retour sur investissement typique de 3 à 5 ans ? PostgreSQL vous durera éternellement, même si vous ne mettez jamais à niveau le matériel. Et les frais pour cela sont faciles à calculer. 0 $.
Déclaratif vaut mieux qu'impératif
Les langages de base de données sont généralement déclaratifs. Autrement dit, vous écrivez une requête dans le langage intégré de votre choix, décrivant les résultats que vous souhaitez voir. La base de données tente de décoder vos intentions et de fournir les résultats appropriés. C'est la base de tous les modèles de programmation déclarative. Dans PostgreSQL, cela se résume à un mappage de fonctions sur des mots-clés dans le langage SQL, parfois avec plusieurs choix algorithmiques pour déterminer exactement comment implémenter chaque déclaration.
Dans le débat séculaire sur les modèles de programmation impéritifs et déclaratifs5, il me vient à l'esprit que la programmation déclarative n'est qu'une programmation impérative sous un léger déguisement. Chaque jeton déclaratif dans un langage de requête de base de données correspond finalement à un ou plusieurs algorithmes qui appliquent la déclaration en termes impératifs. Ainsi, la désadaptation d'impédance définie par Henrietta est finalement dans l'esprit du développeur. Autrement dit, si le développeur pensait exactement comme le programmeur de la fonction de base de données pense, alors il n'y aurait pas de décalage.
Alors, comment un modèle déclaratif pourrait-il finalement être meilleur qu'un modèle impératif, étant donné que l'un n'est qu'une caractéristique d'appel de l'autre ? Heureux que vous posiez la question, car cela m'amène à mon point.
Les développeurs PostgreSQL sont plus intelligents que vous. Je ne veux pas dire que c'est facétieux ou timide. Littéralement, des milliers de contributeurs ont apporté des millions de contributions au projet PostgreSQL, dont beaucoup en tant qu'améliorations des contributions des autres. Les chances que tout ce que vous pensiez sur le dessus de votre tête soit meilleur que ce qui a déjà été mis en œuvre sont très faibles. Et, même si vos pensées étaient meilleures, vous devriez les contribuer au projet PostgreSQL pour le bénéfice de tous, élevant ainsi la barre pour tous les autres.
Alors, qu'est-ce qui rend PostgreSQL si merveilleux alors ? Partage d'esprit mondial sans considérations d'entreprise. Des milliers de développeurs travaillent des centaines de milliers d'heures pour faire de meilleurs choix algorithmiques. Ainsi, votre logiciel s'améliore à chaque version, le plus souvent sans que vous ayez à faire quoi que ce soit de particulier de votre part.
N'est-ce pas la nature des logiciels en général, dites-vous ? Hé bien oui. Mais pas dans la mesure où c'est le cas lorsque le monde entier est impliqué dans votre projet. PostgreSQL occupe une place très importante dans la communauté open source. Les fournisseurs commerciaux ne seront jamais en mesure de suivre le rythme de changement qu'un projet open source peut fournir à ce niveau. Les migrations vers l'open source (et notamment PostgreSQL) sont là pour le prouver.
Les fonctionnalités continuent d'arriver. Il reste très peu de choses que les fournisseurs commerciaux peuvent considérer comme un avantage distinct. Parmi ces éléments figurent le support SMP, la réplication bidirectionnelle et les outils externes. Devinez sur quoi la communauté travaille actuellement et publiera très probablement dans les prochaines années ?
Étendez PostgreSQL comme bon vous semble
PostgreSQL possède une communauté dynamique d'auteurs qui écrivent des logiciels auxiliaires. Cela inclut de brancher n'importe quel langage que vous aimez et de l'utiliser pour étendre PostgreSQL de la manière qui semble utile. Aimez-vous la gestion des chaînes perl? Ok, alors utilise ça. Qu'en est-il de la prise en charge des cartes Python ? Bien sûr, il suffit de brancher python et d'aller en ville. Vous souhaitez écrire des services Web à l'aide d'un back-end PostgreSQL ? C'est génial, et PostgreSQL vous aidera. JSON ? D'accord. XML ? Tu paries. PostgreSQL prend directement en charge tout cela et infiniment plus. Si vous pensez à un langage qui le fait bien, branchez-le à PostgreSQL et vous pourrez l'avoir côté serveur.
Vous pouvez créer vos propres fonctions, types de données, opérateurs, agrégats, fonctions de fenêtre ou à peu près n'importe quoi d'autre. Vous ne voyez pas une fonctionnalité que vous aimez ? Plagiez-le et personnalisez-le à partir du code source. Vous êtes libre de le faire grâce à la licence.
PostgreSQL fournit également des fonctions de crochet qui vous permettent d'étendre la base de données sans avoir à aller à l'extrême en programmation.
Cette capacité à assimiler n'importe quelle fonctionnalité de n'importe quel autre langage est unique à PostgreSQL. Vous pouvez fournir n'importe quelle fonctionnalité en utilisant n'importe quelle bibliothèque standardisée existante. Vous pouvez suivre les normes, suivre les changements, toujours mettre à jour PostgreSQL tant qu'il est en vie, et vous pouvez tout faire gratuitement.
Visez grand et large
PostgreSQL dispose de plusieurs fonctionnalités pour tirer le meilleur parti de la plate-forme matérielle qui lui a été attribuée. Partitionnement, exécution parallèle, index partiels, espaces de table, mise en cache et routines de maintenance parallèles non bloquantes (presque tout dans PostgreSQL fait germer le mot-clé CONCURRENTLY ces derniers temps).
Lorsque cela ne vous suffit pas, la réplication physique en continu vous fournira un tas de lectures en attente à peu de frais. Le partage, le cache mémoire, la mise en file d'attente, l'équilibrage de charge et le regroupement de connexions fonctionnent tous avec PostgreSQL. Ce n'est toujours pas suffisant? Qu'en est-il de la réplication de flux logique ? Vous voulez géosharder la base de données partout dans le monde, dites-vous ? Eh bien, bienvenue dans la réplication bidirectionnelle.
Et le prix est toujours à 0 $.
Indexer tout ça
PostgreSQL prend en charge une telle liste d'index qu'il est ahurissant de comprendre comment les utiliser tous. GiST, SP-Gist, KNN Gist, GIN, BRIN et Btree sont tous disponibles. Et il y a plus à obtenir via le système d'extension, comme les filtres Bloom et autres.
PostgreSQL peut les utiliser avec des index pilotés par des fonctions, des index partiels, des index de couverture et une recherche en texte intégral. Et ces fonctionnalités étendues ne sont pas mutuellement exclusives. Vous pouvez tous les utiliser en même temps.
Roulez-le, roulez-le
Plusieurs des technologies déjà mentionnées font de PostgreSQL une fantastique plateforme d'intégration et de distribution de données. De multiples formes de réplication, combinées à de multiples formes de fédération, fournissent à la fois des technologies push et pull pour presque tous les types de systèmes de données.
Ceux-ci peuvent être combinés dans des configurations infinies pour relier les solutions de stockage de base de données. Tout cela sans nécessiter de package de traitement ETL/ELT. PostgreSQL le fait. La base de données de source unique de vérité la plus rapide de la planète le fait en ne déplaçant pas du tout les données hors du système source. Cela signifie que les données sont toujours à jour et que les temps de réponse peuvent être gérés.
Si vous ne supportez pas le manque de fiabilité du système source ou si vous souhaitez des performances un peu meilleures du côté de la requête, vous pouvez également toujours mettre en cache les données périodiquement avec des vues matérialisées, qui peuvent être mises à jour tout en continuant à être interrogées.
La licence est grande ouverte
PostgreSQL a sa propre licence qui est largement basée sur la licence BSD. Cela permet une plus grande liberté d'utilisation et de distribution.
La licence s'applique à tout le code du projet principal, aux principales extensions de contribution, aux bibliothèques clientes, aux gestionnaires de connexions et à la plupart des outils associés.
Il est très permissif, rédigé en anglais simple et non disponible à l'achat.
Documentation fantastique
Le projet PostgreSQL exige que tout développeur soumettant du code fournisse une documentation pour la proposition. Cette proposition permet de créer la documentation de la fonctionnalité qui est mise à disposition dans plusieurs formats. Cette documentation est également utilisée dans l'évaluation de la fonctionnalité elle-même et comme référence pour développer de futures fonctionnalités.
Dans l'ensemble, cela signifie que PostgreSQL vit de la documentation. De nombreux développeurs pour PostgreSQL ont appris à coder en C, comment fonctionnent les bases de données et comment les projets sont gérés en travaillant avec le projet PostgreSQL. Cette documentation est sans pareille.
Développement piloté par les tests
PostgreSQL est largement testé. Non, ce n'est pas dit assez fort. PostgreSQL est testé de manière exhaustive. Chaque bogue est rencontré avec un test pour vérifier son existence, et le code est écrit pour satisfaire le test. Les nouvelles fonctionnalités sont d'abord écrites par la création de tests (et de documentation), puis codées jusqu'à ce que la fonctionnalité apparaisse.
Ces tests sont intégrés dans la ferme de construction pour la régression, afin que les bogues ne (ré)apparaissent pas dans les futures versions de PostgreSQL. Cela signifie que chaque test (toujours actuel) est exécuté pour chaque version de PostgreSQL pour chaque cycle de construction. Cela représente beaucoup de tests et garantit que PostgreSQL reste la base de données la plus stable disponible.
PostgreSQL n'est publié que lorsque TOUS les tests de régression réussissent. Cela prévoit des versions "0 bogue connu".
Internationalisation et localisation
Les développeurs de PostgreSQL viennent du monde entier. Ils ont travaillé dans de nombreuses langues maternelles depuis la création de PostgreSQL en tant que projet de fin d'études universitaires. L'internationalisation et la localisation ont été intégrées à PostgreSQL comme une pratique standard, et non comme un boulon, car PostgreSQL a commencé à attirer un marché commercial mondial.
Alors que PostgreSQL délègue une partie de l'internationalisation au système d'exploitation pour des raisons de compatibilité, une grande partie de la traduction est intégrée au système, offrant une expérience de transition linguistique transparente.
Fonctionnement en nuage
PostgreSQL fonctionne dans des architectures cloud à l'aide d'outils ansible, kubernetes et propriétaires de plusieurs fournisseurs de cloud. Vous avez le choix entre plusieurs implémentations cloud natives pour correspondre à votre architecture.
Si vous voulez traiter les serveurs comme du bétail, pas comme des animaux de compagnie, PostgreSQL vous couvre également dans le cloud.
Conformité aux normes
PostgreSQL a été axé sur les normes pendant toute la durée de vie du projet. Étant donné que PostgreSQL est né d'un programme d'études supérieures universitaires, il a été utilisé comme implémentation de référence pour de nombreuses normes SQL.
PostgreSQL implémente SQL/Med et ANSI SQL.
Selon la documentation fantastique, "PostgreSQL prend en charge la plupart des principales fonctionnalités de SQL:2016. Sur les 179 fonctionnalités obligatoires requises pour une conformité complète au cœur, PostgreSQL est conforme à au moins 160. » C'est plus que presque n'importe quel autre moteur de base de données.
Fonctionnalités linguistiques
PostgreSQL implémente des expressions de table communes (CTE), des structures de contrôle de langage (if, for, case, etc.), une gestion structurée des erreurs et tous les avantages que vous attendez d'un langage procédural mature.
Êtes-vous déjà convaincu ?
Je pourrais encore parler de la fantastique communauté de groupes d'utilisateurs, de canaux IRC, de sites Web avec des solutions, d'articles de blog et de mentors. Je pourrais devenir philosophe sur la façon dont la base de données est multiplateforme, multiarchitecture et multiculture. Il y a des heures et des heures de présentations, de vidéos et de conférences.
Ou vous pouvez simplement aller le télécharger et voir s'il est plus grand que votre imagination. Je pense que vous serez très agréablement surpris.