2009-03-09 21 views
0

Was ich tun möchte, ist eine Disc oder ein Laufwerk (USB, Haupt-Festplatte, etc) für Dateien scannen und speichern Sie ihre Informationen in einer Datenbank. Dann würde ich die db zu einer bestimmten Datei suchen, um zu finden, wo es gespeichert wird. Alternativ kann ich suchen, wie alte Copys aus Archivierungsgründen sind, oder wenn ich etwas überstolpere und es nicht rearchivieren muss oder nach einem Betrogenen suchen muss, falls ich es absichtlich mehrere Male absichere und eine meiner Scheiben Kratzer oder Laufwerk beschädigt war .Gibt es eine bessere Möglichkeit, diese Datenbank zu speichern?

Hier ist, was ich

os + fs Flag denke (1 Byte?) st_mode (wenn auch nicht in Linux) 2 Bytes win32_attr (wenn auch nicht auf Windows) 4bytes (dies umfasst hiddent, dir vs Datei, gesperrt usw.) Dateigröße (64Bits) a/m/c Zeit, 64Bits. index/eindeutiger Schlüssel als fileID

Sollte ich den Namen als variable Länge in seiner eigenen Tabelle durch seine passende fileID nachgeschlagen haben? oder sollte ich einen Dateinamen 260 Länge in der Datenbank haben oder sollte ich einen Dateinamen variabler Länge in der DB haben?

Dann habe ich Blobs von XYZ Bits für meine Prüfsumme (md5, sha1, sha512, etc, je ein Blob) in einer Prüfsummen-/Hash-Tabelle benötigt, die von fileID nachgeschlagen wurde.

Ich dachte, meine Hash-Tabelle sollte Datei-ID (Int die gleiche Länge wie Index?), HashType (Int), HashValue (Varchar) haben.

Antwort

0

Setzen Sie den Dateinamen als Varchar in die Dateitabelle, mindestens varchar [1024], Windows hat eine Begrenzung der gesamten Pfadlänge in einigen OS Combos, ähnlich wie bei ISO CD/DVDs.

setzen die Hashes in einer Zuordnungstabelle wie:

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

so können Sie später neue Hash-Typen hinzufügen und ermöglicht es Ihnen, alle Hash-Typen nicht zu unterstützen, für alle Dateien.

+0

Was ist PK und was ist Index? Warum brauche ich sie? Ich füge die Hashtabelle hinzu, die ich für meine Frage vorgesehen hatte, damit Sie besser erklären können, was damit nicht stimmt. –

+0

PK === Primärschlüssel von fileId und hash_type, index ist ein weiterer Index für fileID. – sfossen

+0

Sie würden durch die Datei-ID mit der Dateitabelle verknüpfen. – sfossen

Verwandte Themen