gpt4 book ai didi

database-design - 为什么要使用散列来为大量文件创建路径名?

转载 作者:行者123 更新时间:2023-12-01 10:16:38 25 4
gpt4 key购买 nike

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

编辑:示例通常是数字图书馆或存储库,尽管我能想到的最简单的示例(可以在大约 30 秒内安装)是 Zotero document/citation database.

为什么要这样做?

编辑:感谢 Mat 的回答——这种使用哈希创建文件路径的技术有名称吗?它是一个模式吗?我想阅读更多内容,但未能在 ACM Digital Library 中找到任何内容

最佳答案

哈希/B:树

当您只打算使用“=”运算符进行搜索时,散列的优点是查看速度更快。

如果您要使用“<”或“>”之类的内容或“=”以外的任何内容,您将需要使用 B:Tree,因为它能够进行此类搜索。

目录结构

如果您有数十万个文件要存储在一个文件系统上,并且您将它们全部放在一个目录中,您将达到目录 inode 变得如此庞大以至于添加/删除需要几分钟时间的地步来自该目录的文件,您甚至可能会遇到 inode 无法放入内存的情况,您将无法添加/删除甚至触摸该目录。

您可以放心,对于散列方法 foo,foo("something") 将始终返回相同的内容,例如“grbezi”。现在,您使用该哈希的一部分来存储文件,例如,在 gr/be/something 中。下次您需要该文件时,您只需计算哈希值,它就可以直接使用。另外,你会发现,有了一个好的散列函数,散列空间中的散列分布是很好的,而且对于大量的文件,它们会在层次结构中均匀分布,从而分担负载。

关于database-design - 为什么要使用散列来为大量文件创建路径名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/338880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com