我们在这样一个windows文件夹结构中有成千上万的jpg图像,但是它很难与它们以快捷的方式进行交互和工作(列表需要时间,复制需要时间等)。 结构如下:
images/ 1/ 10001/ 10001-a.jpg 10001-b.jpg ... 10001-j.jpg (10 images in each XXXXX folder) 10002/ 10003/ ... 19999/ 2/ 20001/ 20002/ 20003/ ... 29999/ 3/ 4/ 5/ 6/ 7/ 8/ 9/
现在,浏览这些图像有点慢,因为有appr。 每个X文件夹中的10 000个文件夹并列出这些文件只是需要时间。
有更好的方式来组织更less的子文件夹/项目的图像? 会改变这个结构有什么作用?
images/ 1/ 0/ 0/ 0/ 0/ 1/ 2/ 3/ 4/ 5/ 6/ 7/ 8/ 9/ 10000/ (image folder, same as path) 10000-a.jpg 10000-b.jpg ... 10000-j.jpg (10 images in each image folder) 1/ 2/ 3/ 4/ 5/ 6/ 7/ 8/ 9/ 1/ 2/ 3/ 4/ 5/ 6/ 7/ 8/ 9/ 1/ 2/ 3/ 4/ 5/ 6/ 7/ 8/ 9/ 2/ 3/ 4/ 5/ 6/ 7/ 8/ 9/
因此,定位图像48617-c.jpg将等于path4/8/6/1/7/48617/48617-c.jpg。
具有完整path号48617的单独文件夹的原因是为了简化整个10幅图像批量的复制(通过复制整个文件夹)。
现在…没有文件夹将有超过11个直接的子文件夹,但将有大量额外的单个数字文件夹分离的目的。 这种设置会加快浏览和交互,有多个用户添加/复制/删除/等图像?
Windows有点特别,当涉及文件夹的文件夹的文件夹。 尤其是图像,因为Windows资源pipe理器将其视为特殊的。 也就是说,有一些指导方针可以防止事态的失控:
注意事项:
目录复杂性如何影响i节点 ,我的答案中有很多关于math的很好的信息?
这就是说,不同的文件系统以各种方式处理目录中的大量文件。 有一些是好的,有一万个入口,其他人扣。 作为一个快速发明的经验法则,如果你有devise控制,1,000可能是一个很好的目标上限。 目录中的条目通常作为某种列表存储,并由阅读应用程序对其顺序进行sorting。 例如,Unix世界中的ls从目录顺序读入内存,然后按字母顺序打印出来。
看看另一个问题的math。 还要考虑一下sysadmin1338关于Explorer的行为有什么不同。 资源pipe理器将创build任何它认为是图像的缩略图,然后阅读缩略图以显示它们。 这是很多磁盘IO来看看一个充满文件的目录。
根据您是否拥有开发此类系统的资源,这听起来像是使用文件FILESTREAM存储的SQL Server数据库的良好候选者。 这样,您就可以将目录的组织保存到SQL Server中,而您只需要担心数据本身的pipe理方式。 您可以使用SQL Express,因为在计算数据库大小时不考虑FILESTREAM数据。