Gestion de Fichiers - PowerPoint PPT Presentation

About This Presentation
Title:

Gestion de Fichiers

Description:

Lorsqu'on ajoute un enregistrement, aussi bien le fichier de donnees que le ... Dans le fichier de donnees, l'enregistrement peut etre ajoute n'importe ou. ... – PowerPoint PPT presentation

Number of Views:47
Avg rating:3.0/5.0
Slides: 26
Provided by: nat1151
Category:

less

Transcript and Presenter's Notes

Title: Gestion de Fichiers


1
Gestion de Fichiers
  • GF-9 Construction dIndexes
  • (Base sur le Chapitre 7 de Folk, Zoellick
    Riccardi, File Structures, An Object-Oriented
    Approach with C)

2
Resume du Cours de cette semaine
  • Vue Generale
  • Un indexe pour les fichiers a entrees
    sequentielles
  • Operations de base sur les fichiers indexes a
    entrees sequentielles
  • Indexes trop grands pour tenir en memoire
  • Indexer un fichier avec plusieures cles ? Indexes
    Secondaires.
  • Ameliorer la structure des indexes secondaires.
  • Indexes Selectifs
  • Attachement des indexes aux locations physiques

3
Vue Generale
  • Un index est une table contenant une liste de
    cles associees a un champ de reference pointant
    vers lenregistrement dans lequel linformation
    referenciee par la cle peut etre trouvee.
  • Un index vous permet dimposer de lordre dans
    votre fichier sans avoir besoin de le
    re-arranger.
  • Un index simple est tout simplement un tableau
    dont les elements sont les paires (cle,
    reference).
  • Il est possible davoir plusieurs indexes pour
    les memes donnees donnees aux acces multiples.
  • La construction dindexes nous donne la
    possibilite dacceder a des fichiers
    denregistrements de longueur variable par cle.

4
Un Indexe Simple pour les Fichiers aux
Entrees Sequentielles I
  • Nous allons travailler avec une collection
    denregistrements de disques (musicaux, cette
    fois!) et contenant les informations suivantes
  • Numero didentification du disque
  • Titre
  • Compositeur(s)
  • Interprete(s)
  • Label de la maison dedition

5
Un Indexe Simple pour les Fichiers aux
Entrees Sequentielles II
  • Nous choisissons dorganiser le fichier en une
    serie denregistrements a longueur variable avec
    un indicateur de longueur, avant chaque
    enregistrement. Les champs de chaque
    enregistrement ont aussi des longueurs variables
    mais ils sont separes par des delimitateurs.
  • Nous formons une cle primaire en concatenant le
    code de label de la maison dedition avec le
    numero didentification du disque. Ceci devrait
    former un identificateur unique.

6
Un Indexe Simple pour les Fichiers aux
Entrees Sequentielles III
  • De facon a obtenir un acces par cle rapide, nous
    creons un indexe simple avec un champ cle,
    associe a un champ reference, qui indique
    laddresse du premier octet de lenregistrement
    de donnees correspondant.
  • Lindexe peut etre trie alors que le fichier na
    pas besoin de letre. Cela veut dire que le
    fichier de donnees peut avoir des entrees
    sequentielles les enregistrements apparaissent
    dans lordre dans lequel ils ont ete ajoute au
    fichier de donnees.

7
Un Indexe Simple pour les Fichiers aux
Entrees Sequentielles IV
  • Quelques commentaires sur notre organisation
    dindexe
  • Lindexe est plus facile a utiliser que le
    fichier de donnees car 1) il utilise des
    enregistrements a taille fixe et 2) il est
    surement plus petit que le fichier de donnees.
  • En forcant le fichier indexe a avoir des
    enregistrements a taille fixe, on impose une
    limite sur la taille duchamp contenant la cle
    primaire. Ceci peut creer des problemes.
  • Lindexe pourrait contenir plus dinformation que
    la cle et la reference. (example on pourrait
    egalement retenir la longueur de chaque
    enregistrement dans lindexe).

8
Operations de Base sur un fichier a entrees
sequentielles
  • Supposition Lindex est assez petit pour etre
    sauvegarde en memoire. Un peu plus tard, nous
    verrons ce qui peut etre fait lorsque cela nest
    pas le cas.
  • Creation des fichiers dindexe et de donnees
  • Montage de lindexe en memoire avant son
    utilisation.
  • Re-ecriture du fichier indexe sur disque apres
    son utilisation en memoire.
  • Ajout denregistrements
  • Effacement denregistrements
  • Mise a jour denregistrements

9
Creation, Montage et Re-ecriture
  • Lindexe est represente par un tableau
    denregistrements. Le montage en memoire peut
    donc etre fait sequentiellement en lisant un
    large nombre denregistrements dindexe (qui sont
    petits) dun seul coup.
  • Que se passe-t-il lorsque lindexe a ete modifie
    en memoire mais sa re-ecriture sur disque na pas
    encore ete faite?
  • On peut utiliser un mecanisme pour indiquer si
    lindexe est a jour ou non.
  • On peut avoir une procedure qui reconstruit
    lindexe a partir du fichier de donnees au cas ou
    il nest pas a jour.

10
Addition dEnregistrements
  • Lorsquon ajoute un enregistrement, aussi bien le
    fichier de donnees que le fichier contenant
    lindexe doivent etre mis a jour.
  • Dans le fichier de donnees, lenregistrement peut
    etre ajoute nimporte ou. Cependant, la position
    relative (byte offset) du nouvel enregistrement
    dans le fichier doit etre retenue.
  • Puisque lindexe est trie, la location du nouvel
    enregistrement est importante dans lindexe il
    faut decaler tous les enregistrements
    apparaissant apres celui que lon insere afin de
    donner de la place au nouvel enregistrement.
    Cependant, cette operation nest pas trop
    couteuse puisquelle prend place en memoire.

11
Effacement dEnregistrements
  • Leffacement denregistrements peut etre fait en
    utilisant les techniques discutees dans les notes
    gf-8.
  • De plus, cependant, lenregistrement dindexe
    correspondant a lenregistrement de donnees
    efface doit aussi etre efface. Encore une fois,
    puisque cet effacement prend place en memoire, le
    decalage denregistrement nest pas trop couteux.

12
Mise a Jour dEnregistrements
  • Il y a 2 categories de mises a jour
  • La mise a jour change la valeur du champ cle.
  • La mise a jour naffecte pas le champ cle.
  • Dans le premier cas, aussi bien le fichier
    dindexe que le fichier de donnees peut
    necessiter le re-tri. Note La mise a jour est
    facile a conceptualiser si elle est concue en un
    effacement suivi dune insertion (mais
    lutilisateur na pas besoin de le savoir).
  • Dans le second cas, lindexe na pas besoin
    detre re-trie, mais le fichier peut en avoir
    besoin. Si lenregistrement mis a jour est plus
    petit que lenregistrement original, il peut-etre
    re-ecrit au meme endroit. Si, par contre, il est
    plus grand un nouvel endroit doit etre trouve
    (encore une fois, une solution effacement/insertio
    n peut etre utilisee.

13
Indexes trop grands pour Tenir en Memoire I
  • Problemes
  • La recherche binaire demande plusieurs seeks
    plutot que detre performee a la vitesse de la
    memoire.
  • Le re-arrangement de lindexe demande le
    decallage ou le triage de donnees sur lunite de
    storage secondaire ? Ceci est tres couteux (vis a
    vis du temps requis).
  • Solutions
  • Utilisation dune organisation en Hashcoding
  • Utilisation dun indexe organise dans une
    structure darbre (example un Arbre-B)

14
Indexes trop grands pour Tenir en Memoire II
  • Les indexes simples, cependant, ne doivent pas
    etre completement abandonnes meme sils sont trop
    grand pour tenir en memoire
  • Ils permettent lacces multiple aux donnees.

15
Les Indexes a Cles Multiples
  • Les indexes construits precedemment nous
    permettent seulement lacces par cle ils nous
    permettent de retrouver le disque DG188807, mais
    on na pas la possibilite de trouver la 9eme
    Symhonie de Beethoven ? Les indexes a cle simple
    ne sont pas tres utiles!
  • Il faudrait avoir dautres cles secondaires
    telles que le titre du disque, le composeur,
    linterprete.
  • Bien quil serait possible de lier ces cles
    secndaires a une position relative (byte offset)
    dans le fichier de donnees, ceci nest
    habituellement pas la solution choisie (nous
    verrons pourquoi dans un moment). On choisit
    plutot de lier la cle secondaire a une cle
    primaire qui, elle, pointera directement a la
    position relative dans le fichier des donnees.

16
Addition sEnregistrement dans un Indexe a cles
multiples
  • Lorsquune cle secondaire est utilisee, ajouter
    un enregistrement demande la mise a jour du
    fichier de donnees, de lindexe primaire et de
    lindexe secondaire. La mise a jour de lindexe
    secondaire est similaire a celle de lindexe
    primaire.
  • Les cles secondaires sont exprimees en lettres
    majuscules. La forme minuscule/majuscule doit
    etre obtenue du fichier des donnees. De plus, a
    cause de restrictions sur la longueur des cles,
    les cles secondaires peuvent parfois etre
    tronquees.
  • Lindexe secondaire peut contenir des
    enregistrements dupliques (lindexe primaire ne
    le peut pas!

17
Effacement dEnregistrements dans un indexe a
cles multiples
  • Effacer un enregistrement du fichier de donnees
    correspond a effacer sa cle dans lindexe
    primaire et peut vouloir dire effacer toutes les
    cles pointant a la cle primaire dans les indexes
    secondaires.
  • Cependant, il est aussi possible de ne pas
    sinquieter des indexes secondaire ? Cette
    solution est moins couteuse car on na pas besoin
    de re-arranger les indexes secondaires.
  • Neanmoins, il y a dautre couts associes a cette
    solution.

18
Mise a Jour dEnregistrements dans un Indexe a
cles multiples
  • Trois situations sont possibles.
  • La mise a jour concerne les cles secondaire il
    se peut quil fasse re-arranger lindex
    secondaire.
  • La mise a jour concerne les cles primaires des
    changements sont requis de lindexe primaire,
    mais tres peu de lindexe secondaire.
  • La mise a jour concerne dautres champs aucun
    changement nest requis de lindexe primaire ou
    secondaire.

19
Recherche en utilisant une combinaison de cles
secondaires
  • Avec des cles secondaires, on peut chercher tous
    les disques de Beethoven ou tous les disques
    intitules Concerto pour Violon.
  • Encore plus important, on peut utiliser des
    combinaisons de cles secondaires (example
    cherche tous les disques interpretant la 9eme
    Symphonie de Beethoven).
  • Si nous navions pas de cles secondaires, une
    telle requete serait tres couteuse car elle
    demanderait une recherche sequentielle de tout le
    fichier de donnees. Avec des cles secondaires,
    cette requete et facile et rapide a executer.

20
Ameliorer la structure de lindexe
secondaire I le Probleme
  • Les indexes secondaires amenent deux diffixultes
  • Le ficher contenant lindexe doit etre re-arrange
    a chaque fois quun nouvel enregistrement est
    ajoute au fichier
  • Sil y a des cles secondaires dupliquees, le
    champ de la cle secondaire est repete pour chaque
    enregistrement ? De lespace est gaspille.

21
Ameliorer la structure de lindexe
secondaire II Solution 1
  • Solution 1 On peut changer la structure
    secondaire de facon a ce quelle associe un
    tableau de references a chaque cle secondaire.
  • Avantage Ceci permet deviter la necessite de
    re-arranger le fichier contennant lindexe trop
    souvent.
  • Desavantages
  • Cela peut restreindre le nombre de references
    associees a chaque cle secondaire.
  • Cela peut coser de la fragmentation interne, et
    donc, gaspiller de lespace

22
Ameliorer la structure de lindexe
secondaire III Solution 2
  • Methode Chaque cle secondaire pointe vers une
    liste differente de cles primaires. Chacunes de
    ces listes peut saggrandir autant que necessaire
    et aucun espace nest perdu a la fragmentation
    interne.
  • Avantages
  • Lindexe secondaire na besoin detre re-arange
    quau moment dune addition denregistrement.
  • Le re-arrangement est plus rapide.
  • Il nest pas tres couteux de sauvegarder lindexe
    secondaire sur le disque.
  • Lindexe primaire na jamais besoin detre trie.
  • Lespace dune cle primaire effacee peut etre
    facilement re-utilise.
  • Desavantage
  • La localite (dans lindexe secondaire) a ete
    perdue ? Il faudra peut-etre faire plus de
    seeking.

23
Indexes Selectifs
  • Lorsque vous utilisez des cles secondaires, vous
    pouvez diviser le fichier en plusieures parties
    et, ce faisant, fournir des vues selectives des
    donnees.
  • Par example, vous pouvez construire un indexe
    selectif qui ne contient que les titres de
    disques de musique classique, ou de disques
    apparus avant 1970 ou apres 1970.
  • Une demande possible pourrait ainsi etreDonner
    une liste de tous les disques de la 9eme
    Symphonie de Beethoven apparus apres 1970.

24
Attachement I
  • Question A quel moment une cle est-elle attachee
    a laddresse physique de lenregistrement duquel
    elle correspond?
  • Reponse jusqua maintenant Lattachement de nos
    cles primaires prend place au moment de la
    construction. Lattachement de nos cles
    secondaires prend place au moment ou elles sont
    utilisees.
  • Avantage de lattachement au moment de la
    construction Un acces plus rapide.
  • Desavantage de lattachement au moment de la
    construction la reorganisation du fichier de
    donnees doit resulter en une modification de tous
    les indexes deja attaches.
  • Avantages de lattachement au moment de
    lutilisation moins risque

25
Attachement II
  • Choix dans les decisions sur lattachement
  • Un attachement rigoureux au moment de la
    construction est preferable lorsque
  • le fichier de donnees est statique ou presque
    statique, ne demandant que peu ou pas dajouts
    deffacements et de mises a jour.
  • Une performance rapide pendant la recherche est
    une grande priorite.
  • Retarder lattachement aussi longtemps que
    possible est plus simple et moins risque lorsque
    le fichier de donnees demande beaucoup dajouts,
    deffacements et de mises a jour.
Write a Comment
User Comments (0)
About PowerShow.com