Vous êtes sur la page 1sur 16

18/05/2022

Introduction et Maintenance des bases de


données sur PostgreSQL

Tâches d'un administrateur de base de données


Approche prioritaire pour la conception, la mise en œuvre et la maintenance
d’une base de données PostgreSQL:

1. Évaluez le matériel du serveur de base de données.


2. Installez le logiciel de base de donnée.
3. Planifiez la base de données.
4. Créez et ouvrez la base de données.
5. Sauvegardez la base de données.
6. Inscrivez les utilisateurs du système.
7. Implémentez la conception de la base de données.
8. Récupération d'un échec de la base de données.
9. Surveillez les performances de la base de données.

Joris IKany 1
18/05/2022

Historique (1/3)
• 1985 : Michael Stonebraker recode Ingres
• post « ingres »=> postingres==>postgres
• postgres)PostgreSQL
• PostgreSQL a une origine universitaire.
• L’origine du nom PostgreSQL remonte au système de gestion de base de données
Ingres, développé à l’université de Berkeley par Michael Stonebraker.
• En 1985, il prend la décision de reprendre le développement à partir de zéro et
nomme ce nouveau logiciel Postgres, comme raccourci de post-Ingres.
• En 1995, avec l’ajout du support du langage SQL, Postgres fut renommé
Postgres95 puis PostgreSQL.
• Aujourd’hui, le nom officiel est « PostgreSQL » prononcé « post - gresse - Q - L ».
• Cependant, le nom « Postgres » reste accepté.

Historique (2/3)
• En 1996, Bruce Momijan et Marc Fournier convainquent l’Université de Berkeley
de libérer complètement le code source.
• Est alors fondé le PGDG (PostgreSQL Development Group), entité informelle —
encore aujourd’hui — regroupant l’ensemble des contributeurs.
• Le développement continue donc hors tutelle académique (et sans son
fondateur historique Michael Stonebraker) : PostgreSQL 6.0 est publié début
1997.

Joris IKany 2
18/05/2022

HISTORIQUE (3/3)

• 1996 : v1.0 -> première version publiée


• 2003 : v7.4 -> première version réellement stable
• 2005 : v8.0 -> arrivée sur Windows
• 2008 : v8.3 -> performances et fonctionnalités, organisation (commitfests)
• 2010 : v9.0 -> réplication physique
• 2016 : v9.6 -> parallélisation
• 2017 : v10 -> réplication logique, partitionnement déclaratif
• 2021 : v14 -> performances, fonctionnalités, administration…

VERSION 14
• Septembre 2021 - Septembre 2026
• Nouvelles vues système & améliorations
– pg_stat_progress_copy, pg_stat_wal, pg_lock.waitstart, query_id…
• Lecture asychrone des tables distantes
• Certains paramétrages par défaut adaptés aux machines plus récentes
• Types multirange
• Améliorations diverses :
– réplication physique
– réplication logique
– quelques facilités de syntaxe (triggers, tableaux en PL/pgSQL)
• Performances :
– connexions en lecture seule plus nombreuses
– index…

Joris IKany 3
18/05/2022

LES VERSIONS
• Versions obsolètes
– 9.6 et antérieures
• Versions actuelles pour production
– 10 à 14
• Version en cours de développement
– 15
• Versions dérivées
La dernière version majeure sortie est la version 14. Le développement de la version 15
est en cours depuis mai 2021.
Actuellement (en novembre 2021), les versions conseillées en production vont de la 10 à
la 14. La maintenance de la version 9.6 vient de s’arrêter.

VERSIONS DÉRIVÉES / FORKS


• Compatibilité Oracle :
– EnterpriseDB
• Data warehouse :
– Greenplum
– Netezza
– Amazon RedShift, Aurora
• Clustering
– PostgreSQL-XL
– PostgreSQL-XC
• Versions spécialisées :
– BDR (multi-maître, fermé)
• Packages avec des outils & support

Joris IKany 4
18/05/2022

Introduction
• PostgreSQL est actuellement l'une des meilleures bases de données au monde.
• En ce qui concerne les bases de données open source, il occupe la deuxième
place.
• Ainsi, parallèlement à sa popularité, la demande de professionnels PostgreSQL
formés augmente également.
• PostgreSQL est un système populaire de gestion de bases de données
relationnelles objet.
• Il s'agit d'une plate-forme open source utilisée pour créer des applications
avancées.
• La connaissance de Linux et UNIX peut être un avantage supplémentaire lors de
l'exécution de PostgreSQL

l’importance de pgAdmin4 dans le serveur


PostgreSQL
• Le pgAdmin4 est un outil d'administration de base de données utilisé par
PostgreSQL .
• Il sert à récupérer, développer, tester et maintenir la base de données.

Joris IKany 5
18/05/2022

Fonctionnalités de PostgreSQL

PostgreSQL offre un certain nombre de fonctionnalités utiles. Certains d'entre eux


sont les suivants :

• La protection de l'intégrité des données aide les utilisateurs à créer un environnement


tolérant aux pannes.
• Facilement compatible avec les plates-formes, middleware et langages importants.
• Il prend en charge le contrôle de la concurrence multi-versions, Multi-Version Concurrency
Control (MVCC) .
• Il prend en charge l'architecture réseau client-serveur.
• SSL de réplication basée sur les journaux et sur les déclencheurs.
• Serveur hautement disponible et de secours

PRINCIPES FONDAMENTAUX POSTGRESSQL

• Sécurité des données (ACID)


• Respect des normes (ISO SQL)
• Portabilité
• Fonctionnalités intéressant le plus grand nombre
• Performances
– si pas de péril pour les données
• Simplicité du code
• Documentation

Joris IKany 6
18/05/2022

Qu'est-ce que le PostgreSQL ?


• PostgreSQL est un système de gestion de base de données relationnelle
objet (ORDBMS).
• Il a été développé au Département d'informatique de l'Université de
Californie. Postgres a été le pionnier de nombreux concepts.
• PostgreSQL est un système de base de données relationnelle de classe
entreprise.
• Il est facile à configurer et à installer. Il offre un support pour SQL et NoSQL.
• Il a une grande communauté qui est heureuse de vous servir lorsque vous
rencontrez des problèmes lors de l'utilisation de PostgreSQL

Pourquoi utiliser PostgreSQL ? (1/2)


Les principales raisons d'utiliser PostgreSQL sont :

• Des fonctionnalités utiles telles que le partitionnement de table, la récupération


ponctuelle, le DDL transactionnel, etc.
• Possibilité d'utiliser des magasins de clés tiers dans une infrastructure PKI complète
• Les développeurs peuvent modifier le code open source car il est sous licence BSD
sans avoir besoin de contribuer aux améliorations
• Les éditeurs de logiciels indépendants peuvent le redistribuer sans craindre d'être
"infectés" par une licence open source
• Les utilisateurs et les rôles peuvent se voir attribuer des privilèges au niveau de
l'objet
• Prend en charge AES, 3DES et d'autres algorithmes de cryptage de données.

Joris IKany 7
18/05/2022

Pourquoi utiliser PostgreSQL ? (2/2)


• Une communauté active qui accélère son développement
• Alternative la plus courante à Oracle, DB2 et SQL Server
• Fonctionne sur toutes les principales plates-formes de système d'exploitation que vous
pourriez avoir
• MVCC prend en charge un grand nombre d'utilisateurs simultanés
• Indexation étendue pour un reporting performant
• Prise en charge des applications modernes (XML et JSON)
• Prise en charge ANSI SQL pour les compétences/codes transportables
• Prise en charge des clés étrangères pour un stockage efficace des données
• Jointures de table et vues pour une récupération de données flexible
• Déclencheurs/procédures stockées pour les programmes et transactions complexes
• Réplication pour la sauvegarde des données et l'évolutivité en lecture

Instalation de PosgreSQL

Il existe trois façons d’installer PostgreSQL :


• Les installeurs graphiques :
– avantages : installation facile, idéale pour les nouveaux venus ;
– inconvénients : pas d’intégration avec le système de paquets du système d’exploitation.
• les paquets du système :
– avantages : meilleure intégration avec les autres logiciels, idéal pour un serveur
en production ;
– inconvénients : aucun ?
• Le code source :
– avantages : configuration très fine, ajout de patchs, intéressant pour les utilisateurs
expérimentés et les testeurs ;
– inconvénients : nécessite un environnement de compilation, ainsi que de configurer
utilisateurs et script de démarrage.

Joris IKany 8
18/05/2022

LANGAGES
Procédures & fonctions en différents langages
• Par défaut : SQL, C et PL/pgSQL
• Extensions officielles : Perl, Python
• Mais aussi Java, Ruby, Javascript…
• Intérêts : fonctionnalités, performances

Les langages officiellement supportés par le projet sont :


• PL/pgSQL ;
• PL/Perl75 ;
• PL/Python76 (version 2 et 3) ;
• PL/Tcl.

CRÉATION DE L'UTILISATEUR
• Le serveur PostgreSQL ne peut pas être exécuté par l’utilisateur root. Pour des
raisons de sécurité, il est nécessaire de passer par un utilisateur sans droits
particuliers.
• Cet utilisateur sera le seul propriétaire des répertoires et fichiers gérés par le
serveur PostgreSQL.
• Il sera aussi le compte qui permettra de lancer PostgreSQL.

Joris IKany 9
18/05/2022

LANCEMENT ET ARRÊT
• Avec le script de l’OS (recommandé) ou pg_ctl :
# /etc/init.d/postgresql [action]
# service postgresql [action]
# systemctl [action] postgresql
...
$ pg_ctl --pgdata /usr/local/pgsql/data --log logfile [action]
--mode [smart|fast|immediate]
• [action] dépend du besoin :
– start / stop / restart
– reload pour recharger la configuration
– init
– status
– promote
– logrotate
– kill

INSTALLATION SOUS WINDOWS


• Un seul installeur graphique disponible, proposé par EnterpriseDB
• Ou archive des binaires

L’installateur n’existe plus qu’en version 64 bits depuis PostgreSQL 11.

Joris IKany 10
18/05/2022

Qu'est-ce que le vacuuming dans PostgreSQL


PostgreSQL?
• Vacuuming est la maintenance de la base de données PostgreSQL qui est
effectuée automatiquement par le cluster de base de données PostgreSQL selon
les besoins.
• Vacuuming effectue les tâches mentionnées ci-dessous.
– Met à jour la carte de visibilité
– Libérer l'espace occupé par les tuples morts.
– Libérez les identifiants de transaction pour éviter le bouclage des transactions.
– Mise à jour des statistiques de table/index.

Quelle est la différence entre vacuum et vacuum full?

Il y a principalement 2 différences.

– Le Vacuum full libère de l'espace libéré pour le système d'exploitation tandis


que le processus de vide conservera l'espace libéré avec l'objet, c'est-à-dire
que le Vacuum full réduira la taille de l'objet tandis que le processus de vide
normal ne réduira pas la taille de l'objet.

– Vacuum full verrouillera la table en mode exclusif tandis que le vide normal
avec la table verrouillée en mode partagé.

Joris IKany 11
18/05/2022

Quelles sont les nouvelles fonctionnalités importantes de


PostgreSQL 11.
– Partitionnement amélioré
– Partition par défaut dans la table partitionnée.
– Le partitionnement par hachage est une nouvelle évolution dans
PostgreSQL 11.
– Créer un index sur une table partitionnée.
– Ajout d'une nouvelle colonne avec la valeur par défaut
– Le paramétrage de la taille de WAL peut être défini lors de l'initialisation
du cluster.
– Créer un index en parallèle, c'est-à-dire utiliser des processus parallèles

Quel est le processus de division d'une grande table


en plus petits morceaux appelé dans PostgreSQL ?
1. Quel est le processus de division d'une grande table en plus petits morceaux appelé
dans PostgreSQL ?
C'est ce qu'on appelle le partitionnement de table.
2. Qu'est-ce qu'une table partitionnée dans PostgreSQL?
La table partitionnée est une structure logique. Il est utilisé pour diviser une grande
table en morceaux plus petits, appelés partitions.
3. À quoi sert pgAdmin dans le serveur PostgreSQL ??
Le pgAdmin dans PostgreSQL est un outil d'administration de données. Il sert à
récupérer, développer, tester et maintenir des bases de données.
4. Comment éviter le verrouillage inutile d'une base de données?
Nous pouvons utilizer Multi-version concurrency control (MVCC) pour éviter le
verrouillage inutile d'une base de données.
5. Qu'est-ce que PL/Python?
PL/Python est un langage procédural auquel PostgreSQL fournit un support.

Joris IKany 12
18/05/2022

QUELQUES PROJETS SATELLITES


PostgreSQL n’est que le moteur ! Besoin d’outils pour :
• Administration
• Sauvegarde
• Supervision
• Migration
• SIG

ADMINISTRATION, DÉVELOPPEMENT,
MODÉLISATION
Entre autres, dédiés ou pas :
• Administration :
– pgAdmin4, temBoard
– OmniDB
• Développement :
– DBeaver
• Modélisation :
– pgModeler

Joris IKany 13
18/05/2022

• pgAdmin4 est un outil d’administration dédié à PostgreSQL, qui permet aussi


de requêter. (La version 3 est considérée comme périmée.)
• temBoard est une console d’administration plus complète.
• DBeaver est un outil de requêtage courant, utilisable avec de nombreuses
bases de données différentes, et adapté à PostgreSQL.
• Pour la modélisation, pgModeler30 est dédié à PostgreSQL. Il permet la
modélisation, la rétro-ingénierie d’un schéma existant, la génération de scripts
de migration.

SAUVEGARDES
• Export logique :
– pg_backa
• Sauvegarde physique (PITR) :
– pgBackRestb , barmanc , pitreryd

Joris IKany 14
18/05/2022

SUPERVISION

• check_pgactivity est une sonde Nagios pouvant récupérer un grand nombre de


statistiques d’activités renseignées par PostgreSQL. Il faut de ce fait un serveur
Nagios (ou un de ses nombreux forks ou surcharges) pour gérer les alertes et
les graphes. Il existe aussi
• check_postgres.
• PoWA3 est composé d’une extension qui historise les statistiques récupérées
par l’extension pg_stat_statements et d’une application web qui permet de
récupérer les requêtes et leur statistiques facilement.

AUDIT

• pgBadger
• pgCluu
pgBadger est l’outil de base pour les analyses (à posteriori) des traces de
PostgreSQL, dont notamment les requêtes.
pgCluu permet une analyse du système et de PostgreSQL.

Joris IKany 15
18/05/2022

GESTION TRANSACTIONNELLE (1/2)


• Atomicité (Atomic)
• Cohérence (Consistency)
• Isolation
• Durabilité (Durability)

GESTION TRANSACTIONNELLE (2/2)

Les propriétés ACID sont le fondement même de tout système transactionnel. Il


s’agit de quatre règles fondamentales :

• A : Une transaction est entière : « tout ou rien » ;


• C : Une transaction amène le système d’un état stable à un autre ;
• I : Les transactions n’agissent pas les unes sur les autres ;
• D : Une transaction validée provoque des changements permanents.

Joris IKany 16

Vous aimerez peut-être aussi