1

我正在审查一个用 Java 编写的遗留应用程序的代码,一个内容交付服务器。他们有一个文件存储库,其中包含的文件都以其内容的 MD5 哈希十六进制命名。

7ABC1FBF6109EAB64DF6682158317181.dat

这些文件有数千个。存储库文件结构如下:

C:/base/resources/repository/{First two digits of hex MD5 hash}/{MD5 hash hex}.dat 

前任:

C:/base/resources/repository/7A/7ABC1FBF6109EAB64DF6682158317181.dat

假设没有业务逻辑需要它(我告诉你没有),是否有任何理由可以验证这样做。应用程序获取文件请求并以文件中的内容(由哈希映射)进行响应。

我真的什么都想不出来。

该应用程序在 Linux 机器上运行,我不知道他们使用的是哪个发行版或什么文件系统。

4

3 回答 3

1

通过哈希的属性

{First two digits of hex MD5 hash}/{MD5 hash hex}.dat

是没有意义的。在任何文件系统中,目录都应该在逻辑上将事物组合在一起,但根据定义,共享相同前缀的两个散列项之间没有逻辑关系。我的猜测是有人厌倦了一次在目录中看到太多文件,所以这可能与性能有关。

于 2013-01-09T22:16:51.487 回答
1

当单个目录包含大量文件时,某些文件系统调用会变得非常慢,尤其是在 Windows 上。而且管理它们也更加困难,因为简单地列出它们的内容太慢并且返回的条目太多。

于 2013-01-09T22:17:31.600 回答
1

文件管理工具之类的 GUI 工具可能会挂起,或者如果该文件夹也是远程的(NAS、SAMBA),则可能需要很长时间才能简要查看内容。当然,应用程序可以更好地按日期或其他不那么随机的方式对文件进行分组。

于 2013-01-09T22:24:58.047 回答