L'administrateur de bases de données, le technicien d'exploitation et le développeur trouveront dans ce livre les informations indispensables pour exploiter au mieux toutes les possibilités de PostgreSQL (en version 10 au moment de la rédaction).
Les premiers chapitres du livre couvrent l'installation de PostgreSQL sur Windows et GNU/Linux ainsi que la préparation de l'environnement d'exécution du serveur. L'auteur présente ensuite les...
L'administrateur de bases de données, le technicien d'exploitation et le développeur trouveront dans ce livre les informations indispensables pour exploiter au mieux toutes les possibilités de PostgreSQL (en version 10 au moment de la rédaction).
Les premiers chapitres du livre couvrent l'installation de PostgreSQL sur Windows et GNU/Linux ainsi que la préparation de l'environnement d'exécution du serveur. L'auteur présente ensuite les applications clientes pouvant être utilisées, les différents paramètres de sécurité et les différents aspects de PostgreSQL concernant le support du langage SQL. Les chapitres qui suivent introduisent la programmation dans PostgreSQL et détaillent l'administration et l'exploitation (de la configuration du serveur aux différentes tâches d'exploitation, en passant par les sauvegardes). Un chapitre présente des outils annexes enrichissant l'utilisation de PostgreSQL. Enfin, l'auteur introduit le thème de la réplication des données entre différents serveurs, en étudiant la réplication physique et logique intégrée à PostgreSQL ainsi que l'outil Slony.
Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.
Les chapitres du livre :
Avant-propos – Installation – Initialisation du système de fichiers – Connexions – Définition des données – Programmation – Exploitation – Outils – Réplication
3.1 Téléchargement de l’installateur EnterpriseDB pour MS-Windows
3.2 Installation
Initialisation du système de fichiers
1. Introduction
2. Initialisation d’une instance
2.1 Options de la commande
2.1.1 Options essentielles
2.1.2 Choix du jeu de caractères
2.1.3 Réglages des paramètres locaux
2.2 Exécution de la commande
2.3 Création d’instances supplémentaires
3. Arrêt et démarrage du serveur
4. Scripts Debian
4.1 Le script pg_lsclusters
4.2 Le script pg_ctlcluster
4.3 Le script pg_createcluster
4.4 Le script pg_dropcluster
4.5 Le script pg_upgradecluster
Connexions
1. Introduction
2. Sessions
3. Clients
3.1 Les options de connexions
3.1.1 Variables d’environnement
3.1.2 Chaîne de connexion
3.1.3 Fichier de service
3.1.4 Hôtes Mutiples
3.1.5 Fichier de mots de passe
3.2 Les outils Clients
3.2.1 L’outil psql
3.2.2 Utilisation en mode interactif
3.2.3 Utilisation en mode non interactif
3.2.4 Fichier de configuration
4. Droits d’accès
4.1 Gestion des rôles : utilisateurs et groupes
4.1.1 Définition d’un rôle comme compte d’utilisateur
4.1.2 Définition d’un rôle comme groupe
4.1.3 Appartenance à un groupe et héritage
4.1.4 Utilisation des privilèges d’un groupe
4.1.5 Modification d’un rôle
4.1.6 Variables de sessions
4.1.7 Suppression d’un rôle
4.1.8 Gestion de l’appartenance à un rôle
4.2 Gratification et révocation des droits
4.3 Définition des droits par défaut
4.4 Sécurité d’accès aux lignes de données
4.4.1 Activation
4.4.2 Création des règles d’accès
4.4.3 Exemple de création des règles d’accès
Définition des données
1. Introduction
2. Les espaces de tables
2.1 Modification d’un espace de tables
2.2 Suppression d’un espace de tables
3. Les bases de données
3.1 Modification d’une base de données
3.2 Suppression d’une base de données
4. Les schémas
4.1 Modification d’un schéma
4.2 Suppression d’un schéma
5. Les tables
5.1 Attributs
5.1.1 Définition d'un attribut
5.1.2 Contraintes
5.2 Contraintes de tables
5.3 Exemples
5.4 Modification d’une table
5.5 Suppression d’une table
5.6 Création d’une table depuis une requête
5.7 Partitionnement déclaratif
6. Les vues
6.1 Modification d'une vue
6.2 Suppression d'une vue
6.3 Vues matérialisées
6.3.1 Création d’une vue matérialisée
6.3.2 Mise à jour des données d'une vue matérialisée
7. Le système de règles
7.1 Suppression d’une règle
7.2 Exemple
8. L'héritage
9. Gestion de données externes
9.1 Wrappers
9.1.1 Liste de wrappers disponibles
9.1.2 Création d'un wrapper
9.1.3 Modification d'un wrapper
9.1.4 Suppression d'un wrapper
9.2 Serveurs
9.2.1 Création d'un serveur
9.2.2 Modification d'un serveur
9.2.3 Suppression d'un serveur
9.3 Utilisateurs
9.3.1 Création d'un utilisateur
9.3.2 Modification d'un utilisateur
9.3.3 Suppression d'un utilisateur
9.4 Tables étrangères
9.4.1 Création d'une table étrangère
9.4.2 Modification d'une table étrangère
9.4.3 Suppression d'une table étrangère
10. Les index
10.1 Création d'un index
10.2 Les différents types d'index
10.3 Modification d’un index
10.4 Suppression d’un index
10.5 Exemples d'index
10.6 Les statistiques
11. Séquences et attribut d’identité
11.1 Création d’une séquence
11.2 Modification d’une séquence
11.3 Suppression d’une séquence
12. Types de données
12.1 Type de données numériques
12.2 Type de données « caractères »
12.3 Type de données de dates et d’heures
12.4 Type de données « plages de valeurs »
12.5 Types de données divers
12.6 Tableau de données
13. Domaines
13.1 Création d'un domaine
13.2 Modification d'un domaine
13.3 Suppression d'un domaine
14. Recherche textuelle
15. Extensions
15.1 Création d'une extension
15.2 Modification d'une extension
15.3 Suppression d'une extension
15.4 Gestion du code
15.4.1 Le fichier control
15.4.2 Le script SQL
15.4.3 Installation de l'extension
16. Opérateurs et fonctions
16.1 Opérateurs
16.1.1 Opérateurs de comparaison
16.1.2 Opérateurs mathématiques
16.1.3 Opérateurs de sous-requêtes
16.1.4 Autres opérateurs
16.1.5 Expressions
16.2 Fonctions
16.2.1 Fonctions sur les nombres
16.2.2 Fonctions sur les chaînes de caractères
16.2.3 Fonctions sur les dates
16.2.4 Fonctions de manipulation des séquences
16.2.5 Fonctions d’agrégat
16.2.6 Fonctions fenêtrées
16.2.7 Fonctions de manipulation des tableaux
16.2.8 Fonctions de manipulation de données JSON
16.2.9 Fonctions de manipulation de données XML
17. Manipulation des données
17.1 Insertion de données
17.1.1 L’ordre INSERT ... INTO
17.1.2 Gestion des conflits
17.1.3 L’ordre COPY
17.2 Lecture de données
17.2.1 L’ordre SELECT
17.2.2 L’ordre COPY
17.3 Mise à jour des données
17.4 Suppression de données
17.4.1 L’ordre DELETE
17.4.2 L’ordre TRUNCATE
17.5 Les CTE et le mot-clé WITH
17.6 Les transactions
17.6.1 Niveaux d’isolation
17.6.2 Points de sauvegarde
17.6.3 Verrous d'interblocage
Programmation
1. Introduction
2. Procédures stockées
2.1 SQL
2.1.1 Volatilité
2.1.2 Coûts d'appel
2.2 PL/pgSQL
2.2.1 Structure d’une fonction
2.2.2 Exemple de fonction
3. Déclencheurs
3.1 Code PL/pgSQL
3.1.1 Exemple
3.1.2 Suppression de déclencheurs
3.1.3 Déclencheur sur événement
3.1.4 Création d’un déclencheur sur événement
3.2 Traitements asynchrones
4. Contrôle de fonctions
4.1 Profileur de fonctions
4.2 Intallation
4.3 Profilage de fonctions
4.4 Contrôle de fonction PL/pgSQL
4.4.1 Installation
4.4.2 Vérification
Exploitation
1. Exécution d’une instance
1.1 Définition des fichiers
1.2 Nom des fichiers
2. Administration du serveur
2.1 Configuration
2.1.1 Connexions
2.1.2 Mémoire
2.1.3 Collecteurs de statistiques
2.1.4 Options des outils de nettoyage
2.1.5 Logs d’activités
2.1.6 Fichiers d'écriture des transactions
2.1.7 Réplication
2.1.8 Performances des requêtes
2.1.9 Chargement des modules
2.1.10 Autres options
2.1.11 Gestion des modifications de la configuration
2.2 Catalogue système
2.3 Fonctions utiles à l’exploitation
3. Gestionnaire de connexions
3.1 Pgpool
3.1.1 Installation
3.1.2 Configuration
3.1.3 Utilisation de PgPool
3.1.4 Configuration et démarrage
3.2 pgBouncer
3.2.1 Installation
3.2.2 Configuration des connexions
3.2.3 Configuration de l'instance
3.2.4 Démarrage
3.2.5 Administration
4. Sauvegardes et restauration
4.1 Sauvegardes logiques avec pg_dump et pg_dumpall
4.1.1 pg_dump
4.1.2 pg_dumpall
4.1.3 Choix de l’outil
4.2 Restauration logique avec pg_restore et psql
4.2.1 pg_restore
4.2.2 psql
4.2.3 Exemples
4.3 Sauvegardes physiques
4.3.1 Sauvegarde à froid
4.3.2 Sauvegarde au fil de l’eau
4.3.3 Restauration d’une sauvegarde au fil de l’eau
4.3.4 L’outil pgBackRest
4.3.5 L’outil pgBarMan
5. Exploitation et tâches de maintenance
5.1 Analyse d’une requête avec EXPLAIN
5.2 Collecte des statistiques avec ANALYZE
5.3 Nettoyage des tables avec VACUUM
5.4 Automatisation avec AUTOVACUUM
5.5 Maintenance des index avec REINDEX
5.6 Organisation des tables avec CLUSTER
6. Test de l’installation avec pgbench
7. Exploitation des traces d’activités avec pgBadger
7.1 Installation
7.2 Analyse des fichiers de traces
Outils
1. Introduction
2. L’outil graphique : pgAdmin III
3. L’outil Dbeaver
4. L’outil SQLTabs
5. L’outil PGWatch2
Réplication
1. Réplication en flux
1.1 Initialisation
1.2 Configuration
1.2.1 Connexion au serveur « standby »
1.2.2 Créneau de réplication
1.2.3 Démarrage
1.3 Administration
2. Réplication en cascade
3. Changement de topologie
4. Réplication synchrone
5. Réplication logique intégrée
6. Réplication logique avec Slony
6.1 Installation de Slony
6.2 Configuration du groupe de serveurs
6.3 Initialisation
6.4 Démarrage du programme slon
6.5 Création du jeu de tables
6.6 Modification du schéma
7. Évolution des solutions de réplication
Index
Sébastien LARDIÈRE
Après avoir été développeur web, formateur et consultant indépendant, puis administrateur de base de données PostgreSQL, Sébastien LARDIERE est aujourd'hui consultant PostgreSQL au sein de Loxodata, société de conseil et d'expertise PostgreSQL. Il fait preuve quotidiennement de toute son expertise reconnue dans ce domaine.