Formato de datos jerárquico: Hierarchical Data Format

Formato de datos jerárquico
HDF logo.svg
Icono y logotipo de The HDF Group
Extensión de nombre de archivo .hdf, .h4, .hdf4, .he2, .h5, .hdf5,.he5
Tipo de medio de Internet aplicación / x-hdf, aplicación / x-hdf5
número mágico \ 211HDF \ r \ n \ 032 \ n
Desarrollado por El grupo HDF
Último lanzamiento
5-1.10.7
(16 de septiembre de 2020 ; hace 12 meses ) ( 16 de septiembre de 2020 )
Tipo de formato Formato de datos científicos
¿ Formato abierto ?
Sitio web www .hdfgroup .org Edita esto en Wikidata

El formato de datos jerárquico ( HDF ) es un conjunto de formatos de archivo ( HDF4 , HDF5 ) diseñado para almacenar y organizar grandes cantidades de datos. Desarrollado originalmente en el Centro Nacional de Aplicaciones de Supercomputación , cuenta con el apoyo de The HDF Group, una corporación sin fines de lucro cuya misión es garantizar el desarrollo continuo de las tecnologías HDF5 y la accesibilidad continua de los datos almacenados en HDF.

De acuerdo con este objetivo, las bibliotecas HDF y las herramientas asociadas están disponibles bajo una licencia liberal similar a BSD para uso general. HDF es compatible con muchas plataformas de software y lenguajes de programación comerciales y no comerciales. La distribución HDF disponible gratuitamente consta de la biblioteca, las utilidades de la línea de comandos, la fuente del conjunto de pruebas, la interfaz Java y el visor HDF basado en Java (HDFView).

La versión actual, HDF5, difiere significativamente en diseño y API de la versión heredada principal HDF4.

Historia temprana

La búsqueda de un formato de datos científicos portátil, originalmente denominado AEHOO (formato orientado a objetos jerárquicos que abarcan todo) comenzó en 1987 por el Grupo de trabajo de fundamentos gráficos (GFTF) en el Centro Nacional de Aplicaciones de Supercomputación (NCSA). Las subvenciones NSF recibidas en 1990 y 1992 fueron importantes para el proyecto. Alrededor de este tiempo, la NASA investigó 15 formatos de archivo diferentes para su uso en el proyecto del Sistema de Observación de la Tierra (EOS). Después de un proceso de revisión de dos años, se seleccionó HDF como el sistema estándar de datos e información.

HDF4

HDF4 es la versión anterior del formato, aunque aún es compatible activamente con The HDF Group. Admite una proliferación de diferentes modelos de datos, incluidas matrices multidimensionales, imágenes ráster y tablas. Cada uno define un tipo de datos agregados específico y proporciona una API para leer, escribir y organizar los datos y metadatos. Los desarrolladores o usuarios de HDF pueden agregar nuevos modelos de datos.

HDF es autodescriptivo, lo que permite que una aplicación interprete la estructura y el contenido de un archivo sin información externa. Un archivo HDF puede contener una combinación de objetos relacionados a los que se puede acceder como un grupo o como objetos individuales. Los usuarios pueden crear sus propias estructuras de agrupación llamadas "vgroups".

El formato HDF4 tiene muchas limitaciones. Carece de un modelo de objeto claro, lo que dificulta el soporte y la mejora continuos. La compatibilidad con muchos estilos de interfaz diferentes (imágenes, tablas, matrices) conduce a una API compleja. La compatibilidad con los metadatos depende de la interfaz que se esté utilizando; Los objetos SD (Scientific Dataset) admiten atributos con nombres arbitrarios, mientras que otros tipos solo admiten metadatos predefinidos. Quizás lo más importante es que el uso de enteros con signo de 32 bits para el direccionamiento limita los archivos HDF4 a un máximo de 2 GB, lo cual es inaceptable en muchas aplicaciones científicas modernas.

HDF5

El formato HDF5 está diseñado para abordar algunas de las limitaciones de la biblioteca HDF4 y para abordar los requisitos actuales y anticipados de los sistemas y aplicaciones modernos. En 2002 ganó un premio R&D 100 .

HDF5 simplifica la estructura de archivos para incluir solo dos tipos principales de objetos:

Ejemplo de estructura HDF
  • Conjuntos de datos, que son matrices multidimensionales de tipo homogéneo
  • Grupos, que son estructuras de contenedores que pueden contener conjuntos de datos y otros grupos

Esto da como resultado un formato de datos verdaderamente jerárquico, similar a un sistema de archivos. De hecho, se puede acceder a los recursos de un archivo HDF5 utilizando la sintaxis / ruta / a / recurso similar a POSIX . Los metadatos se almacenan en forma de atributos con nombre definidos por el usuario adjuntos a grupos y conjuntos de datos. A continuación, se pueden crear API de almacenamiento más complejas que representen imágenes y tablas utilizando conjuntos de datos, grupos y atributos.

Además de estos avances en el formato de archivo, HDF5 incluye un sistema de tipos mejorado y objetos de espacio de datos que representan selecciones sobre regiones de conjuntos de datos. La API también está orientada a objetos con respecto a conjuntos de datos, grupos, atributos, tipos, espacios de datos y listas de propiedades.

La última versión de NetCDF , la versión 4, se basa en HDF5.

Debido a que utiliza árboles B para indexar objetos de tabla, HDF5 funciona bien para datos de series de tiempo , como series de precios de acciones, datos de monitoreo de red y datos meteorológicos 3D. La mayor parte de los datos entra en matrices sencillas (los objetos de tabla) a las que se puede acceder mucho más rápidamente que las filas de una base de datos SQL , pero el acceso al árbol B está disponible para datos que no son de matriz. El mecanismo de almacenamiento de datos HDF5 puede ser más simple y rápido que un esquema en estrella SQL .

Realimentación

Las críticas a HDF5 se derivan de su diseño monolítico y su extensa especificación.

  • HDF5 no impone el uso de UTF-8 , por lo que las aplicaciones cliente pueden esperar ASCII en la mayoría de los lugares.
  • Los datos del conjunto de datos no se pueden liberar en un archivo sin generar una copia del archivo con una herramienta externa (h5repack).

Interfaces

API con soporte oficial

  • C
  • C ++
  • CLI - .Net
  • Fortran , Fortran 90
  • HDF5 Lite (H5LT): una interfaz liviana para C
  • Imagen HDF5 (H5IM): una interfaz C para imágenes o rásteres
  • Tabla HDF5 (H5TB): una interfaz C para tablas
  • Tabla de paquetes HDF5 (H5PT): interfaces para C y C ++ para manejar datos en "paquetes", a los que se accede a altas velocidades
  • Escala de dimensiones HDF5 (H5DS): permite agregar escalas de dimensiones a HDF5
  • Java

Enlaces de terceros

  • CGNS usa HDF5 como almacenamiento principal
  • Biblioteca común Lisp hdf5-cffi
  • D ofrece enlaces a la API de C , con un contenedor D de estilo h5py de alto nivel en desarrollo
  • Dymola introdujo la compatibilidad con la exportación HDF5 mediante una implementación llamada SDF (formato de datos científicos) con la versión Dymola 2016 FD01
  • Erlang , Elixir y LFE pueden usar los enlaces para lenguajes BEAM
  • Lenguaje de datos GNU
  • Ir - gonum 's hdf5 paquete.
  • HDFql permite a los usuarios administrar archivos HDF5 a través de un lenguaje de alto nivel (similar a SQL) en C, C ++, Java, Python, C #, Fortran y R.
  • El software Huygens utiliza HDF5 como formato de almacenamiento principal desde la versión 3.5
  • IDL
  • IGOR Pro ofrece soporte completo para archivos HDF5 .
  • JHDF5, un enlace Java alternativo que adopta un enfoque diferente al enlace oficial de Java HDF5 que algunos usuarios encuentran más simple
  • jHDF Una implementación pura de Java que proporciona acceso de solo lectura a archivos HDF5
  • JSON a través de hdf5-json .
  • Julia proporciona compatibilidad con HDF5 a través del paquete HDF5 .
  • LabVIEW puede obtener soporte HDF a través de bibliotecas de terceros, como h5labview y lvhdf5 .
  • Lua a través de la biblioteca lua-hdf5 .
  • MATLAB , Scilab u Octave : use HDF5 como formato de almacenamiento principal en versiones recientes
  • Mathematica ofrece análisis inmediato de datos HDF y HDF5
  • Perl
  • Python admite HDF5 a través de h5py ( acceso de alto y bajo nivel a abstracciones de HDF5) y a través de PyTables (una interfaz de alto nivel con indexación avanzada y capacidades de consulta similares a bases de datos). HDF4 está disponible a través de Python-HDF4 y / o PyHDF para Python 2 y Python 3. El popular paquete de manipulación de datos pandas puede importar y exportar a HDF5 a través de PyTables.
  • R ofrece soporte en los paquetes rhdf5 y hdf5r .
  • Rust puede obtener compatibilidad con HDF a través de bibliotecas de terceros como hdf5 .

Instrumentos

  • Conector HDF5 de Apache Spark Conector HDF5 para Apache Spark
  • Apache Drill HDF5 Plugin HDF5 Plugin para Apache Drill habilita consultas SQL sobre archivos HDF5.
  • HDF Product Designer Herramienta de interfaz gráfica de usuario interoperable para la creación de productos de datos HDF5
  • HDF Explorer Un programa de visualización de datos que lee los formatos de archivo de datos HDF, HDF5 y netCDF.
  • HDFView Un navegador y editor para archivos HDF
  • ViTables Un navegador y editor para archivos HDF5 y PyTables escritos en Python
  • Panoply Un visor de datos netCDF, HDF y GRIB

Ver también

Referencias

enlaces externos

Este artículo se basa en material extraído del Diccionario gratuito de informática en línea antes del 1 de noviembre de 2008 e incorporado bajo los términos de "renovación de licencias" de la GFDL , versión 1.3 o posterior.