当前位置:  开发笔记 > 编程语言 > 正文

为什么使用散列为大型文件集创建路径名?

如何解决《为什么使用散列为大型文件集创建路径名?》经验,为你挑选了1个好方法。

我注意到一些应用程序或数据库使用a存储文件/ blob集合的情况必须确定路径和文件名.我相信预期的结果是路径永远不会太深,或者文件夹太满 - 文件夹中的文件(或文件夹)太多而导致访问速度变慢.

编辑:例子通常是数字图书馆或存储库,虽然我能想到的最简单的例子(可以在大约30秒内安装)是Zotero文档/引用数据库.

为什么这样?

编辑:感谢Mat的答案 - 这种使用哈希创建文件路径的技术是否有名称?这是一种模式吗?我想阅读更多内容,但未能在ACM数字图书馆中找到任何内容



1> mat..:

散列/ B:树

当你只打算使用"="运算符进行搜索时,哈希的优点是可以更快地查看.

如果您要使用"<"或">"之类的内容或"="之外的其他内容,您将需要使用B:Tree,因为它可以执行此类搜索.

目录结构

如果你有数十万个文件要存储在一个文件系统中并且你把它们全部放在一个目录中,那么你将会到达目录inode增长如此之大以至于需要几分钟来添加/删除文件那个目录,你甚至可能达到inode不适合内存的程度,你将无法添加/删除甚至触摸目录.

你可以放心,对于散列方法foo,foo("something")将总是返回相同的东西,比如说"grbezi".现在,您使用该哈希的一部分来存储文件,例如,在gr/be/something中.下次需要该文件时,您只需计算哈希值即可直接使用.此外,您可以获得这样的事实:使用良好的散列函数,散列空间中的散列分布非常好,并且对于大量文件,它们将均匀地分布在层次结构中,从而分割负载.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有