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.

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

Module Systèmes d’exploitation
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : Introduction
Chap. 4 Recherche en Table
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Structure des systèmes dexploitation (Tanenbaum 1.7)
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
GEF 435 Principes des systèmes d’exploitation
Introduction Pour concrétiser l’enseignement assisté par ordinateur
Collecte de données F. Kohler.
Cours Présenté par …………..
12 novembre 2012 Grégory Petit
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Utilisation des tableaux
Principes de programmation (suite)
Créer une animation simple Gif avec ImageReady.
Créer un index.
Lutilisation de la Cloudwatt-box Emmanuel Keller, CTO OpenSearchServer.
Gestion de Fichiers GF-15: Addressage Disperse (Hashcoding) (Base sur le Chapitre 11 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented.
Groupe 1: Classes de même intervalle
Publispostage Menu Outils / Lettres et publipostage
Gestion de Fichiers Arbres B.
Indexation 1. Concepts de base 2. Arbre B 3. Indexes secondaires.
Sections sélectionnées du Chapitre 11
Les fichiers indexés (Les B-arbres)
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.
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Structures de données IFT-10541
Stockage Secondaire: Disques
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
Introduction et Motivation
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Gestion de Fichiers Hachage Extensible.
Gestion de Fichiers GF-1: Introduction à la Géstion des Fichiers et Opérations de Base.
1 Survol du Stockage et de lIndexage Chapitre 8. 2 Objectifs Stockage persistant Organisation des fichiers Fichiers de données Fichiers dindexes Operations.
Formation Movie-Maker C.A.H.M Présentation Movie-Maker permet de faire un montage vidéo. Il est possible de lire dans la section "Conseils.
Gestion de Fichiers Hachage (suite). 2 Plan du cours daujourdhui Prédiction de la distribution des enregistrements Réduction des collisions en augmentant.
Organisation des Fichiers pour la Performance
Gestion de Fichiers GF-12: Comment Gerer les Indexes qui ne tiennent pas en Memoire de Maniere Efficace?: I. Indexes Bases sur les Structures dArbres Binaires.
Gestion de Fichiers GF-5: Storage Secondaire: Bandes Magnetiques (Base sur Chapitres 3 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented.
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,
Gestion de Fichiers GF-3: Structures d’Enregistrements, Acces Sequentiel et Direct, Manipulation de classes en C++ (Base sur des segments des Chapitres.
Gestion de Fichiers GF-14: Acces Sequentiel et Indexe aux Fichiers et Arbres B+ Prefixes (Base sur le Chapitre 10 de Folk, Zoellick & Riccardi, File Structures,
Gestion de Fichiers GF-9: Construction d’Indexes (Base sur le Chapitre 7 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented Approach with.
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Initiation aux bases de données
Programmation linéaire en nombres entiers
Gestion de Fichiers GF-8: Organisation des Fichiers pour l’Amelioration de la Performance (Base sur la section de Folk, Zoellick & Riccardi, File.
Que sont les fichiers de mobilité de l’INSEE?
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
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
Les fichiers 1ère partie
GF-4: Storage Secondaire: Disques
1 Survol du Stockage et de l’Indexage Chapitre 8.
Les vues Une vue: c’est une relation virtuelle. Définie par:
Structures de données avancées : Variantes des B arbres
L T I Laboratoire de Téléinformatique 2 Projet de semestre Parseur XML basé sur la DTD : Buts –Utiliser la grammaire définissant un type de fichiers XML.
Structures de données avancées : Principales structures de fichiers
06/04/06 LES BASES DE DONNEES INTRODUCTION CogniTIC – Bruxelles Formation - Cepegra.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Matière Sélectionnée: Triage Externe, Join à Hachage, … Chapitres 13—15: 13.1—13.5, 14.4,
CONSTRUCTION DE TABLEAUX CROISES SUR LE LOGICIEL MODALISA MET4 – Avril 2005.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
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.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
Transcription de la présentation:

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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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.