目录查找速度与格式化文件名查找速度

时间:2017-04-24 23:45:28

标签: windows filesystems

我现在和我的同事多次进行过这次讨论,我99.9%肯定我是对的,但他们一直坚持认为他们是对的,我开始怀疑我是不是疯狂的。

我们正在上传用户从他们的移动设备上拍摄的图片,累计他们可以在足够的时间内上传数千张图片。这些照片中的每一张都属于“工单”,它们被赋予一个连续的整数。我们希望优化检索(基于工作单)而不是写作。我们也在Windows机器上。

我建议的存储方法如下所示:

Images
|-- 23875
|    |-- f0347b8.png
|    |-- b04675b.png
|-- 28765
     |-- aab658c.png

他们建议的存储方法如下所示:

Images
|-- 23875_f0347b8.png
|-- 23875_b04675b.png
|-- 28765_aab658c.png

对我来说,为了收集工作单23875的2张图片,我会查看目录Images/23875并获取所有.png个文件。

为了让他们做同样的事情,他们会遍历所有文件并对所有文件名运行通配符过滤器,这对23875_*.png有效。

我相信我的方法更优越,因为在有数千张图像的情况下,它不需要对可能数千个无关文件运行通配符过滤器。我问他们为什么相信他们的方法更优越,但我没有得到令人信服的答案。

感谢任何建议。

1 个答案:

答案 0 :(得分:2)

此方法

Images
|-- 23875_f0347b8.png
|-- 23875_b04675b.png
|-- 28765_aab658c.png

要求在Images中遍历 每个文件 ,以查找与23875_*匹配的所有文件。每次你想找到它们。一遍又一遍。直到世界结束,星星变黑。

将所有文件放在一个目录中会丢弃创建文件时的信息,从而使文件在将来更难找到。尝试在文件名中对该信息进行编码意味着数据与所有其他类似数据混合在一起,因此需要在将来过滤掉。

为什么呢?你是对的 - 没有意义。它没有充分的理由在垃圾中丢弃信息。

你的方法

Images
|-- 23875
|    |-- f0347b8.png
|    |-- b04675b.png
|-- 28765
     |-- aab658c.png

已将文件分区为必需的关联。找不到文件不需要过滤或搜索。

  他们一直坚持认为他们是正确的

哦琦。也许他们喜欢这种摔跤......