Введение

Набор форматов файлов

Иерархический формат данных (HDF) — это набор форматов файлов (HDF4, HDF5), предназначенных для хранения и организации больших объемов данных. Изначально разработанный в Национальном центре США по суперкомпьютерным приложениям, он поддерживается организацией HDF Group, некоммерческой корпорацией, целью которой является обеспечение дальнейшего развития технологий HDF5 и сохранение доступности данных, хранящихся в формате HDF. В соответствии с этой целью, библиотеки HDF и сопутствующие инструменты распространяются под либеральной лицензией, аналогичной BSD, для общего использования. HDF поддерживается многими коммерческими и некоммерческими программными платформами и языками программирования. Бесплатно распространяемый пакет HDF включает в себя библиотеку, утилиты командной строки, исходный код тестового набора, интерфейс Java и Java-основанный просмотрщик HDF (HDFView). Текущая версия, HDF5, значительно отличается по архитектуре и API от основной устаревшей версии HDF4.

Ранняя история

Поиск портативного формата научных данных, первоначально названного AEHOO (All Encompassing Hierarchical Object Oriented format), начался в 1987 году рабочей группой Graphics Foundations Task Force (GFTF) при Национальном центре суперкомпьютерных приложений (NCSA). Гранты NSF, полученные в 1990 и 1992 годах, имели важное значение для проекта. В это же время NASA исследовал 15 различных форматов файлов для использования в проекте Earth Observing System (EOS). После двухлетнего процесса оценки HDF был выбран в качестве стандартной системы данных и информации.

HDF4

HDF4 – это более ранняя версия формата, хотя она всё ещё активно поддерживается The HDF Group. Она поддерживает множество различных моделей данных, включая многомерные массивы, растровые изображения и таблицы. Каждая из них определяет конкретный агрегированный тип данных и предоставляет API для чтения, записи и организации данных и метаданных. Новые модели данных могут быть добавлены разработчиками HDF или пользователями. HDF является самоописываемым, что позволяет приложению интерпретировать структуру и содержимое файла без какой-либо внешней информации. Один HDF-файл может содержать смесь связанных объектов, к которым можно обращаться как к группе или к отдельным объектам. Пользователи могут создавать собственные структуры группировки, называемые "vgroups". Формат HDF4 имеет множество ограничений. Ему не хватает чёткой объектной модели, что затрудняет дальнейшую поддержку и совершенствование. Поддержка множества различных интерфейсов (изображений, таблиц, массивов) приводит к сложному API. Поддержка метаданных зависит от используемого интерфейса: объекты SD (Scientific Dataset – научный набор данных) поддерживают произвольные именованные атрибуты, в то время как другие типы поддерживают только предопределённые метаданные. И, пожалуй, самое важное, использование 32-битных целых чисел со знаком для адресации ограничивает размер файлов HDF4 до 2 ГБ, что неприемлемо для многих современных научных приложений.

Отзывы

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