1 / 17

Gestion de Fichiers

Gestion de Fichiers. Accès Séquentiel Indexé aux Fichiers et Arbres B+ Préfixes. Accès séquentiel indexé. Jusqu’à maintenant, on a du choisir entre une vue indexée ou séquentielle du fichier.

Download Presentation

Gestion de Fichiers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Gestion de Fichiers Accès Séquentiel Indexé aux Fichiers et Arbres B+ Préfixes

  2. Accès séquentiel indexé • Jusqu’à maintenant, on a du choisir entre une vue indexée ou séquentielle du fichier. • Pourrait-on trouver une seule méthode de gestion de fichiers qui combine ces deux vues simultanément? • Pourquoi demander ces deux vues simultanément? Parce que si une application exige aussi bien un accès interactif au hasard qu’un traitement co-séquentiel en mode batch, ces deux actions doivent être executées de manière efficace. (Exemple: une base de données d’etudiants dans une université exige souvent les deux modes d’accès)

  3. Comment maintenir un “sequence set”: utilisation de blocs • Un “sequence set”est un ensemble d’enregistrements ordonné par valeur de clé et qui reste ordonné au fur et à mesure que des enregistrements sont ajoutés et effacés. • Puisque le triage et le re-triage d’un “sequence set” tout entier au fur et à mesure que des enregistrements sont ajoutés et effacés est très couteux, nous cherchons d’autres stratégies. En particulier on essaie de trouver un moyen de localiser les changements. • L’idée est d’utiliser des blocs qui peuvent être lus en mémoire et rearrangés rapidement. Comme dans les arbres B, ces blocs peuvent être divisés, fusionnés ou leurs enregistrements re-distribués si nécessaire.

  4. Comment maintenir un “sequence set”: utilisation de Blocs (suite) • En utilisant des blocs, on peut garder un “sequence set” en ordre par valeur de clés sans jamais avoir besoin de re-trier l’ensemble entier d’enregistrements. • Les blocs sont reliés à la manière des listes chainées. • Cependant il y a des coûts associés à cette approche: • Un fichier à blocs prend plus d’espace qu’un fichier sans bloc à cause de la fragmentation interne. • L’ordre des enregistrements ne suit pas nécessairement la séquence physique partout dans le fichier. Le montant maximum garantie de sequentialité physique est à l’interieur d’un bloc (Figure 10.1).

  5. Comment maintenir un “sequence set”: utilisation de blocs (suite) • Un aspect important dans l’utilisation de blocs est le choix d’une taille de blocs. Il y a deux considérations à prendre en compte dans le choix de cette taille: • La taille de bloc doit être telle que l’on peut garder plusieurs blocs en mémoire en même temps. • La taille de bloc doit être telle que l’on peut acceder à un bloc sans avoir besoin d’un “seek” (supplémentaire) sur disque pendant l’opération de lecture ou d’écriture du bloc.

  6. Ajout d’un indexe simple au “sequence set” • Chaque bloc créé pour un “sequence set” contient une succession d’enregistrements qui peut contenir l’enregistrement qui nous intéresse. • On peut construire un indexe simple d’un seul niveau pour ces blocs (Figures 10.2, 10.3). • Une combinaison d’indexe de ce type avec le “sequence set” de blocs nous donne un accès séquentiel indexé complet. Cette méthode fonctionne bien si l’indexe peut tenir en mémoire. • Si l’indexe ne peut pas complètement tenir en mémoire, on peut utiliser un arbre B+, i.e. un indexe à structure d’arbre B plus un “sequence set” qui contient les enregistrements.

  7. Le contenu de l’indexe du “sequence set”: séparateurs plutôt que clés • L’indexe réprésente une sorte de guide (“road map”) pour le “sequence set”  Il n’est pas nécessaire d’avoir les clés dans l’indexe. • Ce dont on a vraiment besoin est un ensemble de séparateurs capable de discriminer entre deux blocs. • On peut épargner de l’espace en utilisant des séparateurs à longueur variable et en plaçant le plus petit séparateur dans la structure d’indexe. • Le séparateur entre deux blocs B1 et B2 est le plus petit préfix de la plus petite clé de B2 qui ne soit pas préfixe de la plus grande clé de B1.

  8. Un arbre B+ préfixe simple • Les séparateurs peuvent être organisés en un arbre B représentant l’indexe du “sequence set” des blocs. Cet arbre B s’appelle alors ”index set”. • Pris ensemble avec le “sequence set”, l’”index set” forme une structure de fichiers appelée un arbre B+ préfixe simple. • “Préfixe simple” indique que l’”index set” contient les plus petit séparateurs, en d’autres termes, le préfixe des clés plutôt que des copies des clés complètes. • Un arbre B+ préfixe simple d’ordre N a N séparateurs et N+1 descendants par noeud.

  9. Arbre B+ préfixe simple: maintenance • Pour les mises à jour localisées à un seul bloc dans le “sequence set”: faire les changements dans le “sequence set” et dans l’”index set”. • Pour les mises à jour incluant plusieurs blocs dans le “sequence set”: • Si les blocs sont divisés dans le “sequence set”, un nouveau séparateur doit être inserré dans l’”index set”. • Si les blocs sont fusionnés dans le “sequence set”, un séparateur doit être effacé de l’”index set”. • Si les enregistrements sont re-distribués entre les blocs d’un “sequence set”, la valeur de séparateurs dans l’”index set” doit être changée.

  10. Taille d’un bloc dans l’”index set” • La taille physique d’un noeud dans l’index set” est typiquement la même que celle d’un bloc dans le “sequence set”. Dans ce cas on parle de blocs d’indexes plutot que de noeuds. • Il y a plusieurs raisons pour utiliser une taille de bloc commune au “sequence set” et l’”index set”: • La taille d’un bloc est souvent choisie en relation avec les caracteristiques de l’unité de disque et le montant de mémoire disponible. • Une taille de bloc commune rend la création d’un traitement par mémoire tampon plus facile à implementer dans le cas d’un arbre B+ préfixe simple virtuel. • Les blocs d’indexe et de séquence sont souvent melangés dans le même fichier afin d’éviter l’accès à deux fichiers differents pendant le traitement.

  11. La structure interne des blocs de l’”index set”: un arbre B à ordre variable • Etant donne un grand bloc a taille fixe dans l’”index set”, comment peut-on sauvegarder les séparateurs dans ce bloc? • Il y a de nombreuses facons de combiner la liste de séparateurs, l’indexe des séparateurs et la liste de” Numeros de Blocs Relatifs” (NBR) dans un seul bloc de l’”index set”. • Une approche possible est d’inclure un compteur de séparateurs et de garder un compteur de la longueur totale des séparateurs.

  12. Amener un arbre B+ préfixe simple en mémoire • Une serie d’insertions successives n’est pas une bonne méthode car la division de blocs et leur re-distribution sont assez couteuses et ne devraient être faites que pour la mise à jour. • Si on part d’un fichier triée, cependant, on peut placer les enregistrements dans des blocs de “sequence set”, créant un nouveau bloc dès que celui que l’on est en train de remplir est plein. Lorsque l’on fait la transition d’un bloc à l’autre, on peut déterminer le séparateur minimal de ces deux blocs. On peut mettre tous ces séparateurs dans un bloc d’”index set” que l’on construit et retient en mémoire jusqu’à ce qu’il soit plein.

  13. Amener un arbre B+ préfixe simple en mémoire (suite) • Les avantages de cette technique pour amener un arbre B+ prefixe simple en mémoire sont presque toujours plus grands que les désavantages associés à la possibilité de créer des blocs contenant trop peu d’enregistrements ou trop peu de séparateurs. • Un avantage particulier est que ce processus va plus rapidement car: • Le résultat peut être écrit séquentiellement; • On n’a besoin de consulter les données qu’une seule fois; • Aucun bloc n’a besoin d’être re-organisé. • Les avantages une fois que l’arbre est en mémoire: • Les blocs sont plein a 100% • Comme l’arbre est amené en mémoire séquentiellement, un certain degré de localisation spatiale dans le fichier est créé  le “seeking” peut être minimisé.

  14. Arbres B+ • La différence entre un arbre B+ préfixe simple et un arbre B+ est que l’arbre B+ n’utilise pas de préfixes comme séparateurs. Dans l’arbre B+, les séparateurs sont des copies de clés. • Les arbres B+ préfixes simples sont souvent plus désirables que les arbre B+ car les séparateurs préfixes prennent moins de place que les clés complètes. • Les arbres B+, cependant, sont parfois plus désirables car ils ne demandent pas de champs de séparateurs à taille variable et certaines clés ne sont pas toujours facile à comprimer de manière effective.

  15. Arbres B, arbres B+ et arbres B+ préfixes simples en perspective • Les arbres B et B+ ne sont pas les seuls outils utiles pour la conception des structures de fichiers. Les indexes simples sont utiles lorsqu’ils peuvent tenir en mémoire et le hashing peut permettre un accès beaucoup plus rapide que les arbres B et B+. • Caracteristiques communes aux arbres B, B+ et B+ préfixes simples: • Structure d’indexes paginées  Arbres large et bas • Arbres à taille balancée (“height-balanced”) • Les arbres sont construits de bas en haut et les opérations utilisées sont: division, fusion, et re-distribution des blocs. • Division deux-trois et redistribution peuvent étre utilisées pour ameliorer l’efficacité du stockage. • Ils peuvent être implementés virtuellement. • Ils peuvent être adaptés pour enregistrements à longueur variable.

  16. Arbres B, arbres B+ et arbres B+ préfixes simples en erspective (suite) • Différence entre ces structures d’arbres: • Arbres B: indexes à niveaux multiples pour fichiers non-tries. Aspects Positifs: simplicité de l’implémentation; aspects négatifs: trop de “seeking” est nécessaires pour l’accès séquentiel. • Arbres B avec information associée: Ces arbres sont des arbres B qui contiennent le contenu des enregistrements à chaque niveau de l’arbre. Aspect positif: peuvent épargner de l’espace; aspect négatif: ne fonctionne que lorsque l’information sur l’enregistrement est localisée dans l’arbre B. sinon, trop de “seeking” est nécessaire pour récuperer l’information sur cet enregistrement.

  17. Arbres B, arbres B+ et arbres B+ préfixes simples en perspective (suite) • Arbres B+: toutes les informations sur la clé et l’enregistrement est contenue dans un ensemble de blocs chainés appelé le “sequence set”. Un accès indexé est disponible grâce à l’”index set”. Avantages par rapport aux arbres B: le “sequence set” peut être traité de manière linéaire et séquentielle à la fois; l’indexe est construit avec une seule clé ou séparateur par bloc d’enregistrements plutôt qu’avec une seule clé par enregistrement  l’indexe est plus petit et donc moins profond. • Arbres B+ préfixes simples: les séparateurs de l’”index set” sont plus petits que les clés du “sequence set”  l’arbre est encore plus petit.

More Related