Administration Et Sécurité Des Bd-Partie 2
Administration Et Sécurité Des Bd-Partie 2
Administration Et Sécurité Des Bd-Partie 2
Alaeddine.ensak@gmail.com
Alaeddine.boukhalfa@uit.ac.ma
3
▪ Problème rencontré
- J’interroge une petite table mais le temps réponse est grand.
→ de minimiser le temps de réponse.
- Je modélise et je crée une petite table mais cette dernière prend beaucoup d’espace
de stockage.
→ Nécessité de minimiser l’espace de stockage.
- Je viens d’installer un SGBD, mais il ne répond pas efficacement à mes traitements
(configuration par défaut, paramètres mal ajustés.)
→ Nécessité d’ajuster les paramètres de mon SGBD.
4
▪ Ce qu’il faut optimiser
- Optimiser la logique de la base de données.
- Gérer les méthodes d’accès.
- Optimiser physiquement la base de données.
- Optimiser les requêtes SQL.
5
Optimisation des schémas
▪ Le modèle relationnel
- Les bases d données relationnelles que nous étudions sont fondées sur le modèle
relationnel inventé par Edgar Frank Codd en 1970.
- Ce modèle s’appuie sur l’organisation des données dans des relations (aussi appelées
« entités »), qui sont des tables à deux dimensions :
• Les colonnes : ce sont les attributs qui caractérisent la relation.
• Les lignes : aussi nommées « tuples », elles contiennent les données.
Exemple :
Article Désignation Quantité
1 Huile 4
2 Fromage 6
3 SEL 20
6
▪ Type des données
- Le type des données semble facile à gérer, or ce n’est pas vraiment le cas.
- La conversion automatique du MCD en MPD peut provoquer de mauvais types.
- Il existe principalement 4 familles de types de champs :
• Numérique (entiers, décimaux…)
• Text
• Date et heure (TIMPESTAMP, Date et Heure avec une résolution en fractions de
seconde jusqu’à nanoseconde)
• Binaire (RAW <2000 octets, BLOB <= 4Go,…)
7
▪ La normalisation
- La normalisation de base de données : a pour but d’établir un bon modèle de données
dans lequel les données sont bien organisées (pas de redondance, cohérence…).
- La normalisation d’un modèle relationnel se base sur des règles définies appelées
Formes Normales.
- Ce qui est important dans la normalisation est de se poser les bonnes questions que
d’appliquer aveuglément des règles.
8
• 2FN: 1FN + tous les attributs ne faisant pas partie de ses clés dépendent des clés
candidates complètes et non pas seulement d’une partie d’entre elles.
Un contre exemple: (L'attribut difficulte ne dépend que d'une partie de la clé primaire “figure” et non
de la clé primaire complète “skater, figure”)
Richie Ollie 2 8
Richie Flip 5 10
Richie Hard-Flip 10 9
Nyjah Flip 5 7
Nyjah Hard-Flip 10 8
9
• 3FN: 2FN + tous les attributs ne faisant pas partie de ses clés dépendent
directement des clés candidates (La troisième forme normale (3FN) ressemble à la
deuxième 2FN mais concerne la dépendance entre attributs non clés)
Un contre exemple: (l'attribut “sexe” peut être déduit de l'attribut non clé primaire “civilite”)
10
• FNBC (Forme normale de Boyce-Codd): 3FN + tous les attributs ne faisant pas
partie de ses clés ne doivent pas déterminer une partie de la clé.
Un contre exemple: (l’attribur “capitale” determine l’attribut “pays”)
Il existe d’autres FN (4ème, 5ème, et 6ème) et elles sont un peu plus spécifiques.
11
▪ La dénormalisation
- Avant de dénormaliser un modèle il faut d’abord le normaliser.
• La dénormalisation pour historisation :
Les FNs ont pour but d’éviter la redondance de l’information. (Le prix actuel d’un
article et le prix de ce même article il y a quelques mois ne sont pas forcément les
mêmes) même si parfois ils sont identiques, elles n’ont pas le même cycle de vie.
→ Il y a deux solutions pour implémenter une gestion des commandes avec historique
des prix :
Commande Livre
N CMD (pk) Id Livre (pk)
Date CMD Titre
N Client (fk) Prix
Ligne CMD
N CMD (pfk)
Id Livre (pfk)
Quantité
PU
12
Commande Livre
N CMD (pk) Id Livre (pk)
Date CMD Titre
N Client (fk)
13
• La dénormalisation pour performance et simplification en environnement OLTP
(online transaction processing) :
Le but de la normalisation est d’éviter la duplication afin de renforcer la performance,
mais parfois il faut stocker des attributs dérivés qui rendent service tels que :
MontantLigne = Quantité * Prix – MontantRemise
• La dénormalisation pour performance en environnement OLAP (Online Analytical
Processing) :
Les FNs ont été créées pour un environnement OLTP, dans OLAP, lancer une requête
sur des centaines milliers d’enregistrements, faire des jointures à chaque fois va être
assez coûteux (alors que la finalité est de faire l’analyse des données).
Dans l’OLAP, on duplique dans les tables de faits les données qui représentent les axes
d’analyse. OLAP Ligne CMD
Livre (pk)
Quantité
Titre
Prix
Année
Pays
14
Méthodes d’accès
▪ Les chemins d’accès
15
▪ Les indexs
- Permettent un accès rapide à partir d'une clé.
- Permettent de satisfaire certaines requêtes portant sur un ou plusieurs attributs.
→ Ne sont pas toujours le moyen le plus efficace pour accéder à une table.
- Ils peuvent exister indépendamment de l’organisation des données (plusieurs si on
veut optimiser plusieurs requêtes).
16
17
• Index dense :
Les données ne sont pas triées sur la clé de recherche, alors l’index est établi sur toutes
les valeurs de la clé existante dans le fichier, et il les associe aux adresses des
enregistrements.
18
- Un index dense peut coexister avec un index non-dense.
- On parle des index primaires et secondaires lorsqu’un on a un fichier trié sur clé
primaire, et on crée un index non-dense, puis on ajoute des index denses pour les
attributs qui servent fréquemment à la recherche.
19
• Index multi-niveaux (index hiérarchisé) :
- Parfois la recherche dans l’index devienne pénalisée, alors il faut indexer l’index lui-
même.
- Dès le deuxième niveau d’indexation, on parle d’index non-dense.
- Pour un index à n niveaux, le niveau k étant un index trié et divisé en paquets, il
possède lui-même un index de niveau k+1, la clé de chaque entrée de ce dernier étant
la plus grande du paquet.
20
Example :
* Créer une table Personne (id, nom, prenom, email)
* Indexer la table personne.
21
• Un index peut être :
- Simplement le stockage des données d'une colonne de table qui sera souvent
sollicitée (surtout au niveau des recherches).
CREATE INDEX IX1 ON T1 (COL1);
- L'ensemble de plusieurs colonnes qui feront l'objet de requête pour les recherches.
CREATE INDEX IX2 ON T1 (COL1, COL2);
- Le résultat d'une fonction simple ou complexe.
CREATE INDEX IX3 ON T1 (upper(COL3));
CREATE INDEX IX4 ON T1 (ma_fonction(COL1, COL2));
22
• Les index B-tree :
- Un index B-tree est un index stocké sous forme d'arbre (tree)
- l’arbre est ordonné et équilibré (profondeur homogène quelque soit la feuille), il peut
avoir 2, 3 voire plus de niveaux (profondeur de branche).
- Il existe des index B-tree créés automatiquement pendant la création d’une contrainte
de type « PRIMARY KEY » ou « UNIQUE.
23
• Les index Bitmap :
- les index Bitmap sont destinés à l'indexation de colonnes qui comportent peu de
valeurs distinctes et beaucoup d'enregistrements pour chacune de ces valeurs.
- Ils permettent une recherche très rapide.
-A l'inverse des index B-Tree, les index Bitmap ne stockent pas un pointeur vers un
enregistrement dans un fichier trié sur l'index, mais une valeur codée sur des bits pour
chaque valeur de la colonne indexée.
Exemple :
24