Иерархический формат данных


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

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

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

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

История ранних веков

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

HDF4

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

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

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

HDF5

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

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

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

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

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

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

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

Обратная связь

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

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

Интерфейсы

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

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

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

  • CGNS использует HDF5 в качестве основного хранилища
  • Общая библиотека Lisp hdf5-cffi
  • D предлагает привязки к C API с высокоуровневой оболочкой D в стиле h5py, находящейся в разработке.
  • Dymola представила поддержку экспорта HDF5 с использованием реализации под названием SDF (Scientific Data Format) в выпуске Dymola 2016 FD01.
  • Erlang , Elixir и LFE могут использовать привязки для языков BEAM .
  • Язык данных GNU
  • Go - пакет hdf5 для gonum .
  • HDFql позволяет пользователям управлять файлами HDF5 с помощью языка высокого уровня (похожего на SQL) на C, C++, Java, Python, C#, Fortran и R.
  • Huygens Software использует 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.
  • Перл [10]
  • Python поддерживает HDF5 через h5py (как высокоуровневый, так и низкоуровневый доступ к абстракциям HDF5) и через PyTables (высокоуровневый интерфейс с расширенными возможностями индексирования и запросов, подобных базе данных). HDF4 доступен через Python-HDF4 и/или PyHDF как для Python 2, так и для Python 3. Панды популярного пакета обработки данных могут импортировать и экспортировать в 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 Средство просмотра данных netCDF, HDF и GRIB

Смотрите также

  • Общий формат данных (CDF)
  • FITS — формат данных, используемый в астрономии.
  • GRIB (GRIdded Binary), формат данных, используемый в метеорологии.
  • Обозреватель HDF
  • 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" . Проверено 15 июля 2014 г.
  4. ^ Чем HDF5 отличается от HDF4? Архивировано 30 марта 2009 г. в Wayback Machine .
  5. ^ «Есть ли ограничения для файлов HDF4?» . Архивировано из оригинала 19 апреля 2016 г. Проверено 29 марта 2009 г. .
  6. ↑ Архивы наград R & D 100 , заархивированные 4 января 2011 г. в Wayback Machine .
  7. ^ Россант, Сирил. «Отход от HDF5» . cyrille.rossant.net . Проверено 21 апреля 2016 г.
  8. ^ Библиотека JHDF5
  9. ^ Документация Mathematica по импорту и экспорту HDF
  10. ^ PDL::IO::HDF5

внешняя ссылка

  • Официальный сайт
  • Что такое HDF5?
  • Центр инструментов и информации HDF-EOS
  • Открыть поверхность навигации
Получено с https://en.wikipedia.org/w/index.php?title=Hierarchical_Data_Format&oldid=1060133074 "