Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Иерархический формат данных ( HDF ) - это набор форматов файлов ( HDF4 , HDF5 ), предназначенных для хранения и организации больших объемов данных. Первоначально разработанный в Национальном центре приложений для суперкомпьютеров , он поддерживается некоммерческой корпорацией HDF Group, чья миссия заключается в обеспечении непрерывного развития технологий HDF5 и постоянной доступности данных, хранящихся в HDF.

В соответствии с этой целью библиотеки HDF и связанные с ними инструменты доступны по либеральной BSD-подобной лицензии для общего использования. HDF поддерживается многими коммерческими и некоммерческими программными платформами и языками программирования. Свободно доступный дистрибутив HDF состоит из библиотеки, утилит командной строки, исходного кода набора тестов, интерфейса Java и средства просмотра HDF Viewer (HDFView) на основе Java. [2]

Текущая версия HDF5 значительно отличается по дизайну и API от основной устаревшей версии HDF4.

Ранняя история [ править ]

Поиски портативного формата научных данных, первоначально получившего название AEHOO (Всеохватывающий иерархический объектно-ориентированный формат), начались в 1987 году Целевой группой по основам графики (GFTF) в Национальном центре суперкомпьютерных приложений (NCSA). Гранты NSF, полученные в 1990 и 1992 годах, были важны для проекта. Примерно в это же время НАСА исследовало 15 различных форматов файлов для использования в проекте системы наблюдения за Землей (EOS). После двухлетнего обзора HDF была выбрана в качестве стандартной системы данных и информации. [3]

HDF4 [ править ]

HDF4 - это более старая версия формата, хотя она все еще активно поддерживается HDF Group. Он поддерживает множество различных моделей данных, включая многомерные массивы, растровые изображения и таблицы. Каждый определяет конкретный тип агрегированных данных и предоставляет API для чтения, записи и организации данных и метаданных. Новые модели данных могут быть добавлены разработчиками или пользователями HDF.

HDF является самоописывающимся, что позволяет приложению интерпретировать структуру и содержимое файла без какой-либо внешней информации. Один файл HDF может содержать набор связанных объектов, к которым можно получить доступ как к группе или как к отдельным объектам. Пользователи могут создавать свои собственные групповые структуры, называемые «vgroups».

Формат HDF4 имеет множество ограничений. [4] [5] В нем отсутствует четкая объектная модель, что затрудняет дальнейшую поддержку и улучшение. Поддержка множества различных стилей интерфейса (изображений, таблиц, массивов) приводит к сложному API. Поддержка метаданных зависит от того, какой интерфейс используется; Объекты SD (научный набор данных) поддерживают произвольные именованные атрибуты, в то время как другие типы поддерживают только предопределенные метаданные. Возможно, наиболее важно то, что использование 32-битных целых чисел со знаком для адресации ограничивает файлы HDF4 максимум 2 ГБ, что недопустимо во многих современных научных приложениях.

HDF5 [ править ]

Формат HDF5 разработан для устранения некоторых ограничений библиотеки HDF4, а также для удовлетворения текущих и ожидаемых требований современных систем и приложений. В 2002 году он получил премию R&D 100 . [6]

HDF5 упрощает файловую структуру и включает только два основных типа объектов:

Пример конструкции HDF
  • Наборы данных, которые представляют собой многомерные массивы однородного типа.
  • Группы, которые представляют собой контейнерные структуры, которые могут содержать наборы данных и другие группы.

Это приводит к действительно иерархическому формату данных, подобному файловой системе. [ требуется пояснение ] [ необходима цитата ] Фактически, к ресурсам в файле HDF5 можно получить доступ, используя синтаксис, подобный POSIX, / путь / к / ресурсу . Метаданные хранятся в виде определенных пользователем именованных атрибутов, прикрепленных к группам и наборам данных. Затем можно создать более сложные API-интерфейсы хранилища, представляющие изображения и таблицы, с использованием наборов данных, групп и атрибутов.

Помимо этих улучшений в формате файлов, HDF5 включает улучшенную систему типов и объекты пространств данных, которые представляют выборки по областям набора данных. API также является объектно-ориентированным в отношении наборов данных, групп, атрибутов, типов, пространств данных и списков свойств.

Последняя версия NetCDF , версия 4, основана на HDF5.

Поскольку он использует B-деревья для индексации табличных объектов, HDF5 хорошо работает для данных временных рядов, таких как ряды курсов акций, данные сетевого мониторинга и трехмерные метеорологические данные. Основная часть данных переходит в простые массивы (объекты таблиц), к которым можно получить доступ гораздо быстрее, чем к строкам базы данных SQL , но доступ к B-дереву доступен для данных, не являющихся массивами. Механизм хранения данных HDF5 может быть проще и быстрее, чем схема «звезда» SQL . [ необходим пример ]

Критика [ править ]

Критика HDF5 обусловлена ​​его монолитностью и пространностью спецификации.

  • HDF5 не требует использования UTF-8 , поэтому клиентские приложения могут ожидать ASCII в большинстве мест.
  • Данные набора данных нельзя освободить в файле без создания копии файла с помощью внешнего инструмента (h5repack). [7]

Интерфейсы [ править ]

Официально поддерживаемые API [ править ]

  • C
  • C ++
  • CLI - .Net
  • Фортран , Фортран 90
  • HDF5 Lite (H5LT) - легкий интерфейс для C
  • HDF5 Image (H5IM) - интерфейс C для изображений или растров
  • HDF5 Table (H5TB) - интерфейс C для таблиц
  • Таблица пакетов HDF5 (H5PT) - интерфейсы для C и C ++ для обработки "пакетных" данных, доступ к которым осуществляется на высоких скоростях.
  • Шкала размеров HDF5 (H5DS) - позволяет добавлять шкалы размеров в HDF5
  • Ява

Сторонние привязки [ править ]

  • CGNS использует HDF5 в качестве основного хранилища
  • Библиотека Common Lisp hdf5-cffi
  • D предлагает привязки к C API с разрабатываемой оболочкой D высокого уровня в стиле h5py.
  • Dymola представила поддержку экспорта HDF5 с использованием реализации под названием SDF (Scientific Data Format) с выпуском Dymola 2016 FD01.
  • Erlang , Elixir и LFE могут использовать привязки для языков BEAM.
  • Язык данных GNU
  • Go - gonum «s hdf5 пакет.
  • HDFql позволяет пользователям управлять файлами HDF5 с помощью языка высокого уровня (похожего на SQL) в C, C ++, Java, Python, C #, Fortran и R.
  • Программное обеспечение Huygens использует HDF5 в качестве основного формата хранения, начиная с версии 3.5.
  • IDL
  • IGOR Pro предлагает полную поддержку файлов HDF5 .
  • JHDF5, [8] альтернативная привязка Java , использующая подход, отличный от официальной привязки Java HDF5, который некоторые пользователи считают более простым.
  • jHDF Реализация на чистом Java, обеспечивающая доступ только для чтения к файлам HDF5.
  • JSON через hdf5-json .
  • Юлия обеспечивает поддержку HDF5 через пакет HDF5 .
  • LabVIEW может получить поддержку HDF с помощью сторонних библиотек, таких как h5labview и lvhdf5 .
  • Lua через библиотеку lua-hdf5 .
  • MATLAB , Scilab или Octave - используйте HDF5 в качестве основного формата хранения в последних выпусках
  • Mathematica [9] предлагает немедленный анализ данных HDF и HDF5.
  • Perl [10]
  • Python поддерживает HDF5 через h5py (как высокоуровневый, так и низкоуровневый доступ к абстракциям HDF5) и через PyTables (высокоуровневый интерфейс с расширенным индексированием и возможностями запросов, аналогичными базе данных). HDF4 доступен через Python-HDF4 и / или PyHDF как для Python 2, так и для Python 3. Популярный пакет обработки данных pandas может импортировать и экспортировать в HDF5 через PyTables.
  • R предлагает поддержку в пакетах rhdf5 и hdf5r .
  • Rust может получить поддержку HDF через сторонние библиотеки, такие как hdf5 .

Инструменты [ править ]

  • Разъем Apache Spark HDF5 Разъем HDF5 для Apache Spark
  • Плагин Apache Drill HDF5 Плагин HDF5 для Apache Drill позволяет выполнять запросы SQL к файлам HDF5.
  • Инструмент с графическим интерфейсом для создания продуктов данных HDF Product Designer с возможностью взаимодействия с HDF5
  • HDF Explorer Программа визуализации данных, которая считывает файлы данных в форматах HDF, HDF5 и netCDF.
  • HDFView Браузер и редактор файлов HDF.
  • ViTables Браузер и редактор файлов HDF5 и PyTables, написанных на Python.
  • Panoply A netCDF, HDF и просмотрщик данных GRIB

См. Также [ править ]

  • Общий формат данных (CDF)
  • FITS , формат данных, используемый в астрономии.
  • GRIB (GRIdded Binary), формат данных, используемый в метеорологии.
  • HDF Explorer
  • NetCDF , библиотека Java Netcdf читает HDF5, HDF4, HDF-EOS и другие форматы с использованием чистой Java
  • Protocol Buffers - формат обмена данными Google

Ссылки [ править ]

  1. ^ "HDF5 версии 1.10.7 от 16 сентября 2020 г." . Дата обращения 16 сен 2020 .
  2. ^ Программа просмотра HDF на основе Java (HDFView)
  3. ^ «История HDF Group» . Проверено 15 июля 2014 года .
  4. ^ Чем HDF5 отличается от HDF4? Архивировано 30 марта 2009 г. в Wayback Machine.
  5. ^ "Есть ли ограничения для файлов HDF4?" . Архивировано из оригинала на 2016-04-19 . Проверено 29 марта 2009 .
  6. ^ Архив наград R&D 100, заархивированный 04.01.2011 в Wayback Machine
  7. ^ Россант, Сирил. «Уходя от HDF5» . cyrille.rossant.net . Проверено 21 апреля 2016 года .
  8. ^ Библиотека JHDF5
  9. ^ Документация по программе Mathematica для импорта и экспорта HDF
  10. ^ PDL :: IO :: HDF5

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Что такое HDF5?
  • Инструментальный и информационный центр HDF-EOS
  • Открытая поверхность навигации

Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.