Académique Documents
Professionnel Documents
Culture Documents
CNAM
Bases De Données B6
Chapitre 2
INTRODUCTION A LA MODELISATION
CONCEPTUELLE DES DONNEES
Le modèle E-R de base /
le modèle E-R Etendu (EER)
2-1 Rappel : DONNEES ET TRAITEMENTS DANS UN
SYSTEME D’INFORMATION
des entités,
de relations ou associations
des propriétés / attributs - valeurs
des contraintes.
synonymes: Individu
PRODUIT ANNEE DATE LIVRAISON
BUDGETAIRE
PASSE
0,N 1,1
pattes
cardinalités
Une relation est composée de pattes.
Chaque patte est associée à un individu et permet d'indiquer
le rôle joué par celui-ci dans la relation
RELATION : Particularités
Occurrence:
élément d'un individu ou d'une relation
synonymes: ligne, tuple, enregistrement
LEFEVRE COMMANDE #4
MARTIN/#4
MARTIN COMMANDE #3
MARTIN/#3 COMMANDE #2
DURAND
DUPOND DUPOND/#2 COMMANDE #1
CLIENT DUPOND/#1 COMMANDE
PASSE
0,N 1,1
ARBORESCENCE:
PERE
toute Personne
MEMBRE est Enfant MARIAGE TERNAIRE:
DEV1/DEV2 0,N
EST PERE DE de 0 (=Adam 1 Homme (ou 1 Femme)
& Eve) peut n'avoir conclu
ou 1 seul Père, aucun Mariage, ou
ENFANT
et peut lui-même plusieurs.
0,1 être Père d'aucun Mais 1 Mariage est
ou plusieurs 1,1 toujours conclu entre 1
Enfants Homme et 1 Femme.
CONCLUENT
RESEAU:
PLUS toute Personne
AGE 0,N 0,N
MEMBRE peut n'avoir
DEV1/DEV2 0,N
aucun
EST AMI DE HOMME FEMME
ou plusieurs
PLUS Amis
JEUNE plus âgés
0,N ou plus jeunes,
et inversement.
cardinalités de relations réflexives et n-aires
RELATION
(stabilité de la cardinalité)
COMPREND
Attention aux propriétés polysèmes et synonymes: - Réf Produit 0,N - Quantité
- Désignation - Prix
Polysèmes: des propriétés possédant le même nom peuvent désigner des notions différentes
(ex: Date,...)
Synonymes: des propriétés possédant des noms différents peuvent désigner une notion
identique
TYPES DE PROPRIETE
Propriété naturelle
Nom d’un employé
Propriété composée:
Numéro INSEE: sexe+année+mois+département+ commune+chrono
Adresse : No-rue, rue, code postal, ville, ...
On peut opter pour deux modélisations différentes:
Considérer cette propriété «construite» comme une propriété normale ayant
une signification intrinsèque et globale.
Considérer cette propriété comme une concaténation des propriétés et chaque
composant possède une signification propre.
Propriété artificielle
Propriétés inventés par le concepteur pour identifier une entité (No.
séquentiel, codes, etc. en sont l’illustration).
CLE
(d'individu ou de relation)
0,N
la clé d'une relation est - Catégorie 0,N
constituée à partir des clés - Pays
- N° Fournisseur
PRODUIT
- N° Commande
des individus participant à
la relation +
- Réf Produit - Réf Produit
+
- Réf Produit
- Désignation
CARACTERISTIQUES D’UNE CLE
Univaluée :
à une occurrence correspond une seule valeur pour une clé donnée
Discriminante :
à une valeur correspond une seule occurrence de l’entité;
Stable :
Pour une occurrence donnée d’entité, une fois affectée une valeur à son
identifiant, cette valeur doit être conservée jusqu’à la destruction de
l’occurrence.
Minimale :
S’agissant d’un identifiant composé, la suppression d’un de ces
composants lui ferait perdre son caractère discriminant.
CLE CANDIDATE
Classification
Regrouper dans une classe les objets du monde réel
caractérisés par des propriétés communes
Agrégation
Définir une classe à partir d ’autres classes composantes
Généralisation
Définit une relation d ’inclusion entre deux classes (n ’est pas
utilisé dans les modèles classiques E-R de base)
Sous types
VEHICULE
Un SOUS-TYPE correspond à la
spécialisation d’un INDIVIDU
VOIITURE MOTO
PAIRE 0,1
0,1
TRAIN AVANT
VOLANT SIDE-CAR
TRAIN AVANT
0,1 0,1
0,1
ROUE
SOUS-TYPE de RELATION
0,N
1,N
COMMANDE CLIENT
1,N 0,N
COMMANDE
NON FERME
CONTRAINTE INTER RELATIONS
(Définition)
Employé Fonction
1,1 a pour fonction 0,n
0,n
0,n
0,n
E
étape prévue à étape réelle à
0,n
1,1
1,1 1,1
0,n
1,1 1,1
1,1 0,n
Catalogue Vol Prévu Vol Réel
est décrit par est basé sur
0,n 1,1 0,n 0,n
1,n 1,1
est planifié pour se déroule le
Vol Catalogue
0,n 0,n
Date
0,n
I
Jour Hebdomadaire peut utiliser utilise effectivement
0,n Avion
0,n
1,1 0,n
0,n 1,1
Type Avion Révision
DEMARCHE DE CONSTITUTION
D’UN MCD (1/3)
Deux procédés:
Ratisser, au gré des entretiens, les informations
présentes sur quelques documents papiers
(imprimés) ou dans des fichiers.
Exprimer les messages associés aux événements
et résultats, et spécifiés dans le MCT.
Dans ce cas, confronté à des événements/résultats traduisant un flux
physique ou monétaire (bon de commande, facture, règlement, ...), le
concepteur doit le traduire en terme d’informations (d’où un choix de
représentation).
CONSTITUTION D’UNE LISTE D’INFORMATIONS (2/2)
Concepts structuraux
Le modèle relationnel s’appuie sur trois concepts structuraux de base: le
domaine, la relation (ou table) et l’attribut.
Le domaine est un ensemble de valeurs caractérisé par un nom.
Exemples: le domaine des entiers E= {0,+/- 1, +/-2, ...}; le domaine
des booléens D1= {0,1}; le domaines des couleurs possibles D2=
{vert, bleu,blanc,rouge}; le domaine des caractères...
La relation, concept central du modèle, peut être définie
grossièrement comme un tableau de données à deux dimensions.
Les colonnes de ce tableau sont appelées attributs. Les lignes de
ce tableau, occurrence de la relation, seront appelées tuples ou n-
uplets
Chaque attribut peut prendre des valeurs dans un domaine.
Les concepts de base
(suite)
Contraintes d’intégrité :
Est un prédicat que doit vérifier un sous ensemble de la base afin que l’on puisse
considérer les informations comme cohérentes. Le rôle des contraintes
d’intégrité est d’assurer la cohérence des données.
On peut isoler plusieurs types de contraintes d’intégrité :
Contrainte de domaine : Concerne le contrôle syntaxique et sémantique d’une
donnée, et fait référence au type de définition du domaine.
Contrainte déclarative : Contrainte imposée sur des attributs (valeur nulle, valeur
par défaut, clé primaire, liste de valeurs,.)
Contrainte référentielle : Impose que le valeur d’un attribut dans une relation
apparaisse comme valeur de clé dans une autre relation (Clé étrangère --> Clé
primaire).
Contrainte d’entité : Contrainte d’intégrité imposant que toute relation possède
une clé primaire et que tout attribut participant à cette clé primaire soit non
nul.
3-3 Le modèle relationnel
Les concepts additionnels
Vue (View) : Une vue est une table virtuelle (c ’est-à-dire non stockée telle
qu ’elle) regroupant les données dont un utilisateur a besoin.
Une vue est donc virtuelle, elle n’a donc pas d’existence physique, au moins
lorsqu’elle n’est pas accédée.
Elle peut être obtenue à partir soit par sélection des attributs d ’une ou des
plusieurs tables (jointure)
Elle peut être interrogée comme une table normale de la base.
Les concepts additionnels
(suite)
Formalisme
La table, ses attributs et sa clé primaire
EMPLOYES
Employé Fonction
1,1 a pour fonction 0,n
Non Navigant
R1(...........)
Navigant
0,n
est Steward ou Hôtesse du vol
E
.
étape prévue à étape réelle à
1,1
1,1
0,n
0,n
1,1
1,1
0,n
1,1
1,1
.
Catalogue Vol Prévu Vol Réel
est décrit par est basé sur
0,n 1,1 0,n 0,n
1,n 1,1
est planifié pour se déroule le
.
Vol Catalogue
0,n 0,n
Date
0,n
Rm(...........)
I
Rn(...........)
Jour Hebdomadaire peut utiliser utilise effectivement
0,n Avion
0,n
1,1 0,n
0,n 1,1
Type Avion Révision
Du modèle E-R au modèle Relationnel
Règles de construction
PERSONNE MAISON
(0,n) ou (1,1)
Id-A POSSEDER Id-B
(1,n)
Formalisme Entité-Relation
PERSONNE MAISON
Id-A Id-B
POSSEDER
Id-A
Solution 2:
PERSONNE VOITURE
POSSEDER Id-B
Id-A
Id-A
Règles de construction
(suite)
EDIFICE MAISON
(0,1) (1,1)
Id-A Est-un Id-B
Formalisme Entité-Relation
EDIFICE MAISON
Id-A Id-B
Est-un
Id-A
ENTREPRISE TIERS
(0,1) (0,1)
Id-A CORRESPONDRE Id-B
Formalisme Entité-Relation
Solution 1
ENTREPRISE TIERS
Id-A Id-B
CORRESPONDRE
Id-A
Solution 2
ENTREPRISE TIERS
Id-A Id-B
CORRESPONDRE
Id-B
Solution 3
CORRESPONDANCE
ENTREPRISE TIERS
Id-A Id-A Id-B
Id-B
COMMANDE ARTICLE
(*,n) PORTER (*,n)
Id-A Qté-cdée Id-B
Formalisme Entité-Relation
PORTER
COMMANDE Id-A ARTICLE
Id-A Id-B
Id-B
Qté-cdée
(*,n) Précède
Formalisme Entité-Relation
(*,n) Ensemble
Formalisme Entité-Relation
TRAVAUX DECOMPOSER
Ensemble
Id-A Id-A
..... Id-A-Ensemble
Elément
GENERALISATION
Rappel: les sous types ont leurs propres identifiants
Formalisme Entité-Relation
TIERS
Id-A Formalisme graphique relationnel
x TIERS
Client Fournisseur Id-A
Id-B Id-C X
Y Z Fournisseur
Client
Id-B
Id-B
Y
Y
Id_A
Id_A
x
x
Règles de construction
(suite)
Identifiant relatif
Rappel: Certaines entités ont une existence totalement
dépendante d’autres entités
exemple: Formalisme Entité-Relation
Projet Tranche
No. projet 1,N Comporter 1,1
No.ordre
X Y
Historisation
Historisation de propriété
Propriété portant le caractère historisable (H) au niveau du
non de la propriété concernée
Historisation d’entité
Entité portant le caractère historisable (H) au niveau du
nom de l’entité concernée
Historisation de relation
Relation portant le caractère historisable (H) au niveau du
nom de la relation concernée
Règles de construction
Cas particulier : Historisation
Historisation de propriété
PERSONNE PERSONNE H-adresse-personne
No-personne No-personne No-personne
nom nom Date-Histo
adresse (H) adresse adres-antérieure
Historisation d’entité
Historisation de relation
Personne Logement
Personne No.personne Adresse
No.personne nom surface
nom adresse nb-pièces
adresse
0,N Louer
Adresse
Louer (H) No.personne
Loyer-mensuel
Loyer-mensuel
0,N Histo-Louer
Logement
Adresse Adresse
surface No.personne
nb-pièces Date-histo
Loyer-mensuel
Règles de construction
Cas particulier : contraintes inter associations
1 Donnée N programmes
Erronée impactés
Chapitre 6
La structure logique d’une base de données ORACLE est composée des tablespaces,
des segments, des extensions, des blocs et des objets de schéma.
Les tablespaces, les segments et les extensions permettent de définir la façon dont la
base de données (avec ses objets de schéma) est organisée physiquement. Ils
permettent donc d’effectuer le lien entre le niveau physique et le niveau logique de la
base de données.
Notion de tablespace : Une base de données est composée d’un ensemble d’unités
logiques appelées tablespaces.
Un tablespace est utilisé pour regrouper un ensemble d’objets logiques. Chaque objet
logique doit être associé à un et à un seul tablespace.
On peut utiliser cette notion de tablespace pour regrouper, par exemple, des objets
logiques d’une application (tables, index, séquences, procédures, etc.) de façon
que des opérations telles la sauvegarde et la restauration de données soient
effectuées d’une façon efficace.
Une base de données doit avoir au moins un tablespace appelé SYSTEM qui contient le
dictionnaire de données. Il est fortement conseillé de définir au moins un deuxième
tablespace pour stocker les objets de la base.
Structure logique
(suite)
Extension 1 Extension2
BLOC
Un bloc de données est la plus petite unité logique d’entrée/sortie utilisée par
Oracle. il est également appelé bloc logique ou page. Cette notion de bloc
de données est différente de celle de bloc physique utilisé par les systèmes
d’exploitation.
La taille d’un bloc de données est variable selon les systèmes d’exploitation.
Elle peut varier généralement de 2 à 4 Ko. La modification de la taille par
défaut des blocs logiques se fait à travers le paramètre DB_BLOCK_SIZE
dans le fichier d’initialisation (INIT.ORA).
Les blocs de données sont organisés de la même façon, quel que soit leur
contenu : données, Index ou Cluster.
Structure logique
Extension
L’extension est une unité logique d’allocation d’espace composée d’un ensemble
contigu de blocs allouées simultanément à un segment. Tout segment est
initialement créé avec au moins une extension. Cette extension est appelée
extension initiale . Lorsque l’espace d’un segment est complètement utilisé, Oracle
lui attribue une nouvelle extension (extension supplémentaire).
Paramètres relatifs à l’utilisation des extensions : Ces paramètres sont définis à
l’aide de clause STORAGE.
STORAGE (INITIAL n1 EXTENT n2 MINEXTENT m1 MAXEXTENT m2
PCTINCREASE p)
avec
n1 : Taille en octet de la première extension allouée lorsqu’un segment est créé.
n2 : Taille en octets de la deuxième extension allouée au segment.
m1 : Nombre d’extensions allouées à la création du segment.
m2 : Nombre total d’extensions pouvant être allouées à un segment.
p : Pourcentage d’accroissement de la taille du segment i+1 par rapport à celle du
segment i (i>2).
Structure logique
Extension
Exemple :
STORAGE (INITIAL 100K NEXT 100K MINEXTENT 1 MAXEXTENT 5 PCTINCREASE 50)
La taille des différentes extensions est la suivante :
1ère extension : 100 K
2ème extension : 100 K
3ème extension : arrondi (100*1,5) = 150 K
4ème extension arrondi (150*1,5) = 225 K
5ème extension arrondi (225*1,5) = 337 K
Remarque : La clause STORAGE peut être utilisée dans des différentes commandes de création ou
de modification d’objets Oracle (tables, index, etc.). Si cette clause est définie à différents
niveaux, l’ordre de priorité est le suivant :
Tout paramètre défini au niveau d’un objet Oracle remplace celui défini au niveau du tablespace.
A tout paramètre non défini au niveau d’un objet Oracle est appliquée par défaut la valeur définie au niveau
tablespace.
En cas d’absence de définition de paramètres au niveau du tablespace, Oracle applique des valeurs par
défaut.
Si des paramètres sont modifiés, les nouvelles valeurs s’appliquent uniquement aux extensions non encore
allouées.
Structure logique
Segment
SEGMENTS D’INDEX
Les segments d’index servent à stocker les données d’index séparément des données. Chaque index est
contenu dans un segment distinct. Ce segment est créé automatiquement lors de la création d’index.
Lors de la création d’index, on peut préciser le tablespace dans lequel sera créé le segment d’index. Ce
tablespace peut être différent (fortement recommandé) de celui du segment de données de la table
associée
SEGMENTS TEMPORAIRES
Les segments temporaires sont utilisés pour effectuer le traitement des commandes SQL nécessitant un
espace disque temporaire (ORDER BY, GROUP BY, SELECT DISTINCT, UNION, MINUS,...).
Si aucun tablespace temporaire n’a été défini, c’est le tablespace SYSTEM qui est utilisé par défaut (Très
mauvais).
SEGMENTS D’AMORCAGE (BOOTSTRAP)
Le segment d’amorçage est créé dans le tablespace SYSTEM au moment de la création d’une base de
données. Il contient les définitions du dictionnaire de données qui sont chargées au moment de
l’ouverture de la base de données.
SEGMENTS D’ANNULATION (ROLLBACK)
Les segments d’annulation (rollback segment) permettent d’enregistrer les actions effectuées par les
transactions. Ils contiennent les données avant modification par les transactions, permettant ainsi
d’annuler leur effet en cas de besoin.
6-4 Structure Physique
Types de fichiers :
Fichiers de données (Data files)
Fichiers de reprise (Redo Log Files)
Fichiers de contrôle (Control files)
Structure Physique
(suite)
Fichiers de données
Lors de la création de tablespace le ou les fichiers de
données seront spécifiés :
CREATE TABLESPACE ts_logistique
DATAFILE ‘/usr1/base/fichier1.dbf’ SIZE 1 M
‘/usr2/base/fichier2.dbf’ SIZE 1 M
DEFAULT STORAGE (INITIAL 100K NEXT 100K MINEXTENT
1 MAXEXTENT 5 PCTINCREASE 50)
Ces fichiers assurent le stockage des objets créés par les utilisateurs
(tables, clusters, index,...) ainsi que ceux nécessaires au
fonctionnement d’Oracle. Lors de création d’une base de données, il
doit y avoir au moins un fichier pour stocker le dictionnaire de données.
Structure Physique
(suite)
Fichiers de reprise
Les fichiers de reprise (Redo log) contiennent les modifications des
données les plus récentes. Ils sont au moins deux et sont utilisés d’une
façon circulaire. S’ils sont deux, par exemple, Oracle enregistre les
modifications dans le premier fichier et, lorsqu’il est plein, il passe au
second. Lorsque les deux fichiers sont pleins, il revient au premier, et
ainsi de suite.
Oracle offre la possibilité d’archiver un fichier de reprise plein avant sa
réutilisation (Archived redo log).
De même, Oracle offre la possibilité de dupliquer le fichier de reprise pour
que les informations de reprise soient écrites simultanément sur
plusieurs fichiers. Le risque de perte de ces informations est ainsi réduit.
Structure Physique
(suite)
Fichiers de contrôle
Tablespa ces SY S TE M U SE R S
Fichiers D B S1 .O R A U SE R S1 .O RA U SER S2 .O R A
Segments Do nné es In dex Ro llba ck B oo ts tra p T em por aire D onn ées I ndex
Extensions
Blocs logiques
Blocs physiques
6-6 Architecture fonctionnelle d ’un SGBDR
Introduction
Tables Vues
A na ly se
Index Cluster
C o rre s po n da n c e
P ro céd u re s
G e stio nn a ire d e d o nn é e s
SGB DR
BD
Architecture fonctionnelle d ’un SGBDR
Introduction (suite)
De façon générale, le SGBDR a pour fonction principale de stocker des données dans
la base de données et de les restituer à la demande.
Le stockage des données a été abordé dans les précédents paragraphes.
Pour restituer des données,
il est essentiel que le SGBDR soit tout d’abord capable de comprendre ce que
l’utilisateur demande. Cette étape est une étape de vérification syntaxique de la
requête, en adéquation avec le langage SQL.
puis, il doit s’assurer que ces données soient disponibles à l’utilisateur, ce qui représente
une étape sémantique.
Il doit ensuite rechercher où se trouvent les données et comment il devra les retrouver
en analysant les différents chemins d’accès aux données.
Ces fonctions sont donc réparties dans le SGBDR sous la forme de deux grands modules
fonctionnels communiquant entre eux :
un analyseur de requête, dont le rôle est d’assurer la vérification syntaxique,
sémantique de la requête et de connaître où se trouvent les données impliquées dans
la requête.
un gestionnaire de données, chargé d’exécuter proprement dit la requête.
Architecture fonctionnelle d ’un SGBDR
Introduction (suite)
Cette dernière étape doit fournir le meilleur moyen pour retrouver l’adresse
des blocs physique qui contiennent les données impliquées dans la
requête. Ce travail est effectué par un optimiseur de requêtes.
6-7 Les optimiseurs de requêtes
Rôles
Systèmes compilés :
Certains optimiseurs compilent les plans d’exécution des requêtes afin de pouvoir les réutiliser par
la suite et éviter ainsi de recommencer le travail d’optimisation. Dans ce cas, au moment de la
nouvelle exécution d’une requête dont le plan a déjà été compilé puis sauvegardé, l’optimiseur
vérifie si le plan est toujours valide et, dans ce cas, le plan est exécuté à nouveau. Cette
approche est valable pour les requêtes définies dans des procédures stockées ou cataloguées.
Systèmes interprétés :
A l’inverse, les systèmes interprétés effectuent une optimisation à chaque exécution de la requête.
De façon générale, l’interprétation s’avère intéressante dans le cas où :
les requêtes SQL sont ad-hoc, c’est-à-dire non prévues à l’avance ou lorsque les
applications contiennent des ordres SQL dynamiques, c’est-à-dire dans lesquelles les
paramètres de la requêtes sont à saisir par l’utilisateur au moment de l’exécution de la requête.
En effet, il y a alors peu de chance pour que le même plan puisse être exécuté à nouveau, la
requête manipulant généralement des volumes de données différents à chaque fois;
le schéma ou le contenu de la base change fréquemment; dans ce cas, les plans
d’exécution des requêtes seront souvent rendus caducs et la perte de temps lors de la
compilation ne s’avère donc pas justifiée.
Les optimiseurs de requêtes
Stratégie d’exécution des plans “d’exécution”
Systèmes mixtes :
Certains optimiseurs interprétés sauvegardent quand même des résultats pour les utiliser
ultérieurement (systèmes mixtes). L’optimiseur conserve alors en mémoire centrale les
plans qu’il a exécutés récemment et essaie, lorsqu’une nouvelle requête arrive, de trouver
un plan équivalent. Si cette recherche échoue, du fait d’une requête plus complexe, il
essaie alors de trouver des morceaux de plans qui pourraient être repris pour composer le
plan final de la requête.
Les optimiseurs de requêtes
Modes d’évaluation du coût d’une requête
Limites de l’optimiseur
Tout optimiseur a des limites qu’il est bon de pouvoir cerner : limites en
nombre maximal de tables manipulées, de jointures, de sous-requêtes
imbriquées.
Une transaction est la plus petite unité logique de traitements regroupant un ensemble d’opérations
élémentaires (commandes SQL). Ces opérations doivent être exécutées entièrement, soit pas du tout,
permettant ainsi à la base de données de passer d’un état cohérent à un nouvel état cohérent.
Exemple : Transfert bancaire d’un compte à un autre
La transaction est validée lorsque toutes ses opérations ont été prises en
compte. Cette validation a lieu lorsque la transaction est terminée (état
connu par le système grâce au mot clé END TRANSACTION) ou lorsque le
programme contient l’ordre de validation COMMIT.
Si au contraire, une panne se produit, ou si la transaction n’arrive pas jusqu’à
la fin, la transaction est avortée (ABORT) déclenchant ainsi un retour
arrière dynamique (ROLLBACK).
Ce retour arrière a pour effet de “ défaire ” toutes les opérations effectuées par
la transaction jusqu’au dernier COMMIT de celle-ci (s’il existe) ou sinon
jusqu’au début de la transaction.
Le gestionnaire des transactions un identifiant unique pour chacune des
transaction permettant de les repérer et attache ensuite cet identifiant à
toutes les opérations contenues dans celle-ci.
6-9 Gestion des accès concurrents
L’une des fonctions du noyau d’un SGBDR est d’assurer la gestion des accès concurrents
dans les environnements multi-utilisateurs. Selon la norme ANSI/ISO du langage SQL, la
gestion des accès concurrents consiste à assurer la sérialisation des transactions
multiples accédant simultanément aux mêmes données. Cette sérialisation consiste à
s’assurer que l’exécution simultanée d’un ensemble de transactions accédant aux
mêmes données fournit le même résultat que leur exécution en série.
La gestion des accès concurrents est basée sur les concepts d’intégrité, de
concurrence et de consistance de données. Elle utilise essentiellement la technique de
verrouillage de données.
Intégrité des données :
L’intégrité des données est assurée en respectant les différentes contraintes d’intégrité définies lors
de la création de la base de données. En particulier, cette intégrité doit être assurée suite à une
mise à jour de mêmes données par différents utilisateurs. La base de données doit passer d’un
état cohérent avant les mises à jour à un autre état cohérent après les mises à jour.
Concurrence des données :
La concurrence des données consiste à assurer une coordination des accès concurrents de
plusieurs utilisateurs aux mêmes données. Plus le nombre d’utilisateurs pouvant accéder
simultanément aux mêmes données, plus le degré de concurrence devient important.
Gestion des accès concurrents
(suite)
Pour que l’exécution simultanée de plusieurs transactions donne le même résultat qu’une exécution
séquentielle, la solution utilisée consiste à verrouiller momentanément les données utilisées par une
transaction jusqu’à la fin de la mise à jour. Les autres transactions demandant ces données sont mises en
attente jusqu’à leur libération (déverrouillage). Cette technique de verrouillage permet d’éviter les
interactions destructives des transactions, c’est-à-dire les opérations n’assurant pas l’intégrité des données.
Le cas typique destructive est la perte de mise à jour
La figure suivante donne un exemple de perte de mise à jour.
Transaction 1 Temps Transaction 2
Lecture A (A=50) t0
Calcul A = A + 10 t1 Lecture A (A=50)
Ecriture A (A=60) t2 Calcul A = A+20
t3 Ecriture A (A=70)
Validation T1 t4
t5 Validation T2
L’absence de verrouillage de données a pour conséquence la perte de la mise à jour faite par la
transaction T1. Au lieu que D1 ait comme résultat final la valeur 80 (50+10+20), elle n’a que 70, car la mise à
jour effectuée par T1 n’a pas été prise en compte.
Le verrouillage s’applique d’une façon générale à une ressource. Une ressource peut correspondre aux
objets créés par les utilisateurs tels que les tables (ou uniquement quelques lignes d’une table), ainsi qu’aux
objets système tels que les éléments du dictionnaire et la mémoire.
Verrouillage des données
Granule de verrouillage
Compatibilité (O/N)
avec les autres modes
de verrouillage
Mode de verrouillage Commandes SQL RS R S SR X
correspondantes X X
RS : Lignes partagées - Select ...from ... for update
- Lock table ... in row share O O O O N
mode
- Insert into ...
- Update ...
- Delete from ...
RX : Lignes exclusives O O N N N
- Lock table ... in row exclusive
mode
S : Table partagée - Lock table ... in share mode O N O N N
SRX : Partage exclusif - Lock table ... in share O N N N N
de lignes exclusive mode
X : Table exclusive Lock table ... in exclusive mode N N N N N
6-11 Gestion de reprise après incident
Journal des transactions
Deux approches sont envisagées dans le SGBDR commercialisés pour conserver cet
historique :
Journal des transactions physique
Journal des transactions logique
Journal des transactions physiques
En partant du principe qu’une opération d’écriture sur une donnée lit un bloc de données, le
modifie et l’écrit, le journal des transactions prend une “ photographie ” du bloc avant la
modification et une photographie du bloc après la modification. Ces “photographies” sont
appelées des Images Avant (Before Image) et les Images Après (ou After Image). Un tel
journal des transactions est dit physique.
Raisons économiques :
Coût élevé d’acquisition et de maintenance des ordinateurs “main frame”
Raisons techniques :
Les développements remarquables de domaines :
Réseaux de communication
Mini et micro-ordinateurs
Bases de données relationnelles
Le développement croissant des applications
Multimédias (Données alphanumérique, Texte, Image, Son)
Infocentre (Orienté Utilisateur)
L’offre remarquable des Outils de développement sur PC.
L’exigence des entreprises d’avoir un système évolutif / progressif pour supporter les besoins
de logiciels.
Raisons organisationnelles :
Décentralisation des activités
Délégation du pouvoir
8-2 Définition
Définition :
Une Base de données répartie est un ensemble de bases
de données coopérants, chacune résidant sur un site
différent, vu et manipulé par l’utilisateur comme une seule
base de données centralisée.
===> Transparence à la localisation des données .
8-3 Typologies de systèmes d ’informations réparties
Technique de fragmentation
Il y a deux façons possibles de diviser une relation en plus petites
relations, horizontalement et verticalement, ce qui donne trois
types de fragments:
Horizontale
Verticale
Mixte
Afin de préserver la cohérence sémantique de la base de données
répartie, la fragmentation d’une relation doit obéir à trois règles :
Décomposition sans perte
Reconstruction
Non duplication
Technique de replication (duplication)
Technique de fragmentation
Fragmentation verticale (p ) :
La fragmentation verticale définit le partitionnement d’une relation selon
ses attributs.
Les fragments sont obtenus par des projections appliquées sur la
relation initiale.
Il est nécessaire de dupliquer dans chaque fragment le ou les
attributs clés pour pouvoir reconstruire la relation.
La reconstruction est obtenue par la jointure des fragments selon les
attributs communs.
Fragmentation mixte :
La fragmentation mixte combine la fragmentation horizontale et la
fragmentation verticale.
ATTENTION : Le choix de la fragmentation est un problème complexe car
il est dépendant des besoins d ’accès des applications
Technique de replication
Administration et optimisation
d ’une base de données
relationnelle
8-1 Introduction
4 niveaux d ’administration
Niveau logique de la base de données
Niveau physique de la base de données
Niveau applicatif
Niveau système
Niveaux d ’administration
Niveau logique
Les bonnes ou mauvaises performances d’une base de données relationnelle ne se relèvent pas seulement de la bonne ou
mauvaise définition de sa structure physique.
Il est important de rappeler que, avant de définir la structure physique d’une base de données, une définition de sa
structure logique est obligatoire.
Cette structure logique est la clé, le garant de la bonne définition d’une structure physique de la base de données (cf.
cours Structures logique et physique d’une base de données relationnelle).
Il ne faut surtout pas oublier qu’en terme de modélisation de données, cette structure logique est le fruit d’un long et
fastidieux travail d’analyse et de conception du système d’information à automatiser.
Il est à rappeler aussi, que la finalité d’une base de données est d’être utilisée (exploitée) par des requêtes, des programmes
faisant des recherches (accès en lecture) ou des mises à jour des données dans la base. Ces recherches ou mises à jour
s’effectuent à l’aide des commandes SQL. Si ces dernières sont mal formulées et ne tiennent pas compte des contraintes
imposées par les optimiseurs, les conséquences peuvent être dramatiques en terme des performances du système.
L’expérience prouve que le gain que nous pouvons espérer en améliorant la structure physique d’une base de données existante
(revoir la répartition des fichiers sur plusieurs axes, gérer plus efficacement la mémoire centrale, etc.) est de l’ordre de 15 à
25 %.
On déduit donc, qu’au moins 75% de gain des performances dépendent fortement de la bonne définition de la
structure logique de la base de données
définir un bon schéma de la base de données : Tables normalisées ou non , Cluster sur tables, Index pour tables, Index pour
Clusters, tablespaces, etc...,
définir les valeurs de paramètres de stockage en fonction de l’évolution des objets dans la base de données dans le temps,...)
et de la bonne utilisation des commandes SQL dans les programmes applicatifs.
C’est pour cette importante raison que mettons l’accent dans ce chapitre sur l’optimisation des requêtes SQL et sur le choix des
index.
Optimisation et amélioration des performances
rappel des méthodes d ’accès
CONCLUSION