我的应用程序生成了数千个文件,我希望将它们平均分配到一些目录中。
文件的分割方式应该可以预测,因为我有一个客户端向服务器请求文件。即如果我有文件“ 100002.xml”,我需要知道它位于哪个目录下。
文件的名称类似于数据库中的ID,例如1.xml,2.xml,1000000.xml等。数字之间可能会有大洞,所以我可以拥有文件1-1000,然后有100000-199999
上次我有许多以1开头的文件,因此创建像0-9这样的目录是行不通的,因为几乎所有文件都将进入“ 1”目录。
我无法想到一种均匀分发文件的方法,怎么办?
我也可以接受包含不超过n个文件的目录。
我能够制作一个脚本来将文件分成多个目录,但不能以可预测的方式进行。我想创建的Dirs尽可能少。
编辑:我的客户端无法搜索,或者服务器上没有脚本可以处理请求:我有一个javascript方法,该方法可以从Apache服务器获取文件,并且不能包含任何脚本处理请求
编辑2 :我认为我的问题确实是:即使源整数不是均匀分布,我可以使用哪种哈希函数将整数映射到整数的均匀分布?
答案 0 :(得分:1)
使用模运算怎么样?这是执行哈希函数的一种非常原始的方法。假设您有 n 个文件和目录,其中最多包含 m 个文件(以及 n > m 个)。假设文件ID i , i %( n / m )将为您提供哪个您将要存储的n / m 个目录。