La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Gestion de Fichiers Construction d’Indexes. 2 Plan du cours de la semaine Vue Générale Un indexe pour les fichiers à entrées séquentielles Opérations.

Présentations similaires


Présentation au sujet: "Gestion de Fichiers Construction d’Indexes. 2 Plan du cours de la semaine Vue Générale Un indexe pour les fichiers à entrées séquentielles Opérations."— Transcription de la présentation:

1 Gestion de Fichiers Construction d’Indexes

2 2 Plan du cours de la semaine Vue Générale Un indexe pour les fichiers à entrées séquentielles Opérations de base sur les fichiers indexés à entrées séquentielles Indexes trop grands pour tenir en mémoire Indexer un fichier avec plusieures clés: indexes secondaires. Ameliorer la structure des indexes secondaires. Indexes sélectifs Attachement des indexes aux locations physiques

3 3 Vue générale Un indexe est une table contenant une liste de clés associées à un champ de réference pointant vers l’enregistrement dans lequel l’information referenciée par la clé se trouve. Un index vous permet d’imposer de l’ordre dans votre fichier sans avoir besoin de le re-arranger. Un index simple est tout simplement un tableau dont les éléments sont des paires (clé, référence). Il est possible d’avoir plusieurs indexes pour les mêmes données: données aux accès multiples. La construction d’indexes nous donne la possibilité d’acceder à des fichiers d’enregistrements de longueur variable par clé.

4 4 Un indexe simple pour les fichiers aux entrées séquentielles Supposez que nous voulons maintenir une collection d’enregistrements (de disques musicaux) contenant les informations suivantes: Numéro d’identification du disque Titre Compositeur(s) Interprète(s) Label de la maison d’édition

5 5 Un indexe simple pour les fichiers aux entrées séquentielles Nous choisissons d’organiser le fichier en une serie d’enregistrements à longueur variable avec un indicateur de longueur, avant chaque enregistrement. Les champs de chaque enregistrement ont aussi des longueurs variables mais ils sont séparés par des délimitateurs. Nous formons une clé primaire en concaténant le code de label de la maison d’édition avec le numéro d’identification du disque (“labelID”). Ceci devrait former un identificateur unique.

6 6 Un indexe simple pour les fichiers aux entrées séquentielles Pour obtenir un accès par clé rapide, nous créons un indexe simple avec un champ clé, associé à un champ référence indiquant l’addresse du premier octet de l’enreg. de données correspondantes. L’indexe peut être trié alors que le fichier n’a pas besoin de l’être. Le fichier de données peut avoir des entrées séquentielles: les enregistrements apparaissent dans l’ordre dans lequel ils ont été ajoute au fichier de données.

7 7 Un indexe simple pour les fichiers aux entrées séquentielles Quelques commentaires sur notre organisation d’indexe: L’indexe est plus facile à utiliser que le fichier de données car 1) il utilise des enregistrements a taille fixe et 2) il est surement plus petit que le fichier de données. En forcant le fichier indexe à avoir des enregistrements à taille fixe, on impose une limite sur la taille du champ contenant la clé primaire. Ceci peut créer des problèmes. L’indexe pourrait contenir plus d’information que la clé et la référence. On pourrait p.ex. retenir la longueur de chaque enregistrement dans l’indexe.

8 8 Opérations de base sur un fichier à entrées séquentielles Assomption: L’index est assez petit pour être sauvegardé en mémoire. Plus tard, nous verrons ce qui peut être fait lorsque cela n’est pas le cas. Création des fichiers d’indexe et de données Montage de l’indexe en mémoire avant son utilisation. Re-écriture du fichier indexé sur disque après son utilisation en mémoire. Ajout d’enregistrements Effacement d’enregistrements Mise a jour d’enregistrements

9 9 Création, montage et re-écriture L’indexe est representé par un tableau d’enregistrements. Le montage en mémoire peut être fait séquentiellement en lisant un large nombre d’enregistrements d’indexe (qui sont petits) d’un seul coup. Que se passe-t-il lorsque l’indexe a été modifié en mémoire mais sa re-écriture sur disque n’a pas encore été faite? On peut utiliser un mécanisme pour indiquer si l’indexe est à jour ou non: “status flag” dans un “header”. On doit avoir une procédure qui reconstruit l’indexe (à partir du fichier de données) s’il n’est pas à jour.

10 10 Addition d’enregistrements Lorsqu’on ajoute un enregistrement, aussi bien le fichier de données que le fichier contenant l’indexe doivent être mis à jour. Dans le fichier de données, l’enregistrement peut être ajoute n’importe où. Cependant, la position relative (byte offset) du nouvel enregistrement dans le fichier doit être retenue. Puisque l’indexe est trié, la location du nouvel enregistrement est importante dans l’indexe: il faut décaler tous les enregistrements apparaissant après celui que l’on insère afin de donner de la place au nouvel enregistrement. Cependant, cette opération n’est pas couteuse car elle prend place en mémoire.

11 11 Effacement d’enregistrements L’effacement d’enregistrements peut être fait en utilisant les techniques discutées auparavant dans le cours. De plus, cependant, l’enregistrement d’indexe correspondant à l’enregistrement de données effacé doit aussi être effacé. Encore une fois, puisque cet effacement prend place en mémoire, le décalage d’enregistrement n’est pas trop couteux.

12 12 Mise à jour d’enregistrements Il y a 2 categories de mises à jour: La mise à jour change la valeur du champ clé. La mise à jour n’affecte pas le champ clé. Dans le premier cas, aussi bien le fichier d’indexe que le fichier de données peut necessiter le re-tri. Note: La mise à jour peut être conçue comme un effacement suivi d’une insertion sansque l’utilisateur n’ait besoin de le savoir. Dans le second cas, l’indexe n’a pas besoin d’être re- trié, mais le fichier peut en avoir besoin. Si l’enregistrement mis à jour est plus petit que l’enregistrement original, il peut-être re-écrit au même endroit. Si, par contre, il est plus grand, un nouvel endroit doit être trouvé.

13 13 Indexes excédant la taille de la mémoire problèmes: (en utilisant la méthode précédante) La recherche binaire sur disque demande plusieurs seeks et n’est pas plus rapide que la recherche binaire d’un fichier de données trié. Le re-arrangement de l’indexe demande le décallage ou le triage de données sur le stockage secondaire. Ceci prend beaucoup de temps. Solutions: (à venir) Utilisation d’une organisation en Hashcoding Utilisation d’un indexe organise dans une structure d’arbre (example: un Arbre-B)

14 14 Indexes exédant la taille de la mémoire Les indexes simples, cependant, ne doivent pas être complètement abandonnés même s’ils sont trop grand pour tenir en mémoire:  Ils permettent l’accès multiple aux données.

15 15 Les indexes à clés multiples Les indexes construits précedemment nous permettent seulement l’accès par clé, mais ne nous permet pas de trouver directement un titre par exemple.  Les indexes à clé simple ne sont pas tres utiles dans ce cas. Il faudrait avoir d’autres clés secondaires telles que: le titre du disque, le composeur, l’interprète. Bien qu’il serait possible de lier ces clés secondaires à une position relative (byte offset) dans le fichier de données, ceci n’est habituellement pas la solution choisie (on verra pourquoi). On lie plutôt la clé secondaire à une clé primaire qui, elle, pointera directement à la position relative dans le fichier des données.

16 16 Addition d’enregistrement dans un Indexe à clés multiples Lorsqu’une clé secondaire est utilisée, ajouter un enregistrement demande la mise à jour du fichier de données, de l’indexe primaire et de l’indexe secondaire. La mise à jour de l’indexe secondaire est similaire à celle de l’indexe primaire. Les clés secondaires sont exprimées en lettres majuscules. La forme minuscule/majuscule doit être obtenue du fichier des données. De plus, à cause de restrictions sur la longueur des clés, les clés secondaires peuvent parfois être tronquées. L’indexe secondaire peut contenir des enregistrements dupliqués (l’indexe primaire ne le peut pas!

17 17 Effacement d’enregistrements dans un indexe à clés multiples Effacer un enregistrement du fichier de données correspond à effacer sa clé dans l’indexe primaire et peut vouloir dire effacer toutes les clés pointant à la clé primaire dans les indexes secondaires. Cependant, il est aussi possible de ne pas s’inquieter des indexes secondaire  Cette solution est moins couteuse car on n’a pas besoin de re-arranger les indexes secondaires. Néanmoins, il y a d’autre coûts associés à cette solution (les quels?).

18 18 Mise à Jour d’enregistrements dans un indexe à clés multiples Trois situations sont possibles. La mise a jour concerne les clés secondaire: il se peut qu’il fasse re-arranger l’index secondaire. La mise à jour concerne les clés primaires: des changements sont requis dans l’indexe primaire, mais très peu dans l’indexe secondaire. La mise à jour concerne d’autres champs: aucun changement n’est requis dans l’indexe primaire ou secondaire.

19 19 Recherche en utilisant une combinaison de clés secondaires Avec des clés secondaires, on peut chercher tous les disques de Beethoven ou tous les disques intitulés “Concerto pour Violon”. Encore plus important, on peut utiliser des combinaisons de clés secondaires (example: cherche tous les disques interpretant la 9ème Symphonie de Beethoven). Si nous n’avions pas de clés secondaires, une telle requété serait très couteuse car elle demanderait une recherche séquentielle de tout le fichier de données. Avec des clés secondaires, cette requête est facile et rapide à executer.

20 20 Ameliorer la structure de l’indexe secondaire: le problème Les indexes secondaires amènent deux difficultés: Le ficher contenant l’indexe doit être re-arrangé à chaque fois qu’un nouvel enregistrement est ajouté au fichier. S’il y a des clés secondaires dupliquées, le champ de la clé secondaire est repété pour chaque enregistrement  De l’espace est gaspillé.

21 21 Ameliorer la structure de l’indexe secondaire: Solution 1 Méthode: On peut changer la structure secondaire de facon a ce qu’elle associe un tableau de références a chaque clé secondaire. Avantage: Ceci permet d’eviter la necessite de re- arranger le fichier contennant l’indexe trop souvent. Désavantages: Cela peut restreindre le nombre de références associees à chaque clé secondaire. Cela peut coser de la fragmentation interne, et donc, gaspiller de l’espace

22 22 Améliorer la structure de l’indexe secondaire: Solution 2 Methode: Chaque clé secondaire pointe vers une liste differente de clés primaires (“inverted list”). Chacunes de ces listes peut s’aggrandir autant que nécessaire et aucun espace n’est perdu à la fragmentation interne. Avantages: L’indexe secondaire n’a besoin d’être re-arangé qu’au moment d’une addition d’enregistrement. Le re-arrangement est plus rapide. Il n‘est pas très couteux de sauvegarder l’indexe secondaire sur le disque. L’indexe primaire n’a jamais besoin d’être trié. L’espace d’une clé primaire effacée peut être facilement re-utilisé. Désavantage: La localité (dans l’indexe secondaire) a été perdue  Il faudra peut-être faire plus de seeking.

23 23 Indexes sélectifs Lorsque vous utilisez des clés secondaires, vous pouvez diviser le fichier en plusieures parties et, ce faisant, fournir des vues sélectives des données. Par example, vous pouvez construire un indexe sélectif qui ne contient que les titres de disques de musique classique, ou de disques apparus avant 1970 ou après 1970. Une demande possible pourrait ainsi être:“Donner une liste de tous les disques de la 9ème Symphonie de Beethoven apparus après 1970.

24 24 Attachement Question: à quel moment une clé est-elle attachée à l’addresse physique de l’enregistrement auquel elle correspond? Réponse jusqu’à maintenant: l’attachement de nos clés primaires prend place au moment de leur construction. L’attachement de nos clés secondaires prend place au moment de leur utilisation. Avantage de l’attachement au moment de la construction: un accès plus rapide. Desavantage de l’attachement au moment de la construction: la réorganisation du fichier de données doit resulter en une modification de tous les indexes déjà attachés. Avantages de l’attachement au moment de l’utilisation: moins risqué.

25 25 Attachement (suite) Choix dans les décisions sur l’attachement Un attachement rigoureux au moment de la construction est préferable lorsque: le fichier de données est statique ou presque statique, ne demandant que peu ou pas d’ajouts d’effacements et de mises à jour. Une performance rapide pendant la recherche est une grande priorité. Retarder l’attachement aussi longtemps que possible est plus simple et moins risqué lorsque le fichier de données demande beaucoup d’ajouts, d’effacements et de mises à jour.


Télécharger ppt "Gestion de Fichiers Construction d’Indexes. 2 Plan du cours de la semaine Vue Générale Un indexe pour les fichiers à entrées séquentielles Opérations."

Présentations similaires


Annonces Google