Иерархический формат данных - Hierarchical Data Format
Значок и логотип HDF Group | |
Расширение имени файла | .hdf , .h4 , .hdf4 , .he2 , .h5 , .hdf5 , .he5 |
---|---|
Магическое число | 211HDF r n 032 n |
Разработан | Группа HDF |
Последний релиз | 5-1.10.7[1] (16 сентября 2020 г. ) |
Тип формата | Формат научных данных |
Открытый формат ? | да |
Интернет сайт | www |
Иерархический формат данных (HDF) представляет собой набор форматов файлов (HDF4, HDF5) предназначен для хранения и организации больших объемов данных. Первоначально разработан в Национальный центр суперкомпьютерных приложений, его поддерживает The 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 упрощает файловую структуру и включает только два основных типа объектов:
- Наборы данных, которые представляют собой многомерные массивы однородного типа.
- Группы, которые представляют собой контейнерные структуры, которые могут содержать наборы данных и другие группы.
Это приводит к действительно иерархическому формату данных, подобному файловой системе.[требуется разъяснение ][нужна цитата ] Фактически, к ресурсам в файле 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 - .Сеть
- Фортран, Фортран 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 в стадии разработки
- Димола добавлена поддержка экспорта HDF5 с использованием реализации, называемой SDF (Формат научных данных) с выпуском Dymola 2016 FD01
- Erlang, Эликсир, и LFE может использовать привязки для языков BEAM
- Язык данных GNU
- Идти - гонум с hdf5 пакет.
- HDFql позволяет пользователям управлять файлами HDF5 с помощью языка высокого уровня (похожего на SQL) в C, C ++, Java, Python, C #, Fortran и R.
- Программное обеспечение Huygens использует HDF5 в качестве основного формата хранения, начиная с версии 3.5
- IDL
- ИГОРЬ ПРО предложения полная поддержка HDF5 файлы.
- JHDF5,[8] альтернатива Ява привязка, которая использует другой подход, чем официальная привязка Java HDF5, которую некоторые пользователи считают более простой
- jHDF Чистый Ява реализация, обеспечивающая доступ только для чтения к файлам HDF5
- JSON через HDF5-JSON.
- Юля обеспечивает поддержку HDF5 через HDF5 пакет.
- LabVIEW может получить поддержку HDF через сторонние библиотеки, такие как h5labview и lvhdf5.
- Lua сквозь lua-hdf5 библиотека.
- MATLAB, Scilab или Октава - использовать HDF5 в качестве основного формата хранения в последних выпусках
- Mathematica[9] предлагает немедленный анализ данных HDF и HDF5
- Perl[10]
- Python поддерживает HDF5 через h5py (как высокоуровневый, так и низкоуровневый доступ к абстракциям HDF5) и через PyTables (высокоуровневый интерфейс с расширенными возможностями индексации и запросов к базе данных). HDF4 доступен через Python-HDF4 и / или PyHDF как для Python 2, так и для Python 3. Популярный пакет для обработки данных панды можно импортировать и экспортировать в HDF5 через PyTables.
- р предлагает поддержку в rhdf5 и hdf5r пакеты.
- Ржавчина может получить поддержку 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 Браузер и редактор файлов HDF5 и PyTables, написанные на Python.
Смотрите также
- Общий формат данных (CDF)
- ПОДХОДИТ, формат данных, используемый в астрономии
- GRIB (GRIdded Binary), формат данных, используемый в метеорологии.
- HDF Explorer
- NetCDF, Библиотека Netcdf Java читает HDF5, HDF4, HDF-EOS и другие форматы с использованием чистой Java
- Буферы протокола - Формат обмена данными Google
использованная литература
- ^ "HDF5 версия 1.10.7 от 16 сентября 2020 г.". Получено 16 сен 2020.
- ^ Средство просмотра HDF на основе Java (HDFView)
- ^ «История HDF Group». Получено 15 июля 2014.
- ^ Чем HDF5 отличается от HDF4? В архиве 2009-03-30 на Wayback Machine
- ^ "Есть ли ограничения для файлов HDF4?". Архивировано из оригинал на 2016-04-19. Получено 2009-03-29.
- ^ Архив наград R&D 100 В архиве 2011-01-04 в Wayback Machine
- ^ Россант, Сирил. «Отход от HDF5». cyrille.rossant.net. Получено 21 апреля 2016.
- ^ Библиотека JHDF5
- ^ Импорт и экспорт HDF Документация по системе Mathematica
- ^ PDL :: IO :: HDF5
внешние ссылки
- Официальный веб-сайт
- Что такое HDF5?
- Центр инструментов и информации HDF-EOS
- Открыть поверхность навигации
Статья основана на материалах, взятых из Бесплатный онлайн-словарь по вычислительной технике до 1 ноября 2008 г. и зарегистрированы в соответствии с условиями «перелицензирования» GFDL, версия 1.3 или новее.