2009-03-09 4 views
0

Ce que je voudrais faire est de scanner un disque ou un lecteur (USB, disque dur principal, etc) pour les fichiers et stocker ses informations dans un db. Ensuite, je chercherais le db à un fichier particulier pour trouver où il est stocké. Alternativement je peux chercher comment vieux copys sont pour des raisons d'archivage ou si j'ai des dupes de quelque chose et n'ai pas besoin de le rechercher ou chercher un dupe dans le cas je le sauvegarde volontairement plusieurs fois et un de mon disque était corrompu .Existe-t-il un meilleur moyen de stocker cette base de données?

Voici ce que je pense

os + drapeau fs (1 octet?) st_mode (même si pas dans Linux) 2 octets win32_attr (même si pas sur les fenêtres) 4bytes (cela couvre hiddent, dir vs fichier, verrouillé, etc) taille du fichier (64bits) un/m/c temps, 64bits. index/clé unique comme ID de fichier

Dois-je avoir le nom comme une longueur variable dans sa propre table recherchée par son ID de fichier correspondant? ou devrais-je avoir un nom de fichier de 260 longueur dans le DB ou devrais-je avoir un nom de fichier de longueur variable dans le DB?

Ensuite, j'ai des blobs de bits XYZ requis pour ma somme de contrôle (md5, sha1, sha512, etc, un blob pour chaque) dans une table de contrôle/hachage recherchée par fileID.

Je pensais que ma table de hachage devrait avoir l'ID de fichier (int qui est la même longueur que l'index?), HashType (int), hashValue (varchar).

Répondre

0

mettre le nom de fichier comme un varchar dans la table de fichiers, au moins varchar [1024], Windows a une limite sur la longueur totale du chemin dans certains combos OS, similaire aux CD/DVD ISO.

mettre les hash dans une table d'association comme:

Hash 
{ 
    fileId int, 
    hash_type int,   -- or enum 
    hash varchar[ 255 ], -- or largest hashtype 
    PK (fileId, hash_type), 
    index(fileID), 
} 

vous pouvez donc ajouter de nouveaux types de hachage plus tard et vous permet de ne pas supporter tous les types de hachage, pour tous les fichiers.

+0

Qu'est-ce que PK et qu'est-ce qu'un index? Pourquoi ai-je besoin d'eux? J'ajoute la table de hachage que j'avais en tête à ma question afin que vous puissiez mieux expliquer ce qui ne va pas. –

+0

PK === clé primaire de fileId et hash_type, index est un autre index sur fileID. – sfossen

+0

vous liez à la table de fichiers par l'ID de fichier. – sfossen

Questions connexes