我希望在一个大型文件存储中使用GUID(uuid)来命名文件夹。每个存储项都有自己的文件夹和GUID。
最简单的方法是“x:\ items \ uuid \ {uuid} ...”
例如:“x:\ items \ uuid \ F3B16318-4236-4E45-92B3-3C2C3F31D44F ...”
我发现一个问题。如果您希望获得至少10,000个项目,可能还有几十万或100万个以上。我不想将这么多项目(子文件夹)放在一个文件夹中。
我考虑通过拆分guid来解决这个问题。使用前两个字符创建第一级子文件夹,然后使用下两个字符并创建子文件夹。 上面的示例将变为-->“x:\ items \ uuid \ F3 \ B1 \ 6318-4236-4E45-92B3-3C2C3F31D44F ...”
如果guid的前4个字符确实像预期的那样随机,那么经过一段时间后,我会在256个文件夹中得到256个文件夹,每个文件夹中总是有合理数量的项目。例如,如果你有100万个项目,那么你会得到--> 1 000 000 / 256 / 256 = 15.25个项目每个文件夹。
过去我已经测试过第一个字符的随机性了。(通过vb.net应用程序)。结果:项目相当均匀地分布在文件夹中。还有其他人得出了同样的结论。请参见在.NET中创建的Guid的前四个字节有多均匀分布? 我考虑的可能的分裂方式(以100万个项目为例)C1 = GUID的第一个字符,C2 = 第二个字符,等等。
我发现一个问题。如果您希望获得至少10,000个项目,可能还有几十万或100万个以上。我不想将这么多项目(子文件夹)放在一个文件夹中。
我考虑通过拆分guid来解决这个问题。使用前两个字符创建第一级子文件夹,然后使用下两个字符并创建子文件夹。 上面的示例将变为-->“x:\ items \ uuid \ F3 \ B1 \ 6318-4236-4E45-92B3-3C2C3F31D44F ...”
如果guid的前4个字符确实像预期的那样随机,那么经过一段时间后,我会在256个文件夹中得到256个文件夹,每个文件夹中总是有合理数量的项目。例如,如果你有100万个项目,那么你会得到--> 1 000 000 / 256 / 256 = 15.25个项目每个文件夹。
过去我已经测试过第一个字符的随机性了。(通过vb.net应用程序)。结果:项目相当均匀地分布在文件夹中。还有其他人得出了同样的结论。请参见在.NET中创建的Guid的前四个字节有多均匀分布? 我考虑的可能的分裂方式(以100万个项目为例)C1 = GUID的第一个字符,C2 = 第二个字符,等等。
我的问题是:
- 有人看到这种实现方式的缺点吗?(方案:*C1C2\C3C4\Rest of Guid)
- 是否有将Guid分割的标准,或者一般的做法。
- 如果在一个文件夹中放置几十万个子文件夹会发生什么情况(如果可能的话,我仍然不愿使用任何分割)
- C1\C2\其余GUID --> 16 * 16 * 3906(仍然有很多文件夹)
- C1\C2\C3\C4\其余GUID --> 16 * 16 * 16 * 16 * 15(不必要地拆分文件夹)
- C1C2\C3C4\其余GUID --> 256 * 256 * 15(对我来说是最好的选择?)
- C1C2C3\其余GUID --> 4096 * 244(第一级文件夹太多了吗?)
- C1C2C3C4\其余GUID --> 65536 * 15(第一级文件夹太多了!)
谢谢,Mumblic