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

2024-04-14

我注意到在许多情况下,应用程序或数据库使用 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(使用前将#替换为@)

为什么使用散列来为大量文件创建路径名? 的相关文章

  • 将歌词存储在 MySQL 数据库中

    我想知道在 mysql 数据库中存储音乐 歌词 的最佳方式是什么 以及用于此目的的设置是什么 另外 我想要表格来存储断线 我正在考虑使用 指示新行并使用 php 替换字符串 我不知道从哪里开始 或者使用什么参数 varchar int 我知
  • Java 中类似 HashMap 的可排序数据结构?

    Java 中是否有某种类似于 HashMap 的数据结构 可以按键或值排序 在 PHP 中 您可以拥有可排序的关联数组 Java中有这样的东西吗 HashMaps 几乎按照定义是未排序的 一个好的哈希函数会产生看似随机的密钥分布 如果你想使
  • 具有线程安全性的 eventbus 最佳实践

    我的应用程序具有用户交互活动和后台服务 这是修改数据模型的唯一地方 后台服务监听用户所做的操作以及来自网络的传入消息 因此 可能会出现并发问题 我尝试使用处理程序来防止这些问题 对于事件层 我使用 greenrobots Eventbus
  • 依赖注入容器——工厂模式

    我一直在尝试了解依赖注入 并一直在阅读并尝试编写一个类似于以下内容的小型依赖注入容器 http fabien potencier org article 12 do you need a dependency injection conta
  • Cassandra 与 ZooKeeper 的事务 - 这有效吗?

    我正在尝试在 ZooKeeper 的帮助下为 Cassandra 实现一个事务系统 由于我认为我在数据库实现方面没有足够的经验 所以我想知道我的想法原则上是否可行 或者是否有任何重大缺陷 以下是步骤的高级描述 识别所有要编辑的行 键 和列
  • 多人/单人测验游戏的数据库设计

    我在这里看到了很多问题 但没有人适合我的问题 我正在尝试创建一个可扩展的 ER 模型 如果我想添加更多数据 则不会破坏几乎任何东西 所以我尝试创建的是 有两种类型的用户 比如说管理员和工作人员 他们有不同的角色 管理员可以对问题进行 CRU
  • 领域驱动设计示例(特别是 .NET 重点)

    好的 我已经订购了 但是当我等待它到达时 我正在考虑开始在我当前的项目中应用这些技术 我现在确实很好地掌握了这些概念 但是当我尝试应用它们时 我陷入了执行过程中 最终在各个项目中漏掉了我的职责 因此 我正在寻找可以引导我走向正确方向的资源
  • 在关系数据库中存储 1:1 用户关系的最佳方式

    存储用户关系的最佳方式是什么 例如友谊 在关系中必须是双向的 你是我的朋友 因此我是你的朋友 数据库 例如MYSql 我可以想到两种方法 每当一个用户与另一个用户成为好友时 我都会向数据库添加两行 其中 A 行由发起用户的用户 ID 和下一
  • REST API 登录模式

    我正在创建一个 REST api 严格遵循 apigee 建议 使用名词而不是动词 将 api 版本烘焙到 URL 中 每个集合有两个 api 路径 GET POST PUT DELETE 用法等 我正在开发登录系统 但不确定登录用户的正确
  • 在 StackOverflow 克隆中,评论表与问题和答案应该有什么关系?

    在我正在构建的类似于 StackOverflow 的应用程序中 我试图确定我的关系Questions Answers and Comments表应该有 我本可以有Questions and Answers两者都由一个表表示Posts 那将允
  • “多对二”关系

    我想知道 多对二 关系 孩子可以与两个父母中的任何一个有联系 但不能与两个父母都有联系 有什么办法可以加强这一点吗 另外我想防止孩子重复输入 现实世界的例子是电话号码 用户和公司 一个公司可以有很多电话号码 一个用户可以有很多电话号码 但理
  • 全局常量是反模式吗?

    我一直认为仅仅为了保持常量而创建一个类是一个糟糕的设计 但最近 我尝试用谷歌搜索它 发现只有一个界面作为常量是不好的反模式 没有提到使用一类常量 我认为 由于常量类实际上与全局变量没有太大区别 这就是我反对它并倾向于重构此类类的原因 它创建
  • 从列表中获取数组而不进行堆分配

    我有一个列表 我想将其数组分配给一个属性 public void BuildMesh List
  • 数据库设计 - 何时拆分表?

    有时创建一个单独的表会产生更多工作 我是否应该将其拆分 例如 在我的项目中 我有一张客户表 每个客户对每种产品都有自己的特殊价格 只有5种产品 未来不会计划更多产品 每个客户也有一周中公司向他交付产品的独特日子 当日期和产品价格是客户表中的
  • 如何将只缓存某些内容的字段添加到ADT?

    我经常需要向 ADT 添加字段 仅记住一些冗余信息 但我还没有完全弄清楚如何又好又高效地做到这一点 说明问题的最好方法是举个例子 假设我们正在使用无类型 lambda 项 type VSym String data Lambda Var V
  • 一个大连接或多个查询哪个提供更好的性能?

    我有一个名为订单的表 订单上的一列是 customer id我有一个名为 customers 的表 有 10 个字段 给定两个选项 如果我想构建订单对象数组并嵌入订单对象中的是客户对象 我有两个选择 选项1 A 首先查询订单表 b 循环遍历
  • 转换位域结构的字节顺序

    我需要将位字段结构从小端架构转换为大端架构 最好的方法是什么 因为如果我只是交换结构元素 字节边界就会出现问题 前结构是 struct unsigned int b1 1 unsigned int b2 8 unsigned int b3
  • 这个函数(for循环)空间复杂度是O(1)还是O(n)?

    public void check 10 for string i list Integer a hashtable get i if a gt 10 hashtable remove i 这是 O 1 还是 O n 我猜测 O n 但不是
  • 访客模式如何不违反开放/封闭原则?

    来自维基百科 这个想法是 一旦完成 类的实现只能修改为 纠正错误 新的或更改的功能将需要创建不同的类 该类可以通过继承重用原始类的代码 据我了解 访问者模式是一种强大的技术 可以通过使用双重分派来遍历实现相同接口的相似但不同的对象 在我的一
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤

随机推荐

  • “download_slot”在 scrapy 中如何工作

    我在 scrapy 中创建了一个脚本来解析author name来自其着陆页的不同帖子 然后将其传递到parse page方法使用meta关键字以打印post content随着author name同时 我用过下载槽在元关键字中 据称该关
  • hibernate_unique_key表是如何在新数据库中创建的?

    我正在尝试使用 NHibernate 创建我的第一个测试应用程序 如下所示NHibernate 2 0 初学者指南 https rads stackoverflow com amzn click com 1847198902 该示例在映射中
  • EF Code-First 中查找表的最佳实践

    我正在使用 EF 做我的第一个项目 并且计划采用代码优先模型 我正在尝试找到一些有关处理相当经典的 查找表 场景的指导 我正在处理一个非常规范的情况 我将保留地址数据 所以 我有一个简单的地址 DTO public class Addres
  • 在 BST 中查找中序后继而不使用任何额外空间

    我正在寻找一种方法来找出 BST 中节点的中序后继者 而不使用额外的空间 获取给定节点的中序后继节点N我们使用以下规则 If N有一个合适的孩子R那么inorderSuccessor N 是最左边的 的后继者R Else inorderSu
  • Solidity v0.6.0。后备功能。需要它们做什么?

    阅读 Solidity v0 6 0 的文档后docs https docs soliditylang org en latest 060 breaking changes html semantic and syntactic chang
  • 删除指向不存在目录的符号链接的安全方法(对于 python 二进制文件)

    我不小心输入了 sudo ln sf usr local bin python2 5 usr bin python 代替 sudo ln sf usr local bin python2 5 usr bin python 现在 每当我运行
  • 获取批处理文件中两个目录的路径

    我想获取从当前位置向上 2 个目录的文件夹的路径 我正在做以下事情 echo CD set NEW PATH bin echo PATH 当我运行上面的代码时 我打印了当前目录路径 但 NEW PATH 不是 它只是说 ECHO OFF 从
  • 在 ThreadPoolExecutor 中实现优先级队列

    已经为此苦苦挣扎了 2 天多了 实施了我在这里看到的答案Java中指定任务顺序执行 https stackoverflow com questions 12722396 specify task order execution in jav
  • 在 C# 中从不同类引发一个类的事件

    我有一个类 EventContainer cs 其中包含一个事件 例如 public event EventHandler AfterSearch 我还有另一个类 EventRaiser cs 我如何从此类中引发 而不是处理 上述事件 引发
  • SQL Server 2008 行插入和更新时间戳

    我需要向 SQL Server 2008 R2 中的数据库表添加两列 创建TS 插入行的日期和时间 更新TS 更新行的日期和时间 我有几个问题 我应该为其中的每一个使用什么列数据类型 createTS只需在插入行时设置一次 当我尝试date
  • 如何获取Core Data数据库的最后一条记录?

    我有一个名为 images 的核心数据实体 它只有 2 个字段 imageName NSString timeStamp NSNumber 我正在尝试模拟一种堆栈 LIFO 后进先出 插入新条目很容易 但是读取添加到实体的最后一个条目怎 么
  • 如何将Python屏幕输出保存到文本文件

    我想从字典中查询项目并将打印输出保存到文本文件中 这是我所拥有的 import json import exec fullog as e inp e getdata inp now is a dict which has items key
  • Blueimp文件上传,如何知道进度回调是针对哪个文件的?

    你如何知道进度回调是针对哪个文件的 即使我将equentialUploads设置为true 但仅在IE10中 而不是Chrome FireFox Safari 当我选择同时上传多个文件时 add回调中的data files数组包含多个文件
  • 删除外键约束

    如果我在创建过程中没有命名外键 如何删除它 create table abc id number 10 foreign key id references tab roll even alter table abc drop foreign
  • [__NSCFTimer copyWithZone:]:无法识别的选择器发送到实例

    var searchDelayer NSTimer func searchBar searchBar UISearchBar textDidChange searchText String searchDelayer invalidate
  • 如何组合多个可为空的 NSPredicate?

    例如 类似的东西 var finalPredicate NSPredicate format if screen nil screenPredicate NSPredicate format screen screen finalPredi
  • 使用jquery mobile点击而不是点击

    我正在制作一个需要在移动设备和非移动设备上运行的网络应用程序 在我的应用程序中 我有几个图标 用户可以单击这些图标 以便使用 Websocket 向服务器发送消息 我的代码看起来像这样 button container on tap sen
  • 像素转MM方程?

    有没有可靠的公式可以计算出 MM 的像素大小 或者说这不可能跨设备 我们正在使用一个定制系统 该系统可以向许多具有不同屏幕尺寸的设备提供内容 它可以检测 MM 中的屏幕宽度 但我们希望将其准确地转换为像素大小 以便使用简单的 jquery
  • 在 Rstudio 上浏览 R 代码的高效递归方式?

    我正在使用 RStudio 我开始觉得有必要通过包代码来更深入地理解或破解某些功能 当我尝试使用导航时使用 Ctrl 单击鼠标 http www rstudio com ide docs using navigation对于包内定义的函数
  • 为什么使用散列来为大量文件创建路径名?

    我注意到在许多情况下 应用程序或数据库使用 has 来存储文件 blob 集合来确定路径和文件名 我相信预期的结果是路径永远不会太深 或者文件夹太满 文件夹中的文件 或文件夹 太多 导致访问速度变慢 编辑 示例通常是数字图书馆或存储库 尽管