我注意到在许多情况下,应用程序或数据库使用 has 来存储文件/blob 集合来确定路径和文件名。我相信预期的结果是路径永远不会太深,或者文件夹太满 - 文件夹中的文件(或文件夹)太多,导致访问速度变慢。
编辑:示例通常是数字图书馆或存储库,尽管我能想到的最简单的示例(可以在大约 30 秒内安装)是Zotero 文档/引文数据库。 http://zotero.org
为什么要这样做?
编辑:感谢 Mat 的回答 - 这种使用哈希创建文件路径的技术有名称吗?是不是一个pattern?我想阅读更多内容,但未能在其中找到任何内容ACM数字图书馆 http://portal.acm.org/portal.cfm
哈希/B:树
当您仅使用“=”运算符进行搜索时,哈希的优点是查看速度更快。
如果您要使用“”或“=”以外的任何内容,您将需要使用 B:Tree,因为它将能够执行此类搜索。
目录结构
如果您有数十万个文件要存储在文件系统上,并将它们全部放在一个目录中,那么目录 inode 将变得如此庞大,以至于需要几分钟才能添加/删除文件该目录,您甚至可能会遇到 inode 无法放入内存的情况,并且您将无法添加/删除甚至触摸该目录。
您可以放心,对于哈希方法 foo,foo("something") 将始终返回相同的内容,例如“grbezi”。现在,您使用该哈希的一部分来存储文件,例如,在 gr/be/something 中。下次您需要该文件时,您只需计算哈希值即可直接使用。另外,您会发现,使用良好的散列函数,散列在散列空间中的分布非常好,并且对于大量文件,它们将均匀分布在层次结构内,从而分散负载。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)