Иерархический формат данных
Расширение имени файла | .hdf , .h4 , .hdf4 , .he2 , .h5 , .hdf5 , .he5 |
---|---|
Тип интернет-СМИ | приложение/x-hdf, приложение/x-hdf5 |
Магическое число | \211HDF\r\n\032\n |
Разработано | Группа ХДФ |
Тип формата | Формат научных данных |
Открытый формат ? | Да |
Веб-сайт | www |
Иерархический формат данных ( HDF ) — набор форматов файлов ( HDF4 , HDF5 ), предназначенных для хранения и организации больших объемов данных. США Первоначально разработанный в Национальном центре суперкомпьютерных приложений , он поддерживается The HDF Group, некоммерческой корпорацией, миссией которой является обеспечение дальнейшего развития технологий HDF5 и постоянной доступности данных, хранящихся в HDF.
В соответствии с этой целью библиотеки HDF и связанные с ними инструменты доступны по либеральной лицензии типа BSD для общего использования. HDF поддерживается многими коммерческими и некоммерческими программными платформами и языками программирования. Свободно доступный дистрибутив HDF состоит из библиотеки, утилит командной строки, исходного кода набора тестов, интерфейса Java и средства просмотра HDF на основе Java (HDFView). [1]
Текущая версия HDF5 существенно отличается по дизайну и API от основной устаревшей версии HDF4.
Ранняя история
[ редактировать ]Поиски портативного формата научных данных, первоначально получившего название AEHOO (Всеохватывающий иерархический объектно-ориентированный формат), начались в 1987 году Целевой группой по графическим основам (GFTF) Национального центра суперкомпьютерных приложений (NCSA). Гранты НФС, полученные в 1990 и 1992 годах, сыграли важную роль в проекте. Примерно в это же время НАСА исследовало 15 различных форматов файлов для использования в проекте Системы наблюдения Земли (EOS). После двухлетнего процесса рассмотрения HDF была выбрана в качестве стандартной системы данных и информации. [2]
HDF4
[ редактировать ]HDF4 — более старая версия формата, хотя она все еще активно поддерживается The HDF Group. Он поддерживает множество различных моделей данных, включая многомерные массивы, растровые изображения и таблицы. Каждый из них определяет конкретный совокупный тип данных и предоставляет API для чтения, записи и организации данных и метаданных. Новые модели данных могут добавлять разработчики или пользователи HDF.
HDF является самоописывающимся, что позволяет приложению интерпретировать структуру и содержимое файла без какой-либо внешней информации. Один файл HDF может содержать набор связанных объектов, к которым можно получить доступ как к группе, так и к отдельным объектам. Пользователи могут создавать свои собственные структуры группировки, называемые «vgroups».
Формат HDF4 имеет множество ограничений. [3] [4] Ему не хватает четкой объектной модели, что затрудняет дальнейшую поддержку и улучшение. Поддержка множества различных стилей интерфейса (изображений, таблиц, массивов) приводит к сложному API. Поддержка метаданных зависит от того, какой интерфейс используется; Объекты SD (набор научных данных) поддерживают произвольные именованные атрибуты, тогда как другие типы поддерживают только предопределенные метаданные. Возможно, самое главное то, что использование 32-битных целых чисел со знаком для адресации ограничивает размер файлов HDF4 максимум 2 ГБ, что неприемлемо для многих современных научных приложений.
HDF5
[ редактировать ]Формат HDF5 предназначен для устранения некоторых ограничений библиотеки HDF4, а также для удовлетворения текущих и ожидаемых требований современных систем и приложений. В 2002 году он получил награду R&D 100 Award . [5]
HDF5 упрощает файловую структуру, включив в нее только два основных типа объектов:
- Наборы данных, которые представляют собой типизированные многомерные массивы.
- Группы, представляющие собой структуры-контейнеры, в которых могут храниться наборы данных и другие группы.
В результате получается действительно иерархический формат данных, подобный файловой системе. [ нужны разъяснения ] [ нужна ссылка ] Фактически, доступ к ресурсам в файле HDF5 можно получить с помощью POSIX -подобного синтаксиса /path/to/resource . Метаданные хранятся в форме определяемых пользователем именованных атрибутов, прикрепленных к группам и наборам данных. Затем можно создать более сложные API-интерфейсы хранения, представляющие изображения и таблицы, с использованием наборов данных, групп и атрибутов.
В дополнение к этим достижениям в формате файла HDF5 включает улучшенную систему типов и объекты пространства данных, которые представляют собой выборки по областям набора данных. API также объектно-ориентирован в отношении наборов данных, групп, атрибутов, типов, пространств данных и списков свойств.
Последняя версия NetCDF , версия 4, основана на HDF5.
Поскольку HDF5 использует B-деревья для индексации объектов таблицы, он хорошо работает с данными временных рядов , такими как ряды цен на акции, данные сетевого мониторинга и трехмерные метеорологические данные. Основная часть данных помещается в простые массивы (объекты таблиц), доступ к которым осуществляется гораздо быстрее, чем к строкам базы данных SQL , но доступ к B-дереву доступен и для данных, не являющихся массивами. Механизм хранения данных HDF5 может быть проще и быстрее, чем звездообразная схема SQL . [ нужен пример ]
Обратная связь
[ редактировать ]Критика HDF5 вызвана его монолитной конструкцией и подробной спецификацией.
- HDF5 не требует использования UTF-8 , поэтому клиентские приложения в большинстве мест могут ожидать ASCII.
- Данные набора данных невозможно освободить из файла без создания копии файла с помощью внешнего инструмента (h5repack). [6]
Интерфейсы
[ редактировать ]Официально поддерживаемые 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 — gonum от пакет hdf5 .
- HDFql позволяет пользователям управлять файлами HDF5 с помощью языка высокого уровня (похожего на SQL) на C, C++, Java, Python, C#, Fortran и R.
- Haskell предлагает привязки к C API .
- Программное обеспечение Huygens использует HDF5 в качестве основного формата хранения, начиная с версии 3.5.
- МВУ
- IGOR Pro предлагает полную поддержку файлов HDF5.
- ДЖДФ5, [7] альтернативная привязка Java , использующая подход, отличный от официальной привязки Java HDF5, которую некоторые пользователи находят более простой.
- jHDF Чистая реализация Java , обеспечивающая доступ только для чтения к файлам HDF5.
- JSON через hdf5-json .
- Поддержка Julia для HDF5 доступна через пакеты HDF5 и JLD2 .
- LabVIEW может получить поддержку HDF через сторонние библиотеки, такие как h5labview и lvhdf5 .
- Lua через библиотеку lua-hdf5 .
- MATLAB , Scilab или Octave — используйте HDF5 в качестве основного формата хранения в последних выпусках.
- Математика [8] предлагает немедленный анализ данных HDF и HDF5
- Перл [9]
- 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 Средство просмотра данных netCDF, HDF и GRIB.
- silx Браузер для файлов HDF, специально предназначенный для данных синхротронного рентгеновского излучения.
- h5web Для просмотра файлов HDF в браузере или в коде Visual Studio.
См. также
[ редактировать ]- Общий формат данных (CDF)
- FITS — формат данных, используемый в астрономии.
- GRIB (GRIDded Binary), формат данных, используемый в метеорологии.
- HDF-проводник
- NetCDF . Библиотека Netcdf Java читает HDF5, HDF4, HDF-EOS и другие форматы, используя чистую Java.
- Протокольные буферы — формат обмена данными Google.
Ссылки
[ редактировать ]- ^ Средство просмотра HDF на основе Java (HDFView)
- ^ «История группы HDF» . Проверено 15 июля 2014 г.
- ^ Чем HDF5 отличается от HDF4? Архивировано 30 марта 2009 г. в Wayback Machine.
- ^ «Есть ли ограничения для файлов HDF4?» . Архивировано из оригинала 19 апреля 2016 г. Проверено 29 марта 2009 г.
- ^ Архивы наград R&D 100, заархивированные 4 января 2011 г. в Wayback Machine.
- ^ Россант, Сирил. «Отход от HDF5» . cyrill.rossant.net . Проверено 21 апреля 2016 г.
- ^ Библиотека JHDF5
- ^ по импорту и экспорту HDF Mathematica Документация
- ^ PDL::IO::HDF5