Hierarkiskt dataformat

Hierarkiskt dataformat
HDF transparent original.png
Filnamnstillägg .hdf , .h4 , .hdf4 , .he2 , .h5 , .hdf5 , .he5
Internet mediatyp application/x-hdf, application/x-hdf5
Magiskt nummer \211HDF\r\n\032\n
Utvecklad av HDF-gruppen
Senaste släppningen

5-1.12.2 19 april 2022 ; 10 månader sedan ( 2022-04-19 )
Typ av format Vetenskapligt dataformat
Öppna format ? Ja
Hemsida www .hdfgroup .org Edit this at Wikidata

Hierarchical Data Format ( HDF ) är en uppsättning filformat ( HDF4 , HDF5 ) utformade för att lagra och organisera stora mängder data. Ursprungligen utvecklad vid US National Center for Supercomputing Applications , stöds den av The HDF Group, ett icke-vinstdrivande företag vars uppdrag är att säkerställa fortsatt utveckling av HDF5-teknologier och fortsatt tillgänglighet för data som lagras i HDF.

I enlighet med detta mål är HDF-biblioteken och tillhörande verktyg tillgängliga under en liberal, BSD-liknande licens för allmänt bruk. HDF stöds av många kommersiella och icke-kommersiella programvaruplattformar och programmeringsspråk. Den fritt tillgängliga HDF-distributionen består av biblioteket, kommandoradsverktyg, testsvitskälla, Java-gränssnitt och den Java-baserade HDF Viewer (HDFView).

Den nuvarande versionen, HDF5, skiljer sig markant i design och API från den stora äldre versionen HDF4.

Tidig historia

Jakten på ett bärbart vetenskapligt dataformat, ursprungligen kallat AEHOO (All Encompassing Hierarchical Object Oriented format) började 1987 av Graphics Foundations Task Force (GFTF) vid National Center for Supercomputing Applications (NCSA). NSF-bidrag som erhölls 1990 och 1992 var viktiga för projektet. Runt denna tid NASA 15 olika filformat för användning i projektet Earth Observing System ( EOS). Efter en tvåårig granskningsprocess valdes HDF ut som standarddata- och informationssystem.

HDF4

HDF4 är den äldre versionen av formatet, även om det fortfarande stöds aktivt av The HDF Group. Den stöder en mängd olika datamodeller, inklusive flerdimensionella arrayer, rasterbilder och tabeller. Var och en definierar en specifik aggregerad datatyp och tillhandahåller ett API för att läsa, skriva och organisera data och metadata. Nya datamodeller kan läggas till av HDF-utvecklare eller användare.

HDF är självbeskrivande, vilket gör att en applikation kan tolka strukturen och innehållet i en fil utan extern information. En HDF-fil kan innehålla en blandning av relaterade objekt som kan nås som en grupp eller som individuella objekt. Användare kan skapa sina egna grupperingsstrukturer som kallas "vgroups".

HDF4-formatet har många begränsningar. Den saknar en tydlig objektmodell, vilket försvårar fortsatt stöd och förbättring. Att stödja många olika gränssnittsstilar (bilder, tabeller, arrayer) leder till ett komplext API. Stöd för metadata beror på vilket gränssnitt som används; SD- objekt (Scientific Dataset) stöder godtyckliga namngivna attribut, medan andra typer endast stöder fördefinierade metadata. Kanske viktigast av allt är att användningen av 32-bitars signerade heltal för adressering begränsar HDF4-filer till maximalt 2 GB, vilket är oacceptabelt i många moderna vetenskapliga tillämpningar.

HDF5

HDF5-formatet är utformat för att ta itu med några av begränsningarna i HDF4-biblioteket och för att möta nuvarande och förväntade krav från moderna system och applikationer. 2002 vann den ett R&D 100 Award.

HDF5 förenklar filstrukturen så att den bara inkluderar två huvudtyper av objekt:

HDF-strukturexempel
  • Datauppsättningar, som är typade flerdimensionella arrayer
  • Grupper, som är containerstrukturer som kan innehålla datamängder och andra grupper

Detta resulterar i ett verkligt hierarkiskt, filsystemliknande dataformat. [ förtydligande behövs ] [ citat behövs ] Faktum är att resurser i en HDF5-fil kan nås med den POSIX -liknande syntaxen /path/to/resource . Metadata lagras i form av användardefinierade namngivna attribut kopplade till grupper och datauppsättningar. Mer komplexa lagrings-API:er som representerar bilder och tabeller kan sedan byggas upp med hjälp av datauppsättningar, grupper och attribut.

Utöver dessa framsteg i filformatet innehåller HDF5 ett förbättrat typsystem och datarymdsobjekt som representerar urval över datauppsättningsregioner. API:et är också objektorienterat med avseende på datamängder, grupper, attribut, typer, datarymder och egenskapslistor.

Den senaste versionen av NetCDF , version 4, är baserad på HDF5.

Eftersom den använder B-träd för att indexera tabellobjekt, fungerar HDF5 bra för tidsseriedata som aktiekursserier, nätverksövervakningsdata och 3D-meteorologiska data. Huvuddelen av data går till enkla arrayer (tabellobjekten) som kan nås mycket snabbare än raderna i en SQL- databas, men B-trädåtkomst är tillgänglig för icke-arraydata. HDF5-datalagringsmekanismen kan vara enklare och snabbare än ett SQL- stjärnschema . [ exempel behövs ]

Respons

Kritik mot HDF5 följer av dess monolitiska design och långa specifikation.

  • HDF5 upprätthåller inte användningen av UTF-8 , så klientapplikationer kan förvänta sig ASCII på de flesta ställen.
  • Datauppsättningsdata kan inte frigöras i en fil utan att skapa en filkopia med hjälp av ett externt verktyg (h5repack).

Gränssnitt

Officiellt stödda API:er

  • C
  • C++
  • CLI - .Net
  • Fortran , Fortran 90
  • HDF5 Lite (H5LT) – ett lättviktsgränssnitt för C
  • HDF5 Image (H5IM) – ett C-gränssnitt för bilder eller raster
  • HDF5 Table (H5TB) – ett C-gränssnitt för tabeller
  • HDF5 Packet Table (H5PT) – gränssnitt för C och C++ för att hantera "paketdata", nås med hög hastighet
  • HDF5 Dimension Scale (H5DS) – gör att dimensionsskalor kan läggas till HDF5
  • Java

Tredje parts bindningar

Verktyg

Se även

externa länkar