首页 > 编程问答 >HDF5 与包含文件的文件夹有何不同?

HDF5 与包含文件的文件夹有何不同?

时间:2024-07-22 03:58:07浏览次数:10  
标签:python persistence metadata hdf5

我正在开发一个 开源项目 处理向文件夹添加元数据。提供的 (Python) API 允许您浏览和访问元数据,就像它只是另一个文件夹一样。因为它只是另一个文件夹。

\folder\.meta\folder\somedata.json

然后我遇到了 HDF5 及其派生 Alembic

在书中阅读HDF5 Python和HDF5|| |我一直在寻找与使用文件夹中的文件相比使用它的好处,但我遇到的大多数内容都谈到了分层文件格式的好处,即通过其 API 添加数据的简单性: 或其能够根据请求仅读取其中的某些部分(例如随机访问),以及并行执行单个 HDF5 文件(例如用于多处理)

>>> import h5py
>>> f = h5py.File("weather.hdf5")
>>> f["/15/temperature"] = 21

您可以挂载 HDF5 文件,

https://github.com/zjttoefs /hdfuse5 它甚至拥有一个强大而简单的基础概念

数据集 来自wiki的内容: 数据集,它们是同质类型的多维数组|| |组,是可以保存数据集和的容器结构 其他组

  • 替换
  • 数据集

文件 文件夹 整个功能集对我来说听起来就像什么文件文件夹已经完全有能力做到这一点。 对于我遇到的每一项好处,没有一个是 HDF5 独有的。 所以我的问题是,如果我给您一个 HDF5 文件和一个包含文件的文件夹,两者都有相同的内容,在哪种情况下HDF5更适合?

编辑:

已经得到了一些关于HDF5可移植性的回应。

听起来很可爱,但我仍然没有得到答复一个示例,一个场景,其中 HDF5 将胜过包含文件的文件夹。当一个文件夹可以在任何计算机、任何文件系统、通过网络、支持“并行 I/O”、无需 HDF5 解释器的情况下人类可读时,为什么有人会考虑使用 HDF5。

我会尽可能可以说,包含文件的文件夹比任何 HDF5 都更便携。

编辑 2:

Thucydides411 刚刚给出了可移植性很重要的场景示例。

https://stackoverflow.com/a/28512028 /478949

我认为我从这个线程的答案中得到的是,HDF5 非常适合当您需要文件和文件夹的组织结构时,就像上面的示例场景中那样,有很多(数百万)个小文件和文件夹(~1 字节)数据结构;例如单个数字或字符串。它通过提供有利于小而多而不是少而大的“子文件系统”来弥补文件系统的不足。 在计算机图形学中,我们使用它来存储几何模型和有关个体的任意数据顶点似乎与它在科学界的使用非常吻合。

I think what I'm taking away from the answers in this thread is that HDF5 is well suited for when you need the organisational structure of files and folders, like in the example scenario above, with lots (millions) small (~1 byte) data structures; like individual numbers or strings. That it makes up for what file-systems lack by providing a "sub file-system" favouring the small and many as opposed to few and large.

In computer graphics, we use it to store geometric models and arbitrary data about individual vertices which seems to align quite well with it's use in the scientific community.


你问什么时候 HDF5 比包含文件的文件夹更可取。这实际上是一个很好的问题,因为表面上看,它们在功能上是等效的。以下是一些考虑因素:

  1. 对于包含大量小文件的大数据集,HDF5 的性能明显优于文件系统。 这是因为文件系统上的元数据(例如文件大小、创建时间、权限等)通常存储在磁盘上的单独位置。这意味着要访问一个小文件,你的操作系统必须在读取实际文件数据之前进行多次磁盘查找。对于包含数百万个小文件的数据集来说,这可能会导致巨大的性能损失。另一方面,HDF5 将所有元数据和数据存储在单个文件中,这允许对数据进行快速有效的访问,尤其是对于大型数据集。

  2. HDF5 可以处理文件系统无法处理的大文件和数据集。 大多数文件系统对文件大小有限制,而 HDF5 可以处理高达艾字节的文件。这使得 HDF5 成为需要存储和分析真正庞大数据集的科学和工程应用程序的理想选择。

  3. HDF5 提供了一种比文件系统更结构化和有组织的数据存储方式。 HDF5 允许你将数据存储在层次结构中,这些层次结构可以包含数据集和组。这使得按逻辑方式组织数据和存储有关数据的元数据变得更加容易。另一方面,文件系统本质上更灵活,但这对于需要在数据组织中保持一定严格性的科学应用程序来说可能是一个缺点。

  4. HDF5 是一个可移植的格式,可以在各种平台上读取。 这意味着你可以在一台机器上创建一个 HDF5 文件,然后在另一台机器上打开它,而无需担心兼容性问题。另一方面,文件系统是特定于平台的,因此你可能需要执行额外的步骤才能确保你可以在不同机器上访问你的数据。

但是,HDF5 也有一些缺点:

  1. HDF5 是一个二进制格式,不能像文本文件那样容易地被人阅读和编辑。 如果你需要能够在文本编辑器中查看或编辑你的数据,那么 HDF5 可能不是最佳选择。

  2. HDF5 需要一个专门的库来读取和写入,而文件系统则由操作系统直接支持。 这意味着在开始使用 HDF5 之前,你需要安装 HDF5 库。

总而言之,如果你需要存储和分析大型数据集,尤其是包含大量小文件的数据集,那么 HDF5 是一个不错的选择。如果你需要一个可移植的格式并且能够存储有关你的数据的元数据,那么它也是一个不错的选择。然而,如果你正在处理小数据集或者你需要能够以人类可读的格式访问你的数据,那么文件系统可能是一个更好的选择。

标签:python,persistence,metadata,hdf5
From: 22125778

相关文章

  • Python Pandas:如何解析没有行结尾的 CSV
    如何解析没有行结尾的CSV文件?示例数据sep=;Id;Date;1;1980-02-29;2;1980-03-10;3;;可以使用lineterminator参数指定行终止符来解析没有行尾的CSV文件。在这种情况下,你可以将lineterminator设置为一个空字符串('')。以下是使用......
  • Python 中的 azure.ai.translation.document - 无法使用当前权限访问源文档位置
    我在使用Python中的azure.ai.translation.document库时遇到问题。我已经在Azure中设置了翻译服务以及带有两个容器的Blob存储。我已使用“用户委托密钥”创建了SAS连接。一种用于源(读取/列表),一种用于目标(写入/列表)。例如我尝试运行Python程序,但源b......
  • 博文标题:探索Python中的元编程:装饰器的魔法
    引言在Python的世界里,装饰器(Decorators)是一种非常强大的特性,它允许程序员在不修改原始函数代码的情况下,为函数添加新的功能。这种机制不仅增强了代码的可读性和可维护性,还提供了高度的灵活性和扩展性。本文将深入探讨装饰器的基本概念、工作原理以及如何利用它们来简化和......
  • 使用Python 和 Selenium 抓取 酷狗 音乐专辑 附源码
    在这篇博客中,我将分享如何使用Python和Selenium抓取酷狗音乐网站上的歌曲信息。我们将使用BeautifulSoup解析HTML内容,并提取歌曲和专辑信息。准备工作首先,我们需要安装一些必要的库:pipinstallrequestsbeautifulsoup4selenium代码实现以下是完整的代码:importosi......
  • 基于Django+Python的网易新闻与评论舆情热点分析平台
    一、引言在信息爆炸的时代,人们每天面对海量的信息流,如何从中筛选出有价值的信息并进行深度分析变得尤为重要。基于Django+Python的网易新闻与评论舆情热点分析平台,旨在为用户提供一个高效的数据分析工具,帮助用户快速理解新闻趋势、情感倾向以及公众对特定事件的看法。通过自......
  • Python解释器详解及其应用场景
    Python解释器及其应用场景一、Python解释器概述Python解释器是Python程序运行的核心,它负责读取Python代码(即.py文件)并将其转换为机器语言,从而使计算机能够执行。简单来说,Python解释器就像是Python代码与计算机之间的翻译官,把Python代码翻译成计算机能懂的语言。Python解释器......
  • 利用【MATLAB】和【Python】进行【图与网络模型】的高级应用与分析】
    目录一、图与网络的基本概念1.无向图与有向图2.简单图、完全图、赋权图3.顶点的度4.子图与连通性5.图的矩阵表示MATLAB代码实例Python代码实例 二、最短路径问题1.最短路径问题的定义2.Dijkstra算法MATLAB代码实例Python代码实例三、最小生成树问题1.......
  • python_wholeweek1
    目录(day1-7)一周的学习1.计算机之编程什么是编程语言什么是编程为什么要编程2.计算机组成原理计算机五大组成CPU控制器运算器内存外存输入设备输出设备(I/O设备)32位和64位32位64位多核CPU硬盘工作原理机械硬盘工作原理固态硬盘工作原理3.计算机操作系统文件是什么?应用程序是什......
  • python模块与包
    python模块与包1.模块(是一个python文件)自定义模块:(1)新建一个py文件在同一个project里然后可以用import先导入再在main里使用main.py importcc.ad(2,5)c.py defad(s,y):print(s+y)导入模块中的方法会自动实行被调用模块里所有所有语句(2)导入不同模块同一方法......
  • Python网络数据可视化全攻略【方法与技巧详解】
    ......