3/2 Les mécanismes d'optimisation de gestion d'une base Oracle 8i
Plus le volume des données à gérer augmente, plus il devient nécessaire d'intervenir physiquement
sur la façon dont le SGBD va stocker et organiser les données. Certaines bases de données
décisionnelles peuvent dépasser des volumes de l'ordre de plusieurs dizaines de téraoctets (un
téraoctet est égal à mille gigaoctets), par exemple dans le domaine de la grande distribution les
systèmes décisionnels historisent sur de longues périodes le détail des tickets de caisses, afin de
mener des études sur le comportement des clients.
Avec les versions antérieures d'Oracle
Il fallait gérer l'optimisation physique des données en adaptant le modèle de données logique :
le partitionnement était réalisé en créant des tables distinctes, dont on pouvait avoir une
vision globale à l'aide de vues ;
les tables agrégées étaient gérées par l'administrateur de la base de données, qui devait
créer des procédures spécifiques pour les alimenter et les rafraîchir.
Le serveur Oracle 8i
Il permet d'automatiser toutes ces tâches et les rendre transparentes pour les utilisateurs. Pour
optimiser la gestion des bases de données décisionnelles, le serveur Oracle 8i offre plusieurs types de
mécanismes, dont trois vont être illustrés ci-dessous :
l'indexation ;
les vues matérialisées ;
le partitionnement.
3/2.1 L'indexation
L'indexation des données devient absolument indispensable dès que le volume d'une table atteint un
millier de lignes. En effet, interroger une table en posant une condition sur une colonne non indexée
provoque une lecture séquentielle totale de la table. Le moteur Oracle 8i offre désormais plusieurs
stratégies d'indexation, à sélectionner en fonction du type de données et du type d'application.
3/2.1.1 Les index « B-Tree »
Format d'index par défaut
Les index « B-Tree » sont le format d'index par défaut offert par le moteur Oracle. Ils sont construits
sur le principe des « arbres balancés », structure organisant de manière hiérarchique les pages
d'index.
Schéma de la structure d'un index
Le schéma ci-dessous représente la structure d'un index unique posé sur l'attribut « numéro de
produit » d'une table « produits » :
Si une requête interroge le produit numéro 21800, le serveur Oracle ira lire le sommet de la hiérarchie
(le bloc « racine ») afin de déterminer le bloc de second niveau à lire par la suite. La lecture du bloc de
second niveau « approprié » indiquera selon le même principe le bloc de troisième niveau, et ainsi de
suite jusqu'à l'obtention de la clé du produit demandé.
Chaque page d'un B-arbre doit contenir entre n et 2n noeuds, n étant une constante arbitraire.
Cela signifie qu'une page doit toujours être au moins à moitié remplie. Seule la première
(racine) peut faire exception à cette règle et peut même, éventuellement, ne contenir qu'un
seul noeud.
En respectant cette contrainte, nous allons formuler des algorithmes simples pour la
recherche, l'insertion et la suppression d'éléments telles que la structure de données ainsi
définie (B-arbre) possède les caractéristiques suivantes (où n est l'ordre du B-arbre) :
1. chaque page contient, au plus, 2n éléments
2. chaque page, sauf la racine, contient au moins n éléments
3. chaque page est soit une feuille (pas de descendants), soit elle possède m+1
descendants (si elle contient m éléments)
4. toutes les pages feuilles sont au même niveau.
La figure suivante illustre un B-arbre d'ordre 2 avec 3 niveaux :
Fig. 14.9. Exemple de B-arbre d'ordre 2.
Chaque page contient 2, 3 ou 4 éléments, sauf la page racine qui, dans cet exemple, n'en
contient qu'un seul. Toutes les pages feuilles sont au niveau 3.
14.3.2. Insertion
D'une manière générale, l'insertion d'un nouvel élément dans un B-arbre est relativement
simple. On effectue les mêmes étapes que pour la recherche d'un élément jusqu'à ce que l'on
arrive à une page feuille où l'élément à insérer aurait pu se trouver s'il était présent dans la
structure. On essayera alors d'insérer l'élément dans la page (feuille) en question.
Si un élément doit être inséré dans une feuille contenant moins de 2n éléments, l'insertion
s'effectuera à l'intérieur de la page, sans autre difficulté. Si la page est pleine et qu'une feuille
adjacente possède une place libre, on effectuera un transfert entre les deux feuilles, en tenant
compte de l'élément charnière qui se trouve dans la page parente. Pour prendre un exemple,
supposons que nous ayons le B-ar bre de la figure 14.10 :
Fig. 14.10. Exemple de B-arbre d'ordre 2.
et que l'on désire insérer la valeur 12. Cette valeur devrait être insérée dans la page B. On va
donc déplacer l'élément charnière (20) de la page parente (A) vers la page adjacentes à la page
B et possédant une place libre (page C). La place libérée en page A par le déplacement de
l'élément charnière va maintenant accueillir l'élément de la page B qui lui est directement
inférieur (18). La page B contient alors une place libre qui peut recevoir la nouvelle valeur à
insérer (12). On aboutit enfin à la structure suivante :
Fig.14.11. Insertion par rocade d'éléments
Par contre, l'insertion d'un nouvel élément dans une feuille pleine avec des pages adjacentes
pleines également a des conséquences sur la structure globale, dans la mesure où il faut
allouer de nouvelles pages.
Pour bien comprendre ce qui se passe dans un tel cas, considérons le B-arbre d'ordre 2 de la
figure 14.12 :
Fig. 14.12. B-arbre de départ pour insertion dans une page pleine.
On désire insérer l'élément 22 dans ce B-arbre. L'insertion dans la page C (page devant
contenir 22) n'est pas possible, car la page est déjà pleine (elle contient 2n éléments). On
effectue alors les opérations suivantes :
1. on prépare de la place en créant une nouvelle page (D) au même niveau que B et C.
2. on répartit les 2n+1 éléments (les 2n de C et le nouveau) de la manière suivante :
a. l'élément "milieu" (c'est-à-dire le n+1-ème des 2n+1 éléments, soit 30 dans
notre exemple) est déplacé vers la page parente (A), où il joue le rôle de
charnière entre la page C et la page D
b. les éléments plus petits que l'élément milieu (22 et 26) sont placés dans la page
C
c. les éléments plus grands que l'élément milieu (35 et 40) sont placés dans la
page D.
On aboutit ainsi au B-arbre suivant :
Fig. 14.13. Insertion par création d'une nouvelle page.
Ce mécanisme préserve toutes les propriétés des B-arbres. En particulier, la division d'une
page aboutit à la création de 2 pages contenant exactement n éléments. Il est possible que
l'insertion de l'élément "milieu" dans la page parente puisse, à son tour, provoquer un
dépassement de capacité (si la page parente était pleine) et nécessiter un autre découpage. Le
découpage peut ainsi se propager de niveau en niveau et, éventuellement, atteindre la racine
elle-même. C'est d'ailleurs la seule façon, pour un B-arbre, d'augmenter de profondeur (nb. de
niveaux). Contrairement aux autres structures arborescentes, un B-arbre croît donc à partir des
feuilles, vers sa racine.
Exercice B :
Construire un index sur la date de naissance des musicien (arbre B, ordre 2) :
Monteverdi 1589
Couperin 1668
Bach 1685
Rameau 1684
Debussy 1862
Ravel 1875
Mozart 1756
Faure 1856
Exercice C :
Construire un index sur les noms des musicien (arbre B, ordre 2).
3/2.1.2 Les index « Bitmap »
1 / 10 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !