Hierarchical Data Format

 Hierarchical Data Format（階層的データ形式、略称：HDF）は、大量のデータを格納および構造化するために設計した一連のファイル形式（HDF4、HDF5）。米国立スーパーコンピュータ応用研究所が開発し、非営利法人である HDF グループが対応している。HDFグループは、HDF5 技術の継続的な開発と HDF で保存しデータの継続的な提供を確保することを使命としている。 
HDF ライブラリと関連ツールは自由なBSDライセンスの下で幅広く利用できる。 HDF は多くの商用および非商用ソフトウェアプラットフォームとプログラミング言語でサポートされている。 無料で利用できる HDF ディストリビューションは、ライブラリ、コマンドラインユーティリティ、テストスイートソース、Java インターフェイス、Java ベースのHDFビューアー（HDFView）で構成されている。 
現行の HDF5 は、旧来の HDF4 とはデザインも API も大きく異なる。
初期の歴史.
ポータブルな科学データ形式は当初 AEHOO（All Encompassing Hierarchical Object Oriented）形式と呼ばれ、1987年に米国立スーパーコンピュータ応用研究所（NCSA）のグラフィック財団タスクフォース（GFTF）によって探求が始められた。 1990年と1992年に受け取った NSF 助成金は同プロジェクトにとって重要だった。 この頃 NASA は、地球観測システム（EOS）プロジェクトで使用するために 15 種類のファイル形式を調査した。2 年間の評価期間を経て、HDF がデータおよび情報システムの標準として採用された。 
HDF4.
HDF4 はこのフォーマットの旧バージョンだが、HDF グループは現在も積極的にサポートしており、多次元配列、ラスターイメージ、テーブルなど、多様なデータモデルに対応している。それぞれに集計データタイプが定義され、データとメタデータの読み取り、書き込み、および構造化のための API が提供されている。 HDF 開発者やユーザーは、新しいデータモデルを追加できる。 
HDF は自己記述型であり、アプリケーションは外部情報なしでファイルの構造と内容を解釈できる。 1つの HDF ファイルには関連するオブジェクトが混在し、それぞれがグループまたは個別のオブジェクトとしてアクセスできる。 ユーザーは、「vgroup」と呼ばれる独自のグループ化構造を作成できる。 
HDF4 には多くの制限がある 。まず、明確なオブジェクトモデルがないため、継続的なサポートと改善が困難である。 多くの異なるインターフェイススタイル（画像、テーブル、配列）をサポートすることで、API が複雑になる。メタデータのサポートは、使用されているインターフェースによって異なる。 "SD" （Scientific Dataset）オブジェクトは任意の名前付き属性をサポートするが、他のタイプは事前定義されたメタデータのみをサポートする。 アドレス指定に32ビットの符号付き整数を使用しているため一つのファイルの容量が 2 GB までに制限されていることが一番の問題かもしれない。このことは、現代科学の多くの場面で受け入れられない。 
HDF5.
HDF5 は、HDF4 ライブラリのいくつかの制限に対処し、モダンなシステムとアプリケーションにおける現在および将来的な要件に対応するべく設計された。2002 年にR＆D 100 Awardを受賞した 。 
HDF5 はファイル構造を単純化しており、オブジェクトのタイプには下記の 2 つしかない。 
このことにより、真に階層的な、ファイルシステムのようなデータ形式になる。実際、HDF5 ファイル内のリソースには、 POSIXのような構文（/path/to/resource）でアクセスできる。 メタデータは、グループとデータセットに添付されたユーザー定義の名前付き属性の形式で保存される。 次に、データセット、グループ、および属性を使用して、画像とテーブルを表すより複雑なストレージAPIを構築できる。 
これらのファイル形式の進歩に加えて、HDF5 には、改良された型システムと、データセット領域での選択を表すデータスペースオブジェクトが含まれている。 APIは、データセット、グループ、属性、タイプ、データスペース、およびプロパティリストに関してオブジェクト指向でもある。 
NetCDF の最新バージョン（version 4）は、HDF5 に基づいている。 
B木を使用してテーブルオブジェクトのインデックスを作成するため、HDF5は株価シリーズ、ネットワークモニタリングデータ、3D気象データなどの時系列データに適している。 データの大部分は SQL データベースの行よりもはるかに高速にアクセスできる単純な配列（テーブルオブジェクト）となるが、非配列データには B 木アクセスを利用できる。 HDF5データストレージの機構は、SQL スタースキーマよりも単純かつ高速である。   
批判.
モノリシックな設計と長い仕様から批判されている。 
インターフェース.
サードパーティのバインディング.
HDF4 は、 Python-HDF4またはPyHDFを介して、Python 2 とPython 3 の両方で利用できる。
データ操作パッケージ pandas は、 を介してHDF5 からのインポートおよび HDF5 へのエクスポートが可能である