séquentiel indexé

Une définition du Jargon Français.
Aller à : Navigation, rechercher

nom masculin.  [gestion de fichiers]  [base de données]. Méthode d'accès rapide à un enregistrement dans une base de données via des clés, chacune associée à un pointeur vers l'enregistrement qu'elle représente.

ISAM en anglais.

Exemple

Si la base est un fichier contenant les enregistrements suivants:

  1. toto
  2. anticonstitutionnellement
  3. troisième
  4. essai
  5. ouvrage
  6. désert

Chaque enregistrement est écrit dans le fichier, puis suivi d'un terminateur (sens 3), ici une lettre réservée à cet effet grâce auquel le logiciel les distingue entre eux (à défaut il lirait par exemple «totoanticonstitutionnellementtroisième...» sans pouvoir déterminer où commence et s'achève chaque enregistrement. Si le terminateur choisi est un slash le fichier contient «toto/anticonstitutionnellement/troisième/...».

S'il faut lire le sixième enregistrement (désert) le logiciel peut lire tous ceux qui le précèdent (donc les 4 lettres de toto, son terminateur, les 25 lettres d'anticonstitutionnellement, son terminateur ...), puis le sixième enregistrement, donc 56 lettres, ainsi que leurs 6 terminateurs soit en tout 62 lettres.

S'il doit fréquemment effectuer ce genre de recherche il peut maintenir un index (sens 3) qui stockera la longueur (ici le nombre de lettres) de chaque enregistrement:

  • 4
  • 25
  • 9
  • 5
  • 7
  • 6

Si chacun de ces index occupe (dans un fichier qui leur est réservé) le même espace qu'une lettre, le logiciel réduit ainsi la quantité d'informations qu'il doit y lire. Pour déterminer où se trouve le sixième enregistrement le logiciel lit les 5 premiers éléments de l'index (ce qui revient à lire 5 lettres), les additionne, y ajoute le nombre d'index lus (puisqu'il correspond au nombre de terminateurs) puis effectue un accès direct dans le fichier des enregistrements afin de lire l'enregistrement (dont il a ainsi calculé l'adresse (sens 1)). Il lira ainsi 5 index puis le sixième enregistrement et son terminateur soit en tout 12 lettres, ce qui sera généralement nettement plus rapide qu'en lire 62. Lire ainsi dans 2 fichiers distincts peut ralentir, s'il faut pour cela déplacer une tête de disque dur, mais même dans le pire des cas lorsque la base de données grossit c'est de plus en plus préférable à la relecture systématique de tous les enregistrements.

Il est facile d'optimiser davantage. Premièrement les terminateurs sont dorénavant vraisemblablement inutiles, car sauf dans le cas extrême donc a priori plus rare que les autres impliquant de lire tous les enregistrements (tel qu'une sauvegarde complète), le logiciel peut employer les index afin de déterminer non seulement où commence un enregistrement, mais également où il s'arrête.

D'autre part il peut aussi stocker des index exprimant chacun non la taille d'un enregistrement mais son adresse (sens 1). Dès lors pour trouver l'enregistrement de rang N il effectue un accès direct à l'index de rang N, le lit, lit également le suivant (afin de calculer la longueur de l'enregistrement visé), et accède au fichier des enregistrement directement au début de l'enregistrement visé (puisqu'il vient de lire son adresse).

On peut aussi ne pas créer d'index pour le premier enregistrement, puisque son adresse est connue (il réside au tout début du fichier, adresse 0 ou 1 selon les conventions en vigueur dans le langage de programmation utilisé).