PostgreSQLPostgreSQL
PostgreSQL, aussi connu sous le nom de Postgres, 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 mettant l’accent sur l’extensibilité et la conformité avec SQL. Il prend en charge les transactions avec les propriétés ACID (Atomicité, Cohérence, Isolation, Durabilité) et offre des fonctionnalités avancées telles que les vues automatiquement mises à jour, les vues matérialisées (materialized views), les déclencheurs (trigger), les clés étrangères (foreign keys) et les procédures stockées (stored procedures)[4]. PostgreSQL est compatible avec les principaux systèmes d’exploitation, notamment Windows, Linux, macOS, FreeBSD et OpenBSD. Il peut gérer une grande variété de charges de travail, allant des bases de données sur une seule machine aux entrepôts de données, aux data lakes[5] et aux services web avec de nombreux utilisateurs simultanés. PostgreSQL est comparable à d'autres systèmes de gestion de base de données, qu'ils soient libres (comme MariaDB et Firebird), ou propriétaires (comme Oracle, MySQL, Sybase, DB2, Informix et Microsoft SQL Server). 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. Le PostgreSQL Global Development Group[6] se concentre exclusivement sur le développement du moteur de base de données et des composants étroitement liés. Ce noyau constitue techniquement PostgreSQL lui-même, mais une vaste communauté de développeurs et un écosystème fournissent de nombreuses fonctionnalités supplémentaires qui, traditionnellement, seraient proposées par un éditeur de logiciel propriétaire. Cela inclut des fonctionnalités spécifiques, comme le support des bases de données géospatiales ou temporelles, ainsi que des extensions permettant d’émuler d’autres systèmes de bases de données. De nombreux outils tiers proposent également des interfaces utilisateur graphiques ainsi que des solutions d’équilibrage de charge et de haute disponibilité[7]. Ces contributions jouent un rôle essentiel dans l’adoption et l’utilisation de PostgreSQL, constituant ainsi un vaste écosystème autour du moteur de base de données. HistoireL'histoire de PostgreSQL remonte à la base de données Ingres, développée à Berkeley par Michael Stonebraker. Lorsque ce dernier décida en 1985 de recommencer le développement de zéro, il nomma le logiciel Postgres, comme raccourci de post-Ingres. Lors de l'ajout des fonctionnalités SQL en 1995, Postgres fut renommé Postgres95. Ce nom fut changé à la fin de 1996 en PostgreSQL. Le projet est organisé de manière à maintenir plusieurs versions stables en parallèle, ainsi qu'un dépôt mis à jour en continu[8]. Cette pratique est extrêmement appréciable pour les productions des systèmes informatiques car elle leur permet de lisser les besoins de migration obligée de leurs applications qui utilisent des bases de données sur les moments de faible charge et de disponibilités de leurs ressources. Elles réalisent ainsi de très sérieuses économies, puisqu'on estime en moyenne que cette charge représente au moins 40 %, mais le plus souvent jusqu'à 60 % des coûts de fonctionnement des organisations informatiques au sein des entreprises.[réf. nécessaire] Principales caractéristiquesCe 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. PostgreSQL est plus avancé que ses concurrents dans la conformité aux standards SQL (énoncé vrai entre 2012 et 2015). PostgreSQL est pratiquement conforme (de plus en plus conforme) aux normes ANSI SQL 89, SQL 92 (SQL 2), SQL 99 (SQL 3), SQL:2003 et SQL:2008[9]. Il fonctionne sur diverses plates-formes matérielles et sous différents systèmes d'exploitation. PostgreSQL fonctionne sur Solaris, SunOS, macOS, HP-UX, AIX, Linux, IRIX, Digital Unix, BSD, NetBSD, FreeBSD, OpenBSD, SCO unix, NeXTSTEP, UnixWare et toutes sortes d'Unix. Depuis la version 8.0, PostgreSQL fonctionne également nativement sur Windows. Avant la version 8, il fallait une couche de compatibilité POSIX (par exemple cygwin) pour faire fonctionner PostgreSQL sur ce système d'exploitation. PostgreSQL est largement reconnu pour son comportement stable, proche de 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. Outre sa capacité à gérer des bases de données volumineuses[10], PostgreSQL est souvent utilisé pour sa capacité à gérer des bases de données spatiales (SIG), grâce à son extension PostGIS qui intègre une riche bibliothèque de fonctions géographiques. Multiversion concurrency control (MCC ou MVCC)PostgreSQL gère la concurrence grâce au contrôle de concurrence multiversion ou Multiversion concurrency control (MVCC), en attribuant à chaque transaction une vue cohérente et isolée de l'état de la base de données à un instant donné, ce qui permet d'apporter des modifications sans affecter les autres transactions. Cela élimine en grande partie la nécessité d'utiliser des verrous en lecture et garantit que la base de données respecte les principes ACID (Atomicité, Cohérence, Isolation, Durabilité). PostgreSQL propose quatre niveaux d'isolation des transactions : Read Uncommitted, Read Committed, Repeatable Read et Serializable. Étant donné que PostgreSQL est protégé contre les lectures sales, demander un niveau d'isolation des transactions Read Uncommitted renvoie en réalité un niveau Read Committed. PostgreSQL supporte un ordonnancement complet (ou Serializability) grâce à la méthode de serializable snapshot isolation (SSI)[11]. L'implémentation du MVCC dans PostgreSQL peut rencontrer des problèmes de performance nécessitant un réglage lorsqu'elle est soumise à une charge d'écriture importante, particulièrement lors de la mise à jour de lignes existantes[12]. Stockage et réplicationRéplicationPostgreSQL intègre une réplication[13] binaire native basée sur l’envoi des modifications, que l'on nomme des journaux de reprise anticipée ou Write-Ahead Logs (WAL), vers des nœuds répliqués de manière asynchrone. Ces nœuds permettent d’exécuter des requêtes en lecture seule, ce qui facilite la répartition du trafic de lecture entre plusieurs serveurs. Auparavant, les solutions de réplication offrant une mise à l’échelle similaire des lectures s’appuyaient généralement sur l’ajout de déclencheurs de réplication sur le serveur principal, augmentant ainsi sa charge. PostgreSQL inclut également une réplication synchrone intégrée[14] qui garantit que, pour chaque transaction d’écriture, le serveur principal attend qu’au moins un nœud répliqué ait écrit les données dans son journal des transactions. Contrairement à d’autres systèmes de bases de données, PostgreSQL permet de spécifier le niveau de durabilité d’une transaction (asynchrone ou synchrone) selon plusieurs critères : par base de données, par utilisateur, par session ou même par transaction. Cela s’avère utile pour certaines charges de travail ne nécessitant pas de telles garanties, car la réplication synchrone peut affecter les performances en raison de l'attente de confirmation du serveur de secours. Les serveurs de secours, également appelés serveurs en attente, peuvent être synchrones ou asynchrones. Dans le cadre de la réplication synchrone, la configuration permet de spécifier les serveurs candidats. Le premier serveur de la liste qui assure un flux actif devient le serveur synchrone principal. En cas de panne, le système bascule automatiquement vers le serveur suivant dans la liste. Le terme serveur de secours est généralement utilisé lorsqu'il s'agit de haute disponibilité et de basculement automatique en cas de panne, tandis que serveur d'attente (standby server) désigne plutôt un serveur qui reste passif et ne prend le relais qu'en cas de besoin. La réplication synchrone multi-maître n’est pas incluse dans le cœur de PostgreSQL. Cependant, Postgres-XC, basé sur PostgreSQL, fournit une réplication multi-maître synchrone évolutive et est distribué sous la même licence que PostgreSQL. Un projet associé, Postgres-XL, propose des fonctionnalités similaires, tandis que Postgres-R est un autre fork axé sur la réplication. La réplication bidirectionnelle (BDR) est un système de réplication multi-maître asynchrone pour PostgreSQL[15]. Des outils comme repmgr simplifient la gestion des clusters de réplication. Plusieurs solutions de réplication asynchrone basées sur des déclencheurs restent pertinentes malgré l’introduction des capacités natives de réplication binaire, notamment dans les cas où la réplication complète d’un cluster de bases de données n’est pas appropriée. Parmi ces solutions :
IndexationPostgreSQL intègre en natif la prise en charge des index classiques de type B-tree et table de hachage (hash table), ainsi que quatre méthodes d'accès aux index :
En plus de ces types d'indexation, PostgreSQL permet la création de méthodes d'indexation définies par l'utilisateur, bien que ce processus soit complexe. PostgreSQL prend également en charge plusieurs fonctionnalités avancées en matière d'indexation :
SchémasLes schémas PostgreSQL sont des espaces de noms permettant à des objets du même type et portant le même nom de coexister dans une seule base de données. Ils ne doivent pas être confondus avec un schéma de base de données (ou database schema), qui est une spécification abstraite, structurelle et organisationnelle définissant la relation des données de chaque table avec celles des autres tables. Tous les objets d'une base de données PostgreSQL, à l'exception de quelques objets globaux tels que les rôles et les tablespaces, existent au sein d'un schéma. Les schémas ne peuvent pas être imbriqués, un schéma ne peut pas contenir un autre schéma. Le système de permissions contrôle l'accès aux schémas et à leur contenu. Par défaut, les bases de données nouvellement créées ne comportent qu'un seul schéma appelé public, mais d'autres schémas peuvent être ajoutés, et l'utilisation du schéma public n'est pas obligatoire. Un paramètre Les schémas inexistants ou non accessibles à l'utilisateur connecté, qui sont répertoriés dans Les nouveaux objets sont créés dans le premier schéma valide (accessible) apparaissant dans Types de donnéesPostgreSQL prend en charge une large variété de types de données natifs, notamment :
Types personnalisésLes utilisateurs peuvent créer leurs propres types de données, qui peuvent être pleinement indexables grâce aux infrastructures d'indexation de PostgreSQL, comme GiST, GIN et SP-GiST. Un exemple notable est l'intégration des types de données pour les systèmes d'information géographique (SIG) ou en anglais Geographic information system (GIS) via le projet PostGIS. Il existe également un type de données appelé domaine, qui fonctionne comme un autre type de données mais avec des contraintes supplémentaires définies par son créateur. Toute donnée insérée dans une colonne utilisant ce domaine devra respecter ces contraintes. Types de plage (Range Types)PostgreSQL propose aussi des types de plages, qui permettent de représenter des intervalles de données :
Les types de plages intégrés incluent les entiers, grands entiers, nombres décimaux, timestamps (avec ou sans fuseau horaire) et dates. Il est également possible de créer des plages personnalisées, par exemple :
Les plages prennent en charge les bornes inclusives et exclusives grâce aux caractères
Les types de plage sont compatibles avec les opérateurs d'inclusion, de chevauchement et de position relative pour faciliter les comparaisons et les recherches. Objets définis par l'utilisateurPostgreSQL permet la création de nouveaux types d'objets au sein de la base de données, offrant une grande flexibilité pour l'extension des fonctionnalités natives.
Grâce à ces fonctionnalités, PostgreSQL est hautement extensible, permettant d'adapter la base de données à des besoins spécifiques. HéritageLes tables peuvent hériter des caractéristiques d’une table parente[24]. Les données des tables enfants apparaissent comme si elles faisaient partie de la table parente, sauf si la sélection est effectuée en utilisant le mot-clé ONLY, par exemple : L'héritage peut être utilisé pour mettre en œuvre le partitionnement des tables, en employant des déclencheurs (triggers) ou des règles pour rediriger les insertions vers la table parente et les distribuer vers les bonnes tables enfants. Cependant, cette fonctionnalité n'est pas totalement prise en charge. En particulier, les contraintes ne sont pas toutes héritables. Les contraintes CHECK et NOT NULL définies sur une table parente sont automatiquement héritées par ses tables enfants. En revanche, d'autres types de contraintes (UNIQUE, PRIMARY KEY et FOREIGN KEY) ne sont pas hérités. L’héritage permet de modéliser directement les hiérarchies de généralisation représentées dans les diagrammes entité-association (DEA) ou en anglais Entity–relationship model (ERDs) au sein de la base de données PostgreSQL. Autres fonctionnalités de stockage
Contrôle et connectivitéForeign Data Wrappers (FDW)PostgreSQL permet de se connecter à d’autres systèmes pour récupérer des données via des foreign data wrappers (FDW)[26]. Ceux-ci peuvent prendre la forme de n'importe quelle source de données, telle qu'un système de fichiers, un autre système de gestion de base de données relationnelle (SGBDR) ou un service web. Cela permet aux requêtes de base de données classiques d’utiliser ces sources de données comme des tables ordinaires, et même d’effectuer des jointures entre plusieurs sources de données. InterfacesPostgreSQL prend en charge un protocole de communication binaire qui permet aux applications de se connecter au serveur de base de données. Ce protocole est actualisé à chaque version (actuellement la version 3.0 depuis PostgreSQL 7.4) et dispose d’une spécification détaillée. L'implémentation officielle de ce protocole de communication est une API C, libpq[27]. De plus, l'outil officiel ECPG permet d’intégrer des commandes SQL dans du code C. Les deux sont inclus dans la distribution standard de PostgreSQL[28]. Des bibliothèques tierces pour connecter PostgreSQL sont disponibles pour de nombreux langages de programmation, notamment C++, Java, Julia, Python, Node.js, Go et Rust. Langages procédurauxLes langages procéduraux permettent aux développeurs d'étendre la base de données avec des sous-programmes personnalisés (fonctions), souvent appelées procédures stockées. Ces fonctions peuvent être utilisées pour créer des déclencheurs de base de données ou triggers (fonctions invoquées lors de la modification de certaines données), ainsi que des types de données personnalisés et des fonctions d'agrégation[29]. Les langages procéduraux peuvent également être invoqués sans définir de fonction, en utilisant la commande Les langages sont divisés en deux groupes :
PostgreSQL prend en charge trois langages procéduraux intégrés :
En outre, PostgreSQL permet de charger des langages procéduraux dans la base de données via des extensions. Trois extensions de langages sont incluses avec PostgreSQL pour prendre en charge Perl, Tcl et Python. Pour Python, la version actuelle est Python 3, tandis que la version Python 2 a été abandonnée à partir de PostgreSQL 15. Les versions anciennes et nouvelles ne pouvaient pas être utilisées dans la même session auparavant. Des projets externes fournissent un support pour de nombreux autres langages[32], tels que PL/Java, JavaScript (PL/V8), PL/Julia[33], PL/R, PL/Ruby, et d'autres. Déclencheurs (Triggers)Les déclencheurs sont des événements activés par l'exécution d'instructions SQL de manipulation de données (DML). Par exemple, une instruction PostgreSQL prend en charge les déclencheurs de manière complète et permet de les attacher aux tables. Les déclencheurs peuvent être par colonne et conditionnels : un déclencheur Si plusieurs déclencheurs sont définis sur un même événement, ils sont exécutés dans l’ordre alphabétique de leur nom. En plus des fonctions écrites en PL/pgSQL, les déclencheurs peuvent invoquer des fonctions écrites dans d'autres langages comme PL/Python ou PL/Perl. Notifications AsynchronesPostgreSQL propose un système de messagerie asynchrone accessible via les commandes Ce mécanisme permet d'éviter les interrogations répétées (attente active ou polling) par les applications pour détecter des modifications, réduisant ainsi la charge inutile sur le système. Il peut être utilisé pour informer d'autres sessions lorsqu'une table est mise à jour ou pour synchroniser des applications distinctes en réponse à certaines actions. Les notifications sont totalement transactionnelles : elles ne sont envoyées qu'une fois la transaction confirmée (COMMIT), ce qui empêche l'envoi de messages pour des actions annulées (ROLLBACK). De nombreux connecteurs PostgreSQL prennent en charge ce système de notifications, notamment libpq, JDBC, Npgsql, psycopg et Node.js, facilitant son intégration avec des applications externes. PostgreSQL peut également être utilisé comme un serveur de messagerie pub/sub ou un serveur de tâches en combinant RèglesLes règles permettent de réécrire l’arbre de requête d’une requête entrante. Elles fonctionnent comme un langage de macro pour SQL, s’exécutant automatiquement. Les "Query Re-Write Rules" sont attachées à une table ou une classe et modifient les requêtes Le processus de réécriture des requêtes intervient après l’analyse syntaxique (parsing) mais avant l’optimisation et l’exécution. Toutefois, la majorité des fonctionnalités offertes par les règles ont été remplacées par des triggers, qui sont généralement préférés en raison de leur comportement plus prévisible et plus facile à gérer que les règles équivalentes. Autres fonctionnalités de requêtes
Modèle de concurrenceLe serveur PostgreSQL est basé sur des processus (et non sur des threads), utilisant un processus du système d'exploitation par session de base de données. Plusieurs sessions sont automatiquement réparties sur tous les CPU disponibles par le système d'exploitation. De nombreux types de requêtes peuvent également être parallélisées sur plusieurs processus de travail en arrière-plan, permettant de tirer parti de plusieurs CPU ou cœurs[39]. Les applications clientes peuvent utiliser des threads et créer plusieurs connexions à la base de données depuis chaque thread[40]. SécuritéPostgreSQL gère sa sécurité interne sur une base par rôle (ou role-oriented programming). Un rôle est généralement considéré comme un utilisateur (un rôle pouvant se connecter) ou un groupe (un rôle dont d'autres rôles sont membres). Des permissions peuvent être accordées ou révoquées sur n'importe quel objet, jusqu'au niveau de la colonne, et peuvent permettre ou empêcher la visibilité/la création/la modification/la suppression d'objets au niveau de la base de données, du schéma, de la table et des lignes. La fonctionnalité SECURITY LABEL[41],[42] de PostgreSQL (extension aux standards SQL) permet une sécurité supplémentaire avec un module chargeable intégré qui supporte un contrôle d'accès obligatoire (MAC), basé sur la politique de sécurité Security-Enhanced Linux (SELinux).[43],[44] PostgreSQL prend en charge nativement un large éventail de mécanismes d'authentification externes, notamment :
Les méthodes GSSAPI, SSPI, Kerberos, peer, ident et certificat peuvent également utiliser un fichier map spécifié qui liste quels utilisateurs, correspondant à ce système d'authentification, sont autorisés à se connecter en tant qu'utilisateur de la base de données spécifique. Ces méthodes sont spécifiées dans le fichier de configuration d'authentification basé sur l'hôte du cluster Standards de conformitéPostgreSQL revendique une conformité élevée, mais pas complète, avec la dernière norme SQL ("à partir de la version 17, sortie en septembre 2024, PostgreSQL respecte au moins 170 des 177 fonctionnalités obligatoires pour la conformité au noyau SQL:2023 (en)", et aucune autre base de données n'est totalement conforme à cette norme[46]). Une exception concerne la gestion des identifiants non entre guillemets comme les noms de tables ou de colonnes. Dans PostgreSQL, ces identifiants sont convertis en minuscules en interne[47], alors que la norme stipule que les identifiants non entre guillemets doivent être convertis en majuscules. D'autres lacunes concernent l'absence de tables temporelles permettant l'enregistrement automatique des versions de lignes pendant les transactions, avec la possibilité de naviguer dans le temps (prédicat FOR SYSTEM TIME), bien que des extensions tierces relativement conformes aux normes SQL soient disponibles[48]. Benchmarks et performancesDepuis 2015, PostgreSQL a connu des améliorations significatives en termes de performances et de scalabilité. Améliorations des performancesPostgreSQL 16 publiée en septembre 2024, cette version a apporté des améliorations notables en matière de sécurité et de performance. Les benchmarks montrent des gains significatifs par rapport aux versions précédentes, notamment PostgreSQL 13[49]. La comparaison avec MySQL indique selon des études récentes que, pour la plupart des charges de travail, les performances de PostgreSQL et de MySQL sont comparables, avec des variations allant jusqu'à 30 %. Cependant, MySQL peut avoir un avantage dans les charges de travail extrêmement intensives en écriture[50]. Benchmarks récentsLa comparaison avec Dolt et MySQL publié en décembre 2023 par AWS a évalué PostgreSQL avec la fonctionnalité Dedicated Log Volume (DLV), montrant des gains de performance via l’outil pgbench[51]. Scalabilité et optimisationLa scalabilité sur les systèmes multi-cœurs de PostgreSQL montre une progression linéaire des performances avec l’augmentation du nombre de cœurs CPU[52]. L'optimisation des requêtes via des techniques comme Lero, basées sur l’apprentissage automatique, réduisent le temps d’exécution des requêtes jusqu'à 70 %[53]. Plateformes (OS)PostgreSQL est disponible pour les systèmes d'exploitation suivants : Linux (toutes les distributions récentes), ARM 64 bits et x86-64 avec des installateurs disponibles et testés pour macOS version 10.14 et plus récentes, Windows (avec des installateurs disponibles et testés pour Windows Server 2022 et 2016 64 bits), FreeBSD, OpenBSD, NetBSD, DragonFlyBSD, et d'autres sans exécutables binaires officiels (mais probablement disponibles de manière non officielle) tels que Solaris et illumos. PostgreSQL peut être exécuté sur les architectures suivantes (et systèmes d'exploitation) : x86-64 64 bits et x86 32 bits sur Windows et d'autres systèmes d'exploitation ; en plus de Windows, il est également compatible avec : ARM 64 bits[54] et l'ARM 32 bits plus ancien, y compris des versions plus anciennes comme l'ARMv6 sur Raspberry Pi[94], RISC-V, z/Architecture, S/390, PowerPC (y compris Power ISA 64 bits), SPARC (également 64 bits), MIPS et PA-RISC. Il a également été connu pour fonctionner sur d'autres plateformes, bien qu'il n'ait pas été testé depuis plusieurs années pour les versions récentes[55]. Outils d'administration
Interfaces et outils open source pour PostgreSQLpsqlpsql est une interface en ligne de commande pgAdminpgAdmin[57] est un outil d'administration d'interface graphique pour PostgreSQL distribué selon les termes de la licence PostgreSQL[58]. Disponible sur plusieurs plateformes, il prend en charge plus d'une douzaine de langues. La deuxième version pgAdmin II a été publiée en janvier 2002. Puis pgAdmin III a été publié en mai 2004, écrit en C++ avec le framework WxWidgets, cette version a permis une compatibilité accrue avec divers systèmes d’exploitation. En septembre 2016[59], pgAdmin 4 a été lancé avec une architecture basée sur le web, utilisant Python (Flask) pour le backend et Qt pour l’interface utilisateur. phpPgAdminphpPgAdmin est une interface web d’administration pour PostgreSQL. L'outil d'administration est écrit en PHP et supporte les différentes branches de PostgreSQL depuis sa version 7. L'interface s'appuie sur des scripts PHP et sur la base de données PostgreSQL pour favoriser les diverses tâches d'administration via le World Wide Web. PostgreSQL StudioPostgreSQL Studio permet aux utilisateurs d'effectuer les principales tâches de développement de bases de données PostgreSQL via une console web. Il facilite le travail avec des bases de données dans le cloud, sans nécessiter l'ouverture de pare-feu[60]. TeamPostgreSQLTeamPostgreSQL est une interface web basée sur AJAX/JavaScript pour PostgreSQL. Elle permet d'explorer, gérer et créer des objets de données et des bases de données directement depuis un navigateur web. L'interface comprend un éditeur SQL avec des onglets, l'autocomplétion, des widgets d'édition de lignes, une navigation interactive via les clés étrangères, ainsi qu'un système de favoris pour les scripts fréquemment utilisés. TeamPostgreSQL prend en charge SSH à la fois pour l'interface web et les connexions aux bases de données. Des installateurs sont disponibles pour Windows, Macintosh et Linux, ainsi qu'une archive multiplateforme exécutable via un simple script[61]. LibreOffice, OpenOffice.orgLibreOffice Base et OpenOffice.org Base peuvent être utilisés comme interfaces frontales pour PostgreSQL. pgBadgerpgBadger est un analyseur de journaux pour PostgreSQL, permettant de générer des rapports détaillés à partir des fichiers de logs de la base de données. pgDevOpspgDevOps est une suite d’outils web permettant d'installer et de gérer plusieurs versions de PostgreSQL, ainsi que ses extensions et composants communautaires. Elle offre aussi des fonctionnalités pour le développement de requêtes SQL, la surveillance des bases de données et l’identification des problèmes de performance[62]. AdminerAdminer est un outil d’administration web simple pour PostgreSQL et d’autres bases de données, écrit en PHP. pgBackRestpgBackRest est un outil de sauvegarde et de restauration pour PostgreSQL, offrant la prise en charge des sauvegardes complètes, différentielles et incrémentales[63]. pgauditpgaudit est une extension PostgreSQL permettant d’effectuer un audit détaillé des sessions et des objets via le système de journalisation standard de PostgreSQL[64]. WAL-EWAL-E est un outil de sauvegarde et de restauration basé sur le mécanisme de journaux de transactions (WAL) de PostgreSQL, écrit en Python[65]. DBeaverDBeaver est un outil d’administration GUI gratuit et open source pour PostgreSQL. Il propose des diagrammes entité-relation visuels et des fonctionnalités comme IntelliSense. Une version commerciale (PRO) est également disponible. Outils propriétairesPlusieurs entreprises proposent des outils propriétaires pour PostgreSQL, souvent construits autour d’un noyau universel adaptable à différentes bases de données. Ces outils partagent les fonctionnalités d’administration des logiciels open source, mais offrent des améliorations en matière de modélisation des données, importation, exportation et reporting. Outils connexes
Outils de conceptionWindows
Multiplateforme
Utilisateurs notablesDes organisations et produits notables qui utilisent PostgreSQL comme base de données principale incluent : A l'international
Les entreprises françaises
PilotesPour chacun des langages usuels, ou avancés, PostgreSQL dispose d'une interface le plus souvent proposée sous la forme d'un pilote du moteur de base de données. C'est ainsi le cas notamment pour PHP, Ruby, Java, Perl, Python, ou C et C++, mais aussi pour de très nombreux autres langages.
Notes et références
Voir aussiArticles connexes
Liens externes |