Base de données
- Un cluster PSG peut hébrger plusieurs bases de données
- Une connexion est réalisée dans le contexte d'une seule base de données
Schéma
- Une base peut contenir de 1 à N schéma
- Un objet ne peut appartenir qu'à un seul schéma
- Les objets de schémas différents peuvent être accédés au sein d'une même connexion
Cluster PostgreSQL
- L'organisation du stockage physique est gérée au niveau du cluster
- Le point de montage par défaut est défini via la variable $PGDATA
Tablespace
- La notion de tablespace permetde répartir les données sur des points de montage distincts.
- Dans la majorité des cas, le tablespace par défaut 'pg_default' suffit
Fichier
- Les données des tables et index sont stockées dans des fichiers séparés (au moins 1 fichier par objet)
Les objets d'une base PostgreSQL
- Schéma de données (Table, Domaine, Type)
- Schéma externe (Vue, Règle)
- Traitements (Séquenceur, Déclencheur, fonction)
- Optimisation (Index, Partition, Vue Matérialisée)
- Sécurité (Utilisateur, Rôle, Politique)
Le catalogue Postgresql
- Le catalogue est un schéma de tables et de vues qui recense l'ensemble des objets d'une base et leurs métadonnées
- Organisation :
System Catalog => Tables et vues du catalogue spécifique Postgresql
(pg_class, pg_attribut, pg_constraint, pg_sequence, pg_views, pg_indexes)
Information schema => Vues du catalogue normalisé
(standard SQL : tables, columns, table_constraints, sequences, views)
Processus de modélisation
Trois niveaux d'abstraction
- Modèle Conceptuel
- Modèle Logique
- Modèle Physique
Modèle Relationnel
Les composantes de ce modèle :
Modèle de représentation des données
Departement(num_dpt,lib_dpt)
Relation : Comme Departement
Attribut : num_dpt, lib_dpt
Domaine : numdpt integer[0;9999] et lib_dpt varchar(40)
Contraintes d'intégrité
Règles appliquées aux relations et ou attributs pour garantir la coherence des données.
-
Domaine : Un attribut est associé à un type et puise ses valeurs dans un domaine
-
Clé primaire: Identifiant primaire d'une relation compos d'un ou de plusieurs attributs à valeur non nulle.
-
Clé unique : Identifiant secondaire d'une relation composé d'un ou de plusieurs attributs.
-
Clé étrangère : Contrainte de référence des attributs identifiants d'une relation par des attributs d'une autre relation.
-
De gestion : Autre contraintes de cohérence entre des attributs d'une même relation.
Formes normales
Règles appliquées au modèle de données pour éliminer les redondances de données en stockage et éviter les incohérences lors des mises à jour.
La relation R avec les attributs a,b,c,d où ab est l'identifiant et c et d les attributs R(a,b,c,d)
- 1FN : La valeur des attributs est atomique et la relation doit avoir un identifiant => R(a,b,c,d) et pas R(a,b,c1,c2,d)
- 2FN : 1FN + Un sous-ensemble des attributs de l'identifiant ne doit pas être lui-même identifiant d'autres attributs. => dans la relation R(a,b,c,d) il faut pas avoir b identifiant de c
- 3FN : 2FN + Un attribut qui ne compose pas l'identifiant ne doit pas être lui-même identifiant d'autres attributs => dans la relation R(a,b,c,d) il faut pas avoir c identifiant de d.
Opérateurs relationnels
L'algèbre relationnelle définit les opérations de base pour manipuler les relations, voici les principales opérations :
Projection, Produit Cartésien, Union, Restriction, Jointure, Différence...
Les bases de données relationnelles orientées objet
Très peu utilisé, en plus des propriétés des bases relationnelles, des exntesions sont ajoutées :
Type et collection orientés objet (tables), l'héritage entre tables, Type orionté document (XML, JSON)
Langage SQL et catégories d'ordres
- DQL : Select
- DML : Insert, Update, Delete
- DDL : Create, Alter, Drop
- DCL : Grant, Revoke
- TCL: Set Transaction, commit, rollback et savepoint
Langage Procédural
Avantages : Interprété, Intégration avec le langage SQL et Portabilité
Limites : Pas de norme commune, Adherence au SGBD (DB2:SQLPL, Oracle:PL/SQL, PG:PL/pgSQL)
Traitements stockés :
- Procédure : unité de traitement
- Fonction : unité de traitement
- Package : ensemble de procédure d'un domaine fonctionnel
- Déclencheur : unité de traitement basée sur une logique de déclenchement événementielle
Spécificité des traitements stockés dans Postgresql :
- Plusieurs langages peuvent être utilisés
- Une fonction est tout ou partie d'une transaction
- Seules les procédures peuvent invoquer les ordres de gestion des transactions
Mécanisme Transactionnel
Une transaction est un ensemble de mise à jour atomique (ACID). elle permet de garantir la cohérence des données par rapport aux éventuelles défaillances systèmes, applicatives et humaines.
Mécanisme de verrouillage
Le mécanisme de verrouillage permet de protéger les données contre des tentatives de modifications concurrentes.
Granularité : Enregistrement, Page et Objet
Multi-Version Concurrency Control
Son implémentation est propre à chaque SGBD
- MVCC gère plusieurs versions d'une donnée afin de garantir la logique transactionnelle tout en limitant au max les latences induites par les mécanismes de verrouillage.
- Il permet de rendre les opérations de lectures non bloquantes
MVCC PostgreSQL
- Création d'une nouvelle version de la ligne de données avec prise en compte des modifications
- La version précédente de l'enregistrement sert d'image avant pendant la durée de la transaction
- En cas de validation de la transaction, la version précédente est considérée comme 'morte' et son espace sera libéré à la prochaine opération 'VACUUM'.
MVCC DB2
DB2 est différent :
- Les lectures posent un verrou de lecture
- Les MAJ posent un verrou de mise à jour
- les verrous de lecture et de MAJ sont incompatibles entre eux
Si une donnée est vérouillée en MAJ, DB2 ne proposera pas son image avant aux lecteurs, qui devront attendre la levée du verrou.
Si la lecture se fait en 'Uncommitted Read' alors DB2 pourra restituer une donnée en cours de modification mais pas encore commitée... et qui ne le sera peut être jamais!