Plan... Fichiers à enregistrements chaînés ( threaded files) Principe Structure d’un fichier à enregistrements chaînés Exemple Organisation « multi-listes.

Slides:



Advertisements
Présentations similaires
Structures de données avancées : MLH (Multidimensional linear hashing)
Advertisements

Module Systèmes d’exploitation
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : MTH ( Multidimensional trie hashing )
Chap. 4 Recherche en Table
3. Variantes de l’algorithme
Introduction Pour concrétiser l’enseignement assisté par ordinateur
Le publipostage La fonction de fusion permet de créer des documents identiques dans les grandes lignes que l’on personnalise automatiquement à chaque destinataires.
Chap. 1 Structures séquentielles : listes linéaires
12 novembre 2012 Grégory Petit
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Utilisation des tableaux
Initiation au système d’information et aux bases de données
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Traitement de textes WinWord 3 e année Sciences économiques, de gestion et commerciales Présenté par NEHAR Attia.
II. Chaînage, SDD séquentielles
Groupe 1: Classes de même intervalle
Publispostage Menu Outils / Lettres et publipostage
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
Bases de données lexicales
Gestion de Fichiers Arbres B.
Indexation 1. Concepts de base 2. Arbre B 3. Indexes secondaires.
Sections sélectionnées du Chapitre 11
Espaces vectoriels Montage préparé par : S André Ross
Les fichiers indexés (Les B-arbres)
LA STRUCTURE D'ARBRE-B Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
Structures de données IFT Abder Alikacem La classe vector Édition Septembre 2009 Département dinformatique et de génie logiciel.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
IFT-2000: Structures de données Les graphes Dominic Genest, 2009.
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Gestion de Fichiers Hachage Extensible.
Gestion de Fichiers Hachage (suite). 2 Plan du cours daujourdhui Prédiction de la distribution des enregistrements Réduction des collisions en augmentant.
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,
Programmation dynamique
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Programmation linéaire en nombres entiers
Que sont les fichiers de mobilité de l’INSEE?
II. Chaînage, SDD séquentielles
Gestion de Fichiers Hachage (suite et fin). 2 Plan du cours d’aujourd’hui Utilisation des “buckets” Effacements dans des fichiers hachés Autres méthodes.
GF-11: Tri Interne Efficace et Tri Externe
Structures de données avancées : MBT ( Multidimensional B-trees )
Structures de données avancées : Concepts du Multidimensionnel D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
Cours LCS N°4 Présenté par Mr: LALLALI
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
TICE 2 ième Semestre TD6 - Récapitulatif. Mars 2006TICE 2ième Semestre - Révisions2 Evaluation La semaine prochaine Deux demi groupes, minutes d’examen.
Les fichiers 1ère partie
Les vues Une vue: c’est une relation virtuelle. Définie par:
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Système de gestion fichiers
Structures de données avancées : Principales structures de fichiers
06/04/06 LES BASES DE DONNEES INTRODUCTION CogniTIC – Bruxelles Formation - Cepegra.
Structures de données avancées : Arbres B+ avec expansion partielle D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : MLH (Multidimensional linear hashing) D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Hachage dynamique
Post-optimisation, analyse de sensibilité et paramétrage
Structures de données avancées : MTH ( Multidimensional trie hashing ) D. E ZEGOUR Institut National d ’Informatique.
Scripts et fonctions Instructions de contrôle
 Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
Introduction Module 1.
CSI2510 Structures des Données et Algorithmes
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
Raison d'être de la structure de fichiers : Les premiers travaux : Début des années 1960 : En 1963 : Près de 10 ans plus tard... (à peu près 1973) : Durant.
Ali walid A-2002 Plan: Fichier d’organisation séquentielle indexée (index statique)... 1 – Introduction 2 - La technique de l’accès indexé : 2 – 1 - Les.
Formation.
Les bascules et registres
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
Transcription de la présentation:

Plan... Fichiers à enregistrements chaînés ( threaded files) Principe Structure d’un fichier à enregistrements chaînés Exemple Organisation « multi-listes Principe Exemple Fichiers inverses Principe Exemple Structure de données pour l’implantation des index Vecteur de bits Structure de graphe Comparaison des deux structures

Plan... Maintenance des index Le problème des mises à jour (M.A.J.) Cas des suppressions d’enregistrements Cas des ajouts d’enregistrements Cas de modification d’une valeur de clé secondaire Fiabilité et sécurité des données Fichiers « matriciels » (Grid file) Principe Exemple Requêtes ponctuelles Requêtes partiellement spécifiées Adaptation dynamique (Cas des insertions et Cas des suppressions) Traitement identique des attributs clés

Introduction... Dans les séances précédentes, on a vu l’organisation séquentielle indexée. Dans tous les types d’index qu’on a vu, la recherche d’un ou plusieurs enregistrements se fait en se basant sur une valeur d’un seul champ de la structure des enregistrements.

Introduction... On va voir le traitement de fichiers à clés multiples. Il est possible d’accéder à tous les enregistrements du fichier principal possédant des valeurs particulières pour plusieurs attributs et non pour un seul attribut. Exemple : Voici deux exemples de recherche en se basant sur plusieurs attributs : 1)* Recherche dans un fichier de résidences tous les enregistrements, i.e. toutes les maisons possédant (3 attributs): une piscine ou un sauna deux salles de bain au moins 4 chambres 2)* Recherche dans un fichier d’étudiants de tous les étudiants (4 attributs): de citoyenneté canadienne  ayant la meilleure moyenne en mathématique ou en physique  possédant une moyenne générale d’au moins 3.3  dont le matricule est inférieur à

Problème et solutions... Question: Comment peut-on répondre à ce genre de requête? Solution : Construire un index pour chaque attribut. Pour répondre à une requête qui implique 3 attributs, on doit parcourir les 3 index correspondants et chercher l’intersection ou l’union des enregistrements qui peuvent répondre à la requête => Perte de temps énorme : Accès à 3 fichiers index + Accès 3 fois au fichier de données + Traitement des résultats de chaque index pour fournir la liste des enregistrements qui répondent à la requête => Solution inadéquate. Adopter une autre approche: On va jouer sur l’organisation (la structure) des fichiers de données et des fichiers index. Il existe plusieurs structures de fichiers qui nous permettent ce genre de recherche en se basant sur plusieurs attributs.

Fichiers à enregistrement chainés... Principe : * Association d’un champ « pointeur » (donc une liste) à chaque attribut indexé (qui est une clé secondaire). La valeur de ce champ pointeur identifie le prochain enregistrement du fichier ayant la même valeur de clé secondaire. * Pour chaque attribut indexé, on construit un fichier index. Cet index contient une entrée pour chacune des valeurs de cet attribut qui existe dans le fichier. Une entrée contient une valeur particulière d’attribut et un pointeur (qui joue le rôle du pointeur « tête de liste » qui pointe sur le premier enregistrement du fichier possédant cette valeur. Les pointeurs inclus dans le fichier permettent ainsi d’accéder à tous les enregistrements possédant une même valeur d’attribut.

Les structures de fichiers... Un fichier F dont les enregistrements possèdent k attributs. Supposons que parmi ces attributs, 2 d’entre eux (attribut 1 et attribut 2) sont indexés de la façon indiquée ci-dessus. Si on suppose enfin que l’attribut 1 et l’attribut 2 possèdent respectivement n et m valeurs différentes (que l’on retrouve dans le fichier), le fichier F aura la structure suivante :

Les structures de fichiers.... Numéro d’enregistrement Attribut 1Pointeur suivant Attribut 2Pointeur suivant Attribut 3... Attribut k ...... ...... .... ...... ...... ...... Attributs indexés Attributs non indexés Valeur de l’indexPremier pointeur Valeur 10 Valeur 11 Valeur p …. Valeur n Ptr10 Ptr11 Ptr p... Ptr n

Exemple de fichiers.... Numéro d’enregistrements MarquePointeur suivant ModèleCouleurImmatriculation Ford VW BMW Ford VW Ford VW BMW Ford Audi VW Ford Honda BMW Ford ? 13 ? 18 ? 17 ? ?. Pinto Bug 322i Mustang Pinto Rabbit Pinto Rabbit 320 Mustang 5000 Jetta Bug Mustang Civic i Tempo Pinto Mustang. Blanc Rouge Noir Blanc Bleu Noir Blanc Bleu Rouge Bleu Blanc Noir Vert Rouge Vert Blanc Bleu Noir Rouge Vert. NBC 321 ETK 298 GHT 192 AZT 235 BHT 871 NST 231 BLK 283 BNB 932 RGE 656 BAB 938 BLC 501 NOR 132 VRT 394 RGE 184 VER 151 BLA 320 BLE 322 TPO 182 PIN 193 MTG 202.

Exemple de fichiers.... Valeur de l’attribut Le premier pointeur Ford VW BMW Audi Honda

Exemple de requêtes... Exemple de requête impliquant un seul attribut : « Quels sont tous les enregistrements dont la valeur de l’attribut 2 est ‘valeur 22 ’ ? » Pour répondre à cette requête, il faut rechercher dans l’index associé à l’attribut 2 de la valeur ‘valeur 22 ’ et parcours de la liste correspondante dans le fichier de données. En utilisant les fichier ‘automobile’ et le fichier index ‘Marque., et si on cherche par exemple les voitures dont la marque est ‘Ford’, on doit consulter le fichier index ‘Marque’, chercher la valeur ‘Ford’, en utilisant la valeur du premier pointeur, on va se pointer dans le fichier de données (la position du premier pointeur), et en utilisant le chaînage stocké dans le fichier de donnée, on va récupéré toutes les voitures dont la marque est ‘Ford’.

Exemple de requêtes... Exemple de requête impliquant plusieurs attributs : Ce type de requêtes peut impliquer plusieurs attributs qui peuvent être indexés ou non (il est nécessaire qu’un attribut au moins soit indexé). En utilisant toujours notre exemple de fichier ‘automobile’, un exemple de requête impliquant plusieurs attributs peut être le suivant: « Recherche de toutes les automobiles de marque ‘Ford’ et de couleur verte’ ? »

Exemple de requêtes Option 1 : Parcours de la liste des ‘Ford’ (à partir de l’index de l’attribut ‘marque’) et vérification pour chacun des enregistrements rencontrés de la valeur de l’attribut ‘couleur’ (verte ?). Si on n’a pas un index correspondant à l’attribut ‘Couleur’. 2- Option 2 : Idem que ci-dessus mais en parcourant la liste des automobiles de couleur ‘verte’ (à condition qu’il existe un index défini pour l’attribut ‘couleur’). Si on ne dispose pas d’un fichier index correspondant à l’attribut ‘Marque’. On peut choisir l’une de ces deux options. Le choix dépend des attributs indexés et des attributs non indexé. Un autre critère de choix est la longueur des listes dans le fichier de données: On va parcourir de la liste la plus courte.  Il serait préférable d’inclure dans chacune des entrées d’un index la longueur de la liste correspondante.

Exemple de requêtes Option 3 : Parcours simultané des deux listes et comparaisons successives (les deux attributs doivent être indexés) : Dans ce cas, on doit disposer des fichiers index correspondants avec le fichier de données principal. Le principe est le suivant :  Maintien d’un pointeur « suivant » dans chacune des deux listes et ‘incrémentation’ (i.e. passage à l’élément suivant) du plus ‘petit’ pointeur.  Lorsque les valeurs des deux pointeurs sont égales, ce qui veut dire qu’on a trouvé une ‘Ford’ de couleur ‘verte’, on passe alors à l’élément suivant dans chacune des deux listes.

Exemple de requetes... Par exemple, supposons que les enregistrements automobiles de marque ‘Ford’ sont aux adresses 1, 4, 5, 7, 10, 14, 18, 19, 20, 49 et 53 et que les enregistrements automobiles de couleur ‘verte’ sont aux adresses 3, 15, 20, 25, 31, 39, 40, 46, 47, 48 et 53. Pour répondre à notre requête, on peut simuler le principe comme suit : Remarque : Cette technique peut être utilisable si les valeurs des pointeurs sont ordonnées et si les mises à jours sur le fichier (ajouts, modifications et suppressions) sont effectuées avec précaution (i.e. maintien de l’ordre). Automobi les ‘Ford’ Automobiles ‘verte’

Comparaison des options... Comparaison des trois options : On remarque que l’option 3 semble nécessiter un plus grand nombre d’accès aux enregistrements. On va parcourir chaque index, pour chercher le premier pointeur pour chaque valeur recherchée, puis, on va parcourir le fichier de données (tout en parcourant en parallèle les listes correspondantes à chaque index). Pour pallier cet inconvénient, l’idée est la suivante : Séparer les champs « pointeur suivant » du fichier principal et à les stocker dans un fichier index. Les enregistrements des fichiers index sont de taille plus petite  plus grande densité et donc plus faible nombre de lectures physiques  Nombre d’accès minimal.

Mise à jour des fichiers... Si on veut mettre à jour le fichier principal (ajout, modification ou suppression), on doit mettre ajour les index correspondants aux attributs indexés. Prenons le cas de l’opération d’ajout :Si on ajoute un nouvel enregistrement (mettre à jour le fichier de données en terme de données et de pointeurs aussi)  mettre à jour de ou des index (la liste des pointeurs des attributs indexés). On a deux cas : Si l’enregistrement ajouté possède une valeur d’attribut (indexé) non existante dans le fichier avant l’ajout, alors une nouvelle entrée devra être créée dans l’index approprié. Sinon, l’index reste inchangé. Et seul le fichier principal est mis à jour (en terme de données et pointeurs dans la liste des pointeurs). Dans les deux cas, si les listes de pointeurs sont stockés dans des fichiers à part on doit mettre ajour tous les fichiers : Le fichier de données (ajout de données) et les fichiers des listes de pointeurs pour mettre à jour les liste de pointeurs.

Exercice.... Id_ChansonNomLangueCatégorie I love you Salut ma belle Liebhaber Amore moi Per moi padre Angelica Engel Together for ever Life Immortel Kill Te amo Désespoir Hoffnung Infinité Espoir verlieren Je t’aime Herz Trouvaille Princesse Freedom Finden Geliebte La vida Ang Fra Ger Ita Ger Ang Fra Ang Ita Fra Ger Fra Ger Fra Ger Fra Ang Ger Ita Pop Rock Soul Pop Soul Rock HardRock HipHop HardRock HipHop Soul Rap Pop Rap Pop Rock Soul Rock

Fichiers multi-listes... Fichier principal : Le fichier principal a la même structure que celle des fichiers à enregistrements chaînés. Index : Chaque entrée d’index pointe sur chacun des k ième enregistrements possédant une valeur d’attribut donnée (k = 1, 2, 3,...,  ). (Dans notre exemple, le fichier à enregistrements chaînés ‘automobile’ peut être vu comme un fichier d’organisation ‘multi-listes’ où k =  ).  Chaque entrée d’index correspondant a une valeur particulière d’attribut identifie les (1, 1 + k, 1 + 2k, 1+ 3k, 1 + 4k,...) ième enregistrements possédant cette valeur d’attribut.  Il existe donc un certain nombre de sous-listes de longueur k, et il existe un pointeur ( dans l’index sur chacune d’elles.  Une entrée d’index possède, dans ce type d’organisation, deux pointeurs :  un pointeur sur la valeur d’attribut suivante.  un pointeur sur une liste de pointeurs qui pointent sur chacune des sous-listes du fichier principal.

Fichiers multi-listes... pointeur sur les sous-listes du fichier principal. pointeur sur valeur suivante de l’attribut. INDEX ATTRIBUT 1 STRUCTURE D’UN INDEX ‘MULTI-LISTE’  VALEUR 11 :  POINTEUR  POINTEUR...  VALEUR 12 :  POINTEUR  POINTEUR... . VALEUR 1N :  POINTEUR  POINTEUR... INDEX ATTRIBUT 2  VALEUR 21 :  POINTEUR  POINTEUR...  VALEUR 22 :  POINTEUR  POINTEUR... . VALEUR 2M :  POINTEUR  POINTEUR...

Fichiers multi-listes: Exemple....  INDEX « MARQUE » INDEX « COULEUR »  FORD  VW  BMW  AUDI  HOND A :  1  7  18  49 ... :  2  12 ... :  3  17 ... :  11 ... :  15 ... BLANC  ROUGE  NOIR  BLEU  VERT :  1  11 ... :  2  19 ... :  3  20 ... :  5  17 ... :  13  25  40  48 ...

Fichiers multi-listes: Exemple de fichiers.... Ford VW BMW Ford VW Ford VW BMW Ford Audi VW Ford Honda BMW Ford ? 13 ? 18 ? 17 ? ?. Pinto Bug 322i Mustang Pinto Rabbit Pinto Rabbit 320 Mustang 5000 Jetta Bug Mustang Civic i Tempo Pinto Mustang. Blanc Rouge Noir Blanc Bleu Noir Blanc Bleu Rouge Bleu Blanc Noir Vert Rouge Vert Blanc Bleu Noir Rouge Vert ?

Requetes... Prenons la requête suivante : « Recherche de toutes les automobiles de marque ‘Ford’ et de couleur verte’ ? » Supposons que les enregistrements automobiles de marque ‘Ford’ sont aux adresses : 1, 4, 5, 7, 10, 14, 18, 19, 20, 49 et 53 et que les enregistrements automobiles de couleur ‘verte’ sont aux adresses : 13, 15, 20, 25, 31, 39, 40, 46, 47, 48 et 53 Index ‘marque’ Index ‘couleur’

Exercice.... Id_ChansonNomLangueCatégorie I love you Salut ma belle Liebhaber Amore moi Per moi padre Angelica Engel Together for ever Life Immortel Kill Te amo Désespoir Hoffnung Infinité Espoir verlieren Je t’aime Herz Trouvaille Princesse Freedom Finden Geliebte La vida Ang Fra Ger Ita Ger Ang Fra Ang Ita Fra Ger Fra Ger Fra Ger Fra Ang Ger Ita Pop Rock Soul Pop Soul Rock HardRock HipHop HardRock HipHop Soul Rap Pop Rap Pop Rock Soul Rock

Fichiers inverses... La structure des fichiers inverses est un cas particulier de l’organisation « multi-listes » lorsque k vaut 1. Organisation « multi-listes » (k = 1, 2, 3,...  ) Lorsque k = 1 (i.e. fichier inverse), l’index pointe sur chacun des enregistrements du fichier principal possédant une certaine valeur d’attribut. Dans ce cas, il est inutile de disposer dans le fichier principal d’un champ « pointeur suivant » associé à l’attribut indexé (comme c’est le cas dans une organisation « multi-listes ». Fichiers enregistrements chaînés (k =  ) Fichiers inverses (k = 1)

Fichiers inverse: La structure des fichiers... Dans une structure de fichier inverse, on distingue : 1. un fichier index (le fichier inverse) (fichier distinct dufichier de données). 2. le fichier principal de données (qui contient seulement des données). Le degré d’inversion d’un fichier de ce type est défini par la proportion d’attributs sur chacun desquels est défini un index. Si le fichier est inversé à 100 % ( on dit alors qu’il est totalement inversé), ceci signifie qu’un index a été défini sur chacun des attributs.Dans le cas contraire le fichier est dit partiellement inversé.

Fichiers inverse: La structure des fichiers... Le fichier principal (voir exemple du fichier « automobile ») peut être perçu comme une fonction F permettant d’obtenir les valeurs d’attributs d’un enregistrement connaissant son adresse. Les fichiers index de structure identique à celle de l’exemple du fichier ‘automobile’ constituent la fonction inverse F-1 (d’ou le nom de l’organisation), i.e. à partir du couple (attribut, valeur), cette fonction permet d’obtenir tous les enregistrements possédant cette valeur d’attribut. Fichier (adresse) (attribut, valeur), (attribut, valeur),... Fichier index (attribut, valeur) adresse, adresse,...

Fichiers inverse: La structure des fichiers: exemple.... Numéro d’enregistrement s MarqueModèleCouleurImmatriculation Ford VW BMW Ford VW Ford VW BMW Ford Audi VW Ford Honda BMW Ford. Pinto Bug 322i Mustang Pinto Rabbit Pinto Rabbit 320 Mustang 5000 Jetta Bug Mustang Civic i Tempo Pinto Mustang. Blanche Rouge Noire Blanche Bleue Noire Blanche Bleue Rouge Bleue Blanche Noire Verte Rouge Verte Blanche Bleue Noire Rouge Verte. HORS4ME SKIBNY DADIOU1 VALEGRL ETK-298 MNV-197 THU-231 GHT-163 ACD-138 WCT-336 DFH-871 FJT-178 IMM-922 ABC-123 CAC-321 CKC-108 ZUT-117 TEZ-718 FEZ-124 ETC-421.

Fichiers inverse: La structure des fichiers: exemple.... PARTIELLEMENT INDEXÉ (  40 %) : Car on a 5 attribut dont 2 sont indexés. Marque Couleur FORD  1  4  5  7  10  14  20 ...  VW  2  6  8  12  13 ...  BMW  3  9  16   AUDI  11 ...  HONDA  15 ...  BLEUE  5  8  10  17 ...  NOIRE  3  6  12 ...  BLANCHE  1  4  7  11  16 ... .

Exemple de requetes... Voici, un exemple de requêtes auxquelles on peut répondre facilement en utilisant la structure de fichiers inverses. 1. Combien y a-t-il d’automobiles de couleur ‘verte’ et de marque ‘Ford’ dans le fichier principal ?  Le fichier index permet, à lui seul, de répondre à cette requête. 2. Quelle est l’immatriculation de chacune des automobiles ‘Ford’ de couleur ‘verte’ ?  Pour répondre à cette requête, le fichier index ne suffit plus à lui seul et l’accès au fichier principal devient nécessaire

Exercice.... Id_ChansonNomLangueCatégorie I love you Salut ma belle Liebhaber Amore moi Per moi padre Angelica Engel Together for ever Life Immortel Kill Te amo Désespoir Hoffnung Infinité Espoir verlieren Je t’aime Herz Trouvaille Princesse Freedom Finden Geliebte La vida Ang Fra Ger Ita Ger Ang Fra Ang Ita Fra Ger Fra Ger Fra Ger Fra Ang Ger Ita Pop Rock Soul Pop Soul Rock HardRock HipHop HardRock HipHop Soul Rap Pop Rap Pop Rock Soul Rock

Structure de données pour implanter l’index... Dans cette section, on va présenter deux structures de données qui permettent de représenter les fichiers index. On va s’intéresser seulement aux fichiers multi-listes et aux fichiers inverses. Problèmes Le problème des organisations de type « multi-listes » ou « fichiers inverses » est la maintenance des listes à longueur variable pour chacune des valeurs d’attributs indexés ! Solutions possibles : utilisation de 2 types de structures de données. Pour résoudre ce problème, on dispose de deux structure : Le vecteur de bits et la structure de graphe.

Le vecteur de bits... Le vecteur de bits est un tableau d’éléments bi-valués (0 ou 1) possédant autant d’éléments que d’enregistrements dans le fichier principal. Chacun des éléments indique si l’enregistrement correspondant (i.e. de même rang) du fichier principal possède (valeur 1) ou ne possède pas (valeur 0) la valeur d’attribut considérée. Exemple : Dans le cas de notre fichier ‘automobile’, une représentation du fichier index en utilisant le vecteur de bits est la suivante : Index  marque (sous la forme d’un vecteur de bits) Ford  VW  BMW  Audi  Honda 

La structure de graphe... Idée : Ne représenter qu’une seule fois tous les éléments de liste qui pointent sur le même enregistrement du fichier principal. Principe : Chaque enregistrement du fichier principal est représenté, dans un fichier répertoire inversé, par un nœud (d’un graphe) qui appartient à autant de listes qu’il y a d’attributs indexés (i.e. structure de graphe). Structure d’un nœud : Dans ce graphe, la structure du nœud est la suivante : 1. Un pointeur sur l’enregistrement du fichier principal. 2. Pour chaque attribut indexé, un pointeur sur le nœud « père » (on dit aussi nœud « propriétaire »). 3. Pour chaque attribut indexé, un pointeur sur le nœud suivant possédant la même valeur pour cet attribut.

La structure de graphe.... Pointeur sur l’enregistrement du fichier principal Pointeur vers un nœud « propriétaire » : attribut 1 Pointeur vers le nœud suivant : attribut Pointeur vers un nœud « propriétaire » : attribut p Pointeur vers le nœud suivant : attribut p

La structure de graphe... Pour chercher les enregistrements enregistrements correspondants automobiles de marque ‘Ford’ et de couleur ‘verte’, le principe est le suivant : 1. Choix arbitraire d’un attribut ( par exemple ‘marque’). 2. Parcours de la liste des nœuds à partir du premier nœud pointé par la valeur ‘Ford’, et : pour chacun des nœuds ainsi traversés, vérification du nœud propriétaire de l’attribut ‘couleur’ (pour voir s’il s’agit d’une Ford verte). Pour notre exemple du fichier ‘automobile’, la structure du graphe est la suivante:

La structure de graphe....

Comparaison des deux structures... En étudiant ces deux structure, la question qui se pose : Quelle est la structure parmi les deux précédentes (i.e. vecteur de bits et structure de graphe) qui est la plus économique en termes de coûts ?  Pas de réponse figée ! Ceci dépend du cas particulier considéré (i.e. des valeurs de certains paramètres tels que le nombre d’enregistrements, le nombre moyen de valeurs différentes par attribut indexé et l’espace nécessaire au stockage d’un pointeur).  Examen de deux exemples d’illustration Soit : M :le nombre d’enregistrements du fichier principal P :le nombre d’attributs indexés N :le nombre moyen de valeurs différentes par attribut S :l’espace nécessaire au stockage d’un pointeur (exprimé en octets)

Comparaison des deux structures... L’espace nécessaire au stockage d’un structure de type « vecteur de bits » sera de : N  M  P bits N P … M

Comparaison des deux structures... L’espace nécessaire au stockage d’une structure de graphe sera de (voir le schéma précédent). [M( (2P+1))+ (PN)]x S 1 P P P M N S

Comparaison des deux structures... Exemple 1 : P = 3 N = 2 M = S = 2 (i.e. 2 octets pour stocker un pointeur) Espace Ev nécessaire au stockage d’un vecteur de bits : Ev = 3  2  = bits Espace EG nécessaire au stockage d’une structure de graphe : EG = [ (( 2  3 ) + 1) + ( 3  2 ) ]  16 = bits  Ev <<<< EG ( EG  20  Ev !)

Comparaison des deux structures... P = 3 N = 40 M = 200 S = 1 Espace nécessaire au stockage d’un vecteur de bits : Ev = 3  40  200 = bits Espace nécessaire au stockage d’une structure de graphe : EG = [ 200 (( 2  3 ) + 1) + ( 3  40 ) ]  8 = bits  EG < Ev ( Ev  2  EG !)

Comparaison des deux structures... En général une structure de graphe est plus coûteuse qu’un vecteur de bits (en terme de stockage). La tableau suivant montre les avantages et les inconvénients de ces deux structures : Fusion de listes Opérations ensemblistes Coût de stockage Vecteur de bits LenteurRapiditéGénéralement peu élevé Structure de graphe RapiditéLenteurGénéralement élevé

Maintenance de l’index.... Suppression Ajout d’enregistrement s Modification d’une valeur de clé secondaire « Logique »« Physique »Valeur(s) d’attribut(s) déjà existante(s) Nouvelle(s) valeur(s) d’attribut(s) M.A.J. Fichier ou  Tous les index du fichier doivent être modifiés.  Un index, au plus, nécessitera une M.A.J.

Suppression... Logique :*L’enregistrement est « marqué » comme effacé mais reste présent physiquement dans le fichier. *Périodiquement, le fichier est ré-écrit en omettant les enregistrements supprimés logiquement. Physique :*Avantage : réduction de la longueur de liste et donc du temps de parcours et de recherche. *Inconvénient : L’adresse des enregistrements est modifiée => nécessité de mise à jour des pointeurs sur ces enregistrements. Vecteur de bits Le type de suppression (i.e. logique ou physique) effectués Sur le fichier principal doit être identique à celui effectué sur le fichier index. Structure de graphe Les deux types de suppression sont appropriés pour une structure de type « liste chaînée ». Si les éléments sont triés (pour accélérer les opérations de fusion), une suppression peut nécessiter un parcours de liste pouvant prendre beaucoup de temps.

Ajout... Possibilité de réutiliser les espaces perdus par les suppressions logiques. Vecteur de bits - Très grande facilité de mise à jour. -Structure qui peut s’avérer pénalisante dans le cas d’un accroissement important du volume du fichier principal (i.e. rallongement de chacun des vecteurs de bits). Structure de graphe -Structure de données moins pénalisante lors d’un accroissement de volume du fichier principal suite à des insertions d’enregistrements. -Extension de la longueur de liste  augmentation du temps de parcours.

Modification Valeur d’attributs déjà existante : Vecteur de bits : Modification mineure de la structure de données (i.e. modification d’une valeur de bits dans deux listes). Structure de graphe : Déconnexion d’un nœud d’une liste et connexion de ce dernier à une autre liste.  En général, trois pointeurs doivent être mis à jour dans ce type d’opération. Exemple : modification « Ford »  « VW »

Modification Nouvelle valeur d’attribut : Vecteur de bits : Création d’un nouveau vecteur. Structure de graphe : Création d’une nouvelle liste composée d’un seul nœud.

Fichiers matriciels... Cette structure représente un mode d’organisation permettant d’utiliser une technique d’accès basée sur l’utilisation d’une matrice de bits. Cette structure de fichier est bien adaptée aussi bien pour répondre à des requêtes « multi-clés » que pour la mise à jour de fichier (i.e. volatilité).

Objectifs... 1) De faciliter les requêtes ponctuelles (i.e. dans lesquelles une valeur est spécifiée pour chaque attribut clé) Exemple :retrouver dans le fichier « automobiles » l’enregistrement tel que : marque = ‘VW’, modèle = ‘Jetta’, couleur = ‘Noir’ (en supposant que marque, modèle et couleur sont les trois attributs clés du fichier « Automobiles ») 2) De faciliter les requêtes partiellement spécifiées Exemple :Retrouver dans le fichier « automobiles », tous les enregistrements tels que : marque = ‘Ford’, modèle = ‘Pinto’ 3) De faciliter l’adaptation dynamique de la structure du fichier suite aux opérations d’insertion et de suppression 4) De traiter tous les champs clés de la même façon (i.e. pas de distinction entre clé primaire et clés secondaires)

Principe... Supposons que k clés aient été définies sur chaque enregistrement d’un fichier « matriciel ». Soit l’espace à k dimensions défini par les k ensembles de valeurs d’attributs. Le principe d’un fichier « matriciel » consiste à imaginer une matrice de bits à k dimensions associée au fichier et telle que :  L a dimension i de cette matrice aurait autant d’éléments que l’attribut i possède de valeurs différentes.  Un élément de cette matrice possédant la valeur 1 signifierait qu’il existe un enregistrement dans le fichier possédant les k valeurs d’attributs correspondant à cet élément.  Une telle matrice constituerait une représentation complète de l’ensemble des enregistrements.

Exemple....

Problème... Problème : Stockage de la matrice si k = 4 et si chacun des quatre attributs clés possède 100 valeurs différentes, la matrice contiendra alors 100  100  100  100 = d’éléments. Solution: Solution théorique valable mais difficile à implanter sur un plan pratique.

Solution...  Réduction de la taille de la matrice en regroupant les valeurs d’attributs en partitions Exemple : Au lieu d’avoir l’attribut « couleur » distribué sur les valeurs : blanc, rouge, bleu, vert, jaune, cyan, bourgogne,... Ainsi, la couleur ‘jaune’ se retrouvera dans la 2 e partition  Les points limites (ou bornes) des partitions (ou classes) sont représentés sous forme d’échelles linéaires (i.e. une échelle linéaire pour chaque attribut clé). Par exemple, pour l’attribut, « couleur » partitionné tel qu’indiqué ci- dessus, l’échelle est (F, K, Q).  L’ensemble des k échelles linéaires (si k attributs clés) définit une matrice à k dimensions.

Solution...  L’espace est ainsi divisé en blocs matrice, le nombre des ces blocs étant inférieur au nombre d’éléments de la matrice initiale.  il n’existe plus de correspondance « un-à-un » entre les éléments de la matrice (i.e. les blocs matrice) et les enregistrements du fichier de données.  Dans ce type de structure de fichier, les enregistrements sont stockés dans les blocs disque de longueur fixe.  L’assignation dynamique de ces blocs disque aux blocs matrice est réalisée à l’aide du répertoire matrice. Répertoire matrice = échelles linéaires + tableaux matriciels

Solution...  Chaque élément matriciel pointe sur un et un seul bloc disque mais plusieurs éléments matriciels (formant des rectangles à k dimensions) peuvent pointer sur un même bloc disque.  Le bloc disque pointé par un élément matriciel (ou par un rectangle à k dimensions) contient tous les enregistrements du fichier de données possédant les valeurs d’attributs correspondantes. Généralement :  La taille importante du tableau matriciel nécessite son stockage sur mémoire secondaire à accès direct (i.e. disque par exemple).  À l’inverse, les échelles linéaires sont, le plus souvent, stockées en mémoire principale.

Solution... Soit les échelles linéaires suivantes (fichier « automobiles ») (  k=3) couleur (F, K Q) marque (G, R) modèle (C, H, N, T) Soit l’enregistrement dont les caractéristiques sont les suivantes : marque = ‘Ford’, modèle = ‘Pinto’, couleur = ‘Bleu’ Les partitions correspondant à ces valeurs d’attributs clés sont : marque :1, modèle :4, couleur :1  Le bloc disque pointé par l’élément [1, 4, 1] de la matrice correspond à l’emplacement de stockage de (ou des) l’enregistrement(s) de l’ensemble ci- dessus.

Performance... Les fichiers matriciels permettent d’atteindre les quatre objectifs mentionnés précédemment, à savoir : 1.Le traitement des requêtes ponctuelles, 2.Le traitement des requêtes partiellement spécifiées, 3.L’adaptation dynamique de la structure du fichier suite aux opérations de mise à jour, 4.Le traitement de tous les champs clés de la même façon ?

Requetes ponctuelles... En réponse à une requête ponctuelle, chacune des valeurs spécifiées pour les k attributs clés est transformée en un index matriciel en utilisant l’échelle linéaire (ou les échelles linéaires) appropriée. L’élément matriciel sélectionné par les k index est ensuite recherché sur disque (1er accès disque) (car le répertoire matrice est stocké dans le disque). Un second accès disque permet enfin d’accéder au bloc disque pointé par l’élément matriciel présélectionné à l’étape précédente. Illustration

Requete partiellement spécifiée... Pour pouvoir répondre à ce type de requête, il doit être possible de parcourir le tableau matriciel le long d’un axe quelconque à partir d’un élément, i.e.étant donné l’adresse d’un élément matriciel, on doit pouvoir déterminer facilement l’adresse de l’élément suivant ou précédent dans l’une quelconque des k dimensions Pour ce faire : 1.Étant donné les index d’un élément, ce dernier doit pouvoir être accessible directement 2.Les éléments de la matrice doivent être chaînés en liste linéaire Illustration : Exemple de requêtes partiellement spécifiées : « Rechercher toutes les automobiles de marque ‘Ford’ et de modèle ‘Pinto’ (i.e. quelle que soit la couleur) ?

Requete partiellement spécifiée....

Adaptation dynamique... Que se passe-t-il lorsque des enregistrements sont ajoutés ou supprimés ? Cas des insertions : Si un enregistrement doit être ajouté dans un bloc déjà plein, un nouveau bloc est alloué au fichier et les enregistrements sont distribuées sur les deux blocs. Deux cas de figures doivent être distingués : ouLe bloc plein est pointé par plusieurs éléments matriciels Le bloc plein pointé par un seul élément matriciel

Cas 1... Aucun changement de la partition des échelles linéaires n’est nécessaire. Les enregistrements sont distribués sur les deux blocs conformément à la partition des échelles linéaires et certains pointeur sur l’ancien bloc sont mis à jour pour pointer sur le nouveau. Illustration: Supposons, par exemple, que l’élément matriciel qui représente les enregistrements tels que : couleur<F G  marque<R H  modèle<N Et que l’élément matriciel qui représente les enregistrements tels que : couleur<F G  marque<R N  modèle<T Pointent tous deux sur le même bloc et que ce dernier soit plein (i.e. déborde)

Cas 1... Comme le montre la figure ci-dessous, un nouveau bloc est alloué et l’un des deux éléments matriciels précédents pointe sur lui. Les enregistrements dans le bloc plein sont alors distribués sur les deux blocs suivant que leur valeur pour l’attribut ‘modèle’ est inférieure ou supérieure (ou égale) à N.

Cas 2... Un bloc est assigné à chacune des moitiés de l’élément matriciel d’origine et les enregistrements sont distribués sur les deux blocs conformément à la nouvelle partition. Illustration: Supposons qu’après une série d’insertions, il y ait débordement dans le bloc pointé par l’élément matriciel qui représente les enregistrements tels que : couleur<F G  marque<R N  modèle<T et que ce bloc n’est pointé que par ce seul élément matriciel Il devient alors nécessaire d’éclater l’une des échelles linéaires. Choisissons arbitrairement l’attribut ‘marque’ et ajoutons une nouvelle partition à la valeur M. L’ancienne échelle linéaire pour l’attribut ‘marque’ qui était (G, R) devient alors (G, M, R): 1.Le nombre d’éléments matriciels augmente 2.La plupart des nouveaux éléments induits par cette extension de la matrice vont pointer sur un bloc existant.

Cas 2... Un nouveau bloc doit donc être alloué et les enregistrements doivent être distribués à partir du bloc en débordement. Les deux blocs seront maintenant pointés par les éléments de la matrice qui représentent les enregistrements tels que : couleur<F G  marque<R N  modèle<T ET couleur<F G  marque<R N  modèle<T

Cas 2....

Suppression... Afin de récupérer l’espace perdu par les suppressions, deux blocs candidats peuvent être fusionnés si leur nombre total d’enregistrements est inférieur à une certaine valeur moyenne prédéfinie.  Nécessité de mise à jour des pointeurs sur le bloc supprimé. Il faut noter que n’importe quelle paire de blocs ne peut pas toujours être fusionnée :  En effet, seuls des éléments matriciels formant un rectangle à k dimensions peuvent pointer sur un même bloc. Illustration (avec k = 2)

Traitement identique des attributs... Il n’existe aucune différence de performance entre les index primaires et secondaires car tous les attributs clés sont traités de la même façon.