-
Fichier table d'indexe
Bonjour ,
J'ai lu une série de sujet à propos des fichiers , autre l'accès séquentiel , l'accès direct ou séquentiel-indexé.
J'ai aussi vu qu'il existait une technique ( ou des ) pour les fichiers comme la création d'une table d'indexe mais je ne vois pas de quoi il s'agit et je trouve peu d'information.
Si quelqu'un pourrait m'expliquer ou me donner des exemples de cas ou on fait appèle à ça.
Merci d'avance.
-
Une table d'indexes (sous la forme d'un fichier supplémentaire OU intégrée au début du fichier que tu traites) te permet de connaître la position des enregistrements dans le fichier.
Je prends l'exemple d'un bête fichier texte.
Pour lire la n-ième ligne, tu n'as pas d'autre choix que de lire les n-1 premières (car les lignes sont à priori de longueur variable) et de lire, enfin, la ligne que tu veux. Si tu avais un moyen de savoir que la n-ième ligne se situe à tel ou tel offset, tu pourrais te positionner directement à cet endroit (un fseek bien senti) et ne lire que ce que tu veux.
Une table d'indexes associée pourrait être créée en même temps que le fichier et mémoriser l'offset de chaque début de ligne.
ligne 1 : offset 0
ligne 2 : offset 53
ligne 3 : offset 55
etc ...
Le premier exemple qui me vient à l'esprit, pour un format "assez" répandu, est le format shapefile. Ces fichiers contiennent des objets géographiques (points,arcs,polygones,etc...). Chaque objet (hormis les points) a plus ou moins de points/coordonnées et les enregistrements sont de taille variable. Tu as 2 fichiers d'extensions différentes (.shp et .shx). Le premier contient tes objets. Le second donne, pour chacun des objets, l'offset du début de l'enregistrement correspondant dans le premier fichier.
Pour ce format, tu dois donc gérer 2 fichiers ce qui peut parfois être un peu pénible. Tu dois, notamment, toujours "trimballer" tes fichiers ensemble (copie, déplacement, ...).
Dans bien d'autres cas, les fichiers peuvent contenir, au début, dans l'entête, ce type d'information afin d'exploiter les données/enregistrements écrits plus loin.
Là, l'inconvénient est que, quand tu ajoutes des enregistrements, la table d'indexes grossit et comme elle est placée en début de fichier, tu es plus ou moins obligé de "tout" réécrire (décaler). Si la table d'indexes est dans un fichier à part, tu ajoutes les enregistrements ET les nouveaux indexes en ouvrant tes 2 fichiers en mode append.