階層データ形式

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
階層データ形式
HDFロゴ.svg
HDFグループのアイコンとロゴ
ファイル名拡張子.hdf、、、、、、、、.h4_ .hdf4_ .he2_ .h5_ .hdf5_.he5
インターネットメディアタイプapplication / x-hdf、application / x-hdf5
マジックナンバー\ 211HDF \ r \ n \ 032 \ n
によって開発されたHDFグループ
最新のリリース
5-1.10.7 [1]
2020年9月16日; 17ヶ月前 (2020-09-16
フォーマットの種類科学データ形式
オープンフォーマットはい
Webサイトwww .hdfgroup .org ウィキデータでこれを編集する

Hierarchical Data FormatHDF)は、大量のデータを保存および整理するために設計されたファイル形式HDF4HDF5 )のセットです。もともとは米国立スーパーコンピュータ応用研究所で開発されましたが、HDF5テクノロジーの継続的な開発と、HDFに保存されているデータへの継続的なアクセスを保証することを使命とする非営利法人であるHDFグループによってサポートされています。

この目標に沿って、HDFライブラリと関連ツールは、一般的な使用のために、BSDのようなリベラルなライセンスの下で利用できます。HDFは、多くの商用および非商用ソフトウェアプラットフォームとプログラミング言語でサポートされています。無料で入手できるHDFディストリビューションは、ライブラリ、コマンドラインユーティリティ、テストスイートソース、Javaインターフェイス、およびJavaベースのHDFビューア(HDFView)で構成されています。[2]

現在のバージョンであるHDF5は、主要なレガシーバージョンのHDF4とはデザインとAPIが大幅に異なります。

初期の歴史

もともとAEHOO(All Encompassing Hierarchical Object Oriented format)と呼ばれていたポータブル科学データフォーマットの探求は、1987年に米国立スーパーコンピュータ応用研究所(NCSA)のグラフィックス財団タスクフォース(GFTF)によって開始されました。1990年と1992年に受け取ったNSF助成金は、プロジェクトにとって重要でした。この頃、NASAは地球観測システム(EOS)プロジェクトで使用するための15の異なるファイル形式を調査しました。2年間のレビュープロセスの後、HDFが標準のデータおよび情報システムとして選択されました。[3]

HDF4

HDF4はフォーマットの古いバージョンですが、HDFグループによって引き続き積極的にサポートされています。多次元配列、ラスターイメージ、テーブルなど、さまざまなデータモデルの急増をサポートします。それぞれが特定の集約データ型を定義し、データとメタデータの読み取り、書き込み、および整理のためのAPIを提供します。新しいデータモデルは、HDF開発者またはユーザーが追加できます。

HDFは自己記述型であり、アプリケーションが外部情報なしでファイルの構造と内容を解釈できるようにします。1つのHDFファイルには、グループまたは個別のオブジェクトとしてアクセスできる関連オブジェクトの組み合わせを保持できます。ユーザーは、「vgroups」と呼ばれる独自のグループ化構造を作成できます。

HDF4形式には多くの制限があります。[4] [5]明確なオブジェクトモデルがないため、継続的なサポートと改善が困難です。多くの異なるインターフェーススタイル(画像、テーブル、配列)をサポートすると、複雑なAPIになります。メタデータのサポートは、使用されているインターフェースによって異なります。SD(Scientific Dataset)オブジェクトは任意の名前付き属性をサポートしますが、他のタイプは事前定義されたメタデータのみをサポートします。おそらく最も重要なのは、アドレス指定に32ビットの符号付き整数を使用すると、HDF4ファイルが最大2 GBに制限されることです。これは、多くの最新の科学アプリケーションでは受け入れられません。

HDF5

HDF5形式は、HDF4ライブラリの制限のいくつかに対処し、最新のシステムおよびアプリケーションの現在および予想される要件に対処するように設計されています。2002年にはR&D100賞を受賞しました。[6]

HDF5は、ファイル構造を単純化して、2つの主要なタイプのオブジェクトのみを含めます。

HDF構造の例
  • 同種タイプの多次元配列であるデータセット
  • グループ。データセットやその他のグループを保持できるコンテナ構造です。

これにより、真に階層的なファイルシステムのようなデータ形式が実現します。[説明が必要] [要出典]実際、HDF5ファイルのリソースには、POSIXのような構文/ path / to / resourceを使用してアクセスできます。メタデータは、グループおよびデータセットに添付されたユーザー定義の名前付き属性の形式で保存されます。次に、データセット、グループ、および属性を使用して、画像とテーブルを表すより複雑なストレージAPIを構築できます。

これらのファイル形式の進歩に加えて、HDF5には、改良された型システムと、データセット領域の選択を表すデータスペースオブジェクトが含まれています。APIは、データセット、グループ、属性、タイプ、データスペース、およびプロパティリストに関してもオブジェクト指向です。

NetCDFの最新バージョンであるバージョン4は、HDF5に基づいています。

HDF5は、 Bツリーを使用してテーブルオブジェクトにインデックスを付けるため、株価系列、ネットワーク監視データ、3D気象データなどの時系列データに適しています。データの大部分は、 SQLデータベースの行よりもはるかに高速にアクセスできる単純な配列(テーブルオブジェクト)に送られますが、非配列データにはBツリーアクセスを使用できます。HDF5データストレージメカニズムは、SQLスタースキーマよりも単純で高速です。[必要な例]

フィードバック

HDF5に対する批判は、そのモノリシックな設計と長い仕様に基づいています。

  • HDF5はUTF-8の使用を強制しないため、クライアントアプリケーションはほとんどの場所でASCIIを期待している可能性があります。
  • 外部ツール(h5repack)を使用してファイルコピーを生成せずに、データセットデータをファイルから解放することはできません。[7]

インターフェイス

公式にサポートされているAPI

  • C
  • C ++
  • CLI-.Net _
  • FortranFortran 90
  • HDF5 Lite(H5LT)–C用の軽量インターフェース
  • HDF5画像(H5IM)–画像またはラスター用のCインターフェイス
  • HDF5テーブル(H5TB)–テーブル用のCインターフェース
  • HDF5パケットテーブル(H5PT)–高速でアクセスされる「パケット」データを処理するためのCおよびC ++のインターフェイス
  • HDF5ディメンションスケール(H5DS)–ディメンションスケールをHDF5に追加できます
  • Java

サードパーティのバインディング

  • CGNSはHDF5をメインストレージとして使用します
  • CommonLispライブラリhdf5 -cffi
  • Dは、開発中の高レベルのh5pyスタイルのDラッパーを使用して、CAPIへのバインディングを提供します
  • Dymolaは、リリースDymola 2016 FD01でSDF (Scientific Data Format)と呼ばれる実装を使用したHDF5エクスポートのサポートを導入しました
  • ErlangElixir、およびLFEは、BEAM言語のバインディングを使用する場合があります
  • GNUデータ言語
  • Go - gonumhdf5パッケージ。
  • HDFqlを使用すると、ユーザーはC、C ++、Java、Python、C#、Fortran、およびRの高級言語(SQLと同様)を介してHDF5ファイルを管理できます。
  • Huygens Softwareは、バージョン3.5以降、プライマリストレージ形式としてHDF5を使用しています。
  • IDL
  • IGOR Proは、HDF5ファイルの完全なサポートを提供します。
  • JHDF5、[8]一部のユーザーがより単純だと感じる公式のHDF5Javaバインディングとは異なるアプローチをとる代替Javaバインディング
  • jHDFHDF5ファイルへの読み取り専用アクセスを提供する純粋なJava実装
  • JSONからhdf5-jsonまで。
  • Juliaは、 HDF5パッケージを通じてHDF5サポートを提供します。
  • LabVIEWは、 h5labviewlvhdf5などのサードパーティライブラリを介してHDFサポートを取得できます。
  • lua-hdf5ライブラリを介したLua 。
  • MATLABScilab、またはOctave –最近のリリースではプライマリストレージ形式としてHDF5を使用
  • Mathematica [9]は、HDFおよびHDF5データの即時分析を提供します
  • Perl [10]
  • Pythonは、h5py(HDF5抽象化への高レベルと低レベルの両方のアクセス)およびPyTables(高度なインデックス作成とデータベースのようなクエリ機能を備えた高レベルのインターフェイス)を介してHDF5をサポートします。HDF4は、Python2とPython3の両方でPython-HDF4および/またはPyHDFを介して利用できます。人気のあるデータ操作パッケージpandasは、PyTablesを介してHDF5からインポートおよびHDF5にエクスポートできます。
  • Rは、 rhdf5およびhdf5rパッケージでサポートを提供します。
  • Rustは、 hdf5などのサードパーティライブラリを介してHDFサポートを取得できます。

ツール

  • Apache SparkHDF5コネクタApacheSpark用のHDF5コネクタ
  • Apache DrillHDF5プラグインApacheDrill用のHDF5プラグインは、HDF5ファイルを介したSQLクエリを有効にします。
  • HDF ProductDesigner相互運用可能なHDF5データ製品作成GUIツール
  • HDF Explorer HDF、HDF5、およびnetCDFデータファイル形式を読み取るデータ視覚化プログラム
  • HDFViewHDFファイル用のブラウザとエディタ
  • ViTablesPythonで記述されたHDF5およびPyTablesファイル用のブラウザーおよびエディター
  • Panoply NetCDF、HDF、GRIBデータビューア

も参照してください

参考文献

  1. ^ 「2020-09-16にリリースされたHDF5バージョン1.10.7」2020年9月16日取得
  2. ^ JavaベースのHDFビューア(HDFView)
  3. ^ 「HDFグループの歴史」2014年7月15日取得
  4. ^ HDF5はHDF4とどう違うのですか? ウェイバックマシンで2009年3月30日に
  5. ^ 「HDF4ファイルに制限はありますか?」2016年4月19日にオリジナルからアーカイブされました2009年3月29日取得
  6. ^ Wayback Machineで2011年1月4日にアーカイブされたR&D100アワード アーカイブ
  7. ^ ロサント、シリル。「HDF5から離れる」cyrille.rossant.net 2016年4月21日取得
  8. ^ JHDF5ライブラリ
  9. ^ HDFインポートおよびエクスポートMathematicaドキュメント
  10. ^ PDL :: IO :: HDF5

外部リンク