Формат иерархических данных

редактировать
Формат иерархических данных
HDF logo.svg Значок и логотип для группы HDF
Расширение имени файла .hdf, .h4, .hdf4, .he2, .h5, .hdf5, . he5
Магическое число \ 211HDF \ r \ n \ 032 \ n
РазработаноThe HDF Group
Последний выпуск 5-1.10.7. ( 16 сентября 2020 г.; 44 дня назад (2020-09-16)
Тип форматаФормат научных данных
Открытый формат ?Да
Веб-сайтwww.hdfgroup.org Измените это на Wikidata

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

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

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

Содержание
  • 1 Ранняя история
  • 2 HDF4
  • 3 HDF5
    • 3.1 Критика
  • 4 Интерфейсы
    • 4.1 Официально поддерживаемые API
    • 4.2 Сторонние привязки
  • 5 Инструменты
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
Ранняя история

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

HDF4

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

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

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

HDF5

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

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

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

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

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

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

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

Критика

Критика HDF5 следует из его монолитной конструкции и длинных спецификаций.

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

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

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

Сторонние привязки

  • CGNS использует HDF5 в качестве основного хранилища
  • Библиотека Common Lisp hdf5-cffi
  • D предлагает привязки к C API с разрабатываемой высокоуровневой оболочкой D в стиле h5py
  • Dymola представила поддержку экспорта HDF5 с использованием реализации под названием (Scien специальный формат данных) с выпуском Dymola 2016 FD01
  • Erlang, Elixir и LFE могут использовать привязки для языков BEAM
  • GNU Data Language
  • Go - пакет gonum hdf5.
  • HDFql позволяет пользователям управлять файлами HDF5 через язык высокого уровня (аналогичный SQL) в C, C ++, Java, Python, C #, Fortran и R.
  • Huygens Software использует HDF5 в качестве основного формата хранения, начиная с версии 3.5
  • IDL
  • IGOR Pro предлагает полную поддержку файлов HDF5.
  • JHDF5, альтернативная привязка Java, которая использует подход, отличный от официальной привязки Java HDF5, который некоторые пользователи считают более простым
  • jHDF Чистая реализация Java, обеспечивающая доступ только для чтения к файлам HDF5 с
  • JSON по hdf5-json.
  • Джулия обеспечивает поддержку HDF5 через пакет HDF5.
  • LabVIEW может получить поддержку HDF с помощью сторонних библиотек, таких как h5labview и lvhdf5.
  • Lua через библиотеку lua-hdf5.
  • MATLAB, Scilab или Octave - используйте HDF5 в качестве основного формата хранения в последних выпусках
  • Mathematica предлагает немедленный анализ данных HDF и HDF5
  • Perl
  • 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 Совместимость HDF5 инструмент графического интерфейса для создания продуктов данных
  • HDF Explorer Программа визуализации данных, которая считывает файлы данных в форматах HDF, HDF5 и netCDF.
  • HDFView Браузер и редактор для файлов HDF
  • ViTables A браузер и редактор файлов HDF5 и PyTables, написанных на Python
См. также
  • Common Data Format (CDF)
  • FITS, формат данных, используемый в астрономии
  • GRIB ( GRIdded Binary), формат данных, используемый в метеорологии
  • HDF Explor er
  • NetCDF, библиотека Java Netcdf читает HDF5, HDF4, HDF-EOS и другие форматы с использованием чистой Java
  • Protocol Buffers - формат обмена данными Google
Ссылки
Внешние ссылки

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

Последняя правка сделана 2021-05-23 11:21:00
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте