有没有更好的方法来存储这个数据库?

时间:2009-03-09 03:25:20

标签: database filesystems

我想要做的是扫描光盘或驱动器(usb,主硬盘等)以获取文件并将其信息存储在数据库中。然后我会将数据库搜索到特定文件以查找它的存储位置。或者,我可以搜索多少旧复制用于归档的原因或者如果我有一些东西,并且不需要重新归档它或寻找一个欺骗,我故意多次备份它,我的一个光盘是划痕或驱动器已损坏

这就是我的想法

os + fs标志(1个字节?) st_mode(即使不在 Linux 中)2bytes win32_attr(即使不在Windows上)4bytes(这包括hiddent,dir vs file,locked等) 文件大小(64位) a / m / c时间,64位。 索引/唯一键作为fileID

我应该在自己的表中将名称作为变量长度查找其匹配的fileID吗?或者我应该在数据库中有260长度的文件名,或者我应该在数据库中有一个可变长度的文件名?

然后我在我的校验和(md5,sha1,sha512等,每个一个blob)所需的XYZ位blob中查找由fileID查询的校验和/哈希表。

我在想我的哈希表应该有fileID(int与index的长度相同?),hashType(int),hashValue(varchar)。

1 个答案:

答案 0 :(得分:0)

将文件名作为varchar放在文件表中,至少是varchar [1024],windows对某些操作系统组合中的总路径长度有限制,类似于ISO CD / DVD。

将哈希值放在关联表中,如:

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

因此您可以稍后添加新的哈希类型,并允许您不支持所有文件的所有哈希类型。