Открыть сервисСервис

HDF — сжатый формат хранения данных

HDF (англ. Hierarchical Data Format, «иерархический формат данных») — семейство форматов файлов для хранения и организации больших объёмов структурированных данных, разработанное Национальным центром суперкомпьютерных приложений (NCSA) при Иллинойсском университете в Урбане-Шампейне. HDF поддерживает иерархическую (деревовидную) структуру хранения, позволяющую объединять в одном файле разнородные данные — многомерные массивы, табличные данные, изображения, метаданные, — сопровождать их описаниями и обращаться к ним по имени.

История

Первая версия формата HDF была выпущена NCSA в 1992 году. Формат создавался для научных сообществ, работающих с большими объёмами наблюдательных данных — в первую очередь в астрономии, метеорологии и океанографии, где требовалось единое решение для хранения многомерных массивов сопровождаемых метаданными.

В 2000 году была выпущена HDF4 (HDF Release 4), а в 2002 году — HDF5, полностью переработанная версия с новой архитектурой хранения. HDF5 унаследовал основные идеи предшественника, но получил собственную систему групп, более гибкую модель ссылок и улучшенную производительность. Обе версии формата поддерживаются и развиваются HDF Group — некоммерческой организацией, выделенной из NCSA.

Структура файла

Внутри файла HDF данные организованы в виде дерева, аналогичного файловой системе. Основные элементы:

  • Группы — контейнеры, объединяющие другие группы и объекты; эквивалент каталогов в файловой системе.
  • Датасеты (datasets) — многомерные массивы однотипных данных (целых, вещественных, символьных), сопровождаемые атрибутами.
  • Атрибуты — небольшие пары «имя-значение», описывающие датасеты или группы (единицы измерения, координатные системы, история обработки).
  • Ссылки — механизм связей между объектами внутри файла, включая жёсткие ссылки на объекты и мягкие (символические) ссылки на путь.

Такая организация позволяет хранить в одном файле и сами данные, и их описание, что устраняет необходимость в отдельных вспомогательных файлах метаданных.

HDF4 и HDF5

HDF4 поддерживает несколько типов объектов, включая растровые изображения, наборы данных с подмножествами (SDS) и компонентные данные. Формат широко используется в NASA для хранения данных спутниковых наблюдений.

HDF5 решает ряд ограничений предыдущей версии: поддерживает произвольную вложенность групп, данные практически неограниченного размера, параллельный ввод-вывод через MPI, сжатие данных (алгоритмы GZIP, SZIP, без потерь). В HDF5 отсутствует жёсткая привязка к фиксированным типам данных, что делает формат более гибким.

Обе версии формата несовместимы между собой: файлы HDF4 и HDF5 имеют разные сигнатуры и структуру хранения.

Применение

HDF является де-факто стандартом в рядах научных областей:

  • Астрономия и астрофизика — формат HDF5 лёг в основу спецификации FITS-совместимого хранения, используется в проектах космических обсерваторий.
  • Земные науки — данные спутниковых наблюдений (MODIS, Landsat), климатические модели, сейсмические данные.
  • Физика высоких энергий — формат ROOT, разработанный в ЦЕРН, концептуально близок к HDF.
  • Машинное обучение — HDF5 применяется для хранения больших наборов обучающих данных, в частности в библиотеке TensorFlow (формат TFRecords концептуально родственен HDF5).

В России HDF активно используется в академических и прикладных исследованиях — при обработке данных дистанционного зондирования Земли, в задачах вычислительной физики и хранении результатов моделирования.

Программные реализации

Существуют официальные библиотеки для C, C++, Fortran, Java и Python (пакет h5py и PyTables). Поддержка HDF5 реализована в большинстве научных вычислительных сред — MATLAB, GNU Octave, R, Julia, а также в системах визуализации ParaView и VisIt.

См. также

  • FITS
  • NetCDF
  • Parquet
  • Файловые форматы хранения научных данных

Источники

  • HDF Group. HDF5 File Format Specification.
  • NCSA. HDF4 Reference Manual.
  • The HDF5 Data Model, File Format and API.
  • А. Колесников. Форматы хранения больших научных данных.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru