Creation d'un index pour fichier - C - Programmation
Marsh Posté le 23-04-2009 à 17:12:45
Tu n'as pas accès à une base de données ?
C'est fait pour ça, et une requête en base c'est quand même plus facile que de se taper les éventuels problèmes de clefs mortes, fichiers corrompus, etc.
Mais sinon, il te suffit de travailler avec des fichiers utilisant un format précis. Soit du XML (avec la bibliothèque xerces-c et du temps passé sur la doc, c'est assez simple), soit bêtement du CSV avec un mécanisme d'interprétation maison. Et stocker le tout dans des tables de hâchage (par exemple des structures chaînées avec un identifiant et quelques champs).
Dans tous les cas, tu dois réfléchir à ton modèle de données avant même de commencer à taper une seule ligne de code.
Marsh Posté le 23-04-2009 à 17:31:56
Un fichier d'index en informatique est comme un index à la fin d'un livre.
On a sur chaque ligne : la clé, puis le numéro de la page, ou de l'enregistrement, ou de l'adresse, où se trouve l'enregistrement correspondant à la clé. Habituellement, on indique le numéro de l'octet dans le fichier des données où se trouve l'enregistrement, et on peut ensuite aller chercher l'enregistrement avec un fseek() et un fread().
Si l'on veut faire une recherche sur le titre d'un film, il faut faire un index dont la clé sera les titres de film.
Si l'on veut faire une recherche sur le genre d'un film, il faut faire un autre index dont la clé sera les genres de film.
Marsh Posté le 23-04-2009 à 17:45:40
Je n'avais pas interprété "index" dans ce sens-là. Mais si c'est bien ce que souhaite réaliser le posteur original, alors c'est encore plus "chaud" à faire de toute pièce.
Non pas que le principe de base soit difficile à coder, mais disons qu'il y a toute une liste de cas à gérer que les concepteurs de base de données ont mis des années à résoudre (par exemple, détecter qu'il faut reconstruire un index après un crash ou une reprise quelconque).
Encore une fois, dans ce cas-là je préfèrerai utiliser une base de données, pour me concentrer sur le modèle de données et laisser la gestion technique à un logiciel éprouvé. Surtout qu'il y en a des gratuits avec des APIs pour les attaquer en C (PostGRE, MySQL).
Marsh Posté le 23-04-2009 à 17:54:51
Pour bricoler un petit truc en C, je pense que sqlite peut être sympa.
Marsh Posté le 23-04-2009 à 17:56:05
Ok je voit deja mieux, donc en gros si je veux faire des recherches avec plusieurs criteres differents, je dois créer autant d'index qu'il y a de criteres?
Sinon oui c'est bien ce sens la, ca aurait été plus simple mais j'ai des contraintes a respecter.
Marsh Posté le 23-04-2009 à 16:46:06
Ola,
Je dois faire un programme permettant de gérer un certain nombre de données stockées sur un fichier, et sur lequel je vais effectuer des operations ( recherche, ajout...).
Le probleme c'est qu'il faut créer un index qui sera également stocké sur un fichier, et je ne comprend pas comment mettre ca en place.
Par exemple, si je fais un tableau qui comporte les types ( par ex, mon fichier comporte des films -> je veux chercher un film d'action ), je ne comprend pas comment mettre en relation ce tableau avec les autres elements du fichier ( j'ai une structure FILM qui a un nom, un type ect ).
SInon il y a les arbres mais c'est pareil je ne comprend pas le fonctionement , si je créer un structure comportant les fils et la clé d'identification de film, je ne vois pas comment ordoné hierarchiquement les donnée de l'arbre, et ensuite comment mettre en relation tous les films avec mon index.
Je sais pas si c'est comprehensible ce que je dit, je voudrai juste etre eclairé sur le fonctionement et la creation de l'index ( est ce que c'est une focntion a part entiere?)
Merci