階層データ形式。代替フォーマットと比較した利点は何ですか?


回答:


25

おそらく、質問を言い換えるのに良い方法は、代替フォーマットと比較した利点は何ですか?

主な代替手段は、データベース、テキストファイル、または別のパック/バイナリ形式です。

考慮すべきデータベースオプションは、おそらくカラムナーストアまたはNoSQL、または小さな自己完結型のデータセットSQLiteです。データベースの主な利点は、メモリよりもはるかに大きいデータを処理し、ランダムアクセスまたはインデックス付きアクセスを持ち、データをすばやく追加/追加/変更できることです。主な*欠点*の利点は、データセット全体を読み込んで処理する必要がある問題に対して、HDFよりもはるかに遅いことです。もう1つの欠点は、SQLiteのような組み込みスタイルのデータベースを除き、データベースは単純な自己完結型のデータストアではなく、システム(アドミッション、セットアップ、メンテナンスなどが必要)であることです。

テキストファイル形式のオプションはXML / JSON / CSVです。これらはクロスプラットフォーム/言語/ツールキットであり、自己記述的(または明白な:)であるため、優れたアーカイブ形式です。圧縮されていない場合、それらは巨大(10x-100x HDF)ですが、圧縮されている場合、かなりスペース効率がよくなります(圧縮されたXMLはHDFとほぼ同じです)。ここでの主な欠点は、やはり速度です。テキストの解析はHDFよりはるかに遅くなります。

他のバイナリ形式(npy / npz numpyファイル、blz blazeファイル、プロトコルバッファー、Avroなど)は、HDFと非常によく似たプロパティを持っていますが、あまり広くサポートされていない(1つのプラットフォームに限定される場合があります:numpy)他の特定の制限があります。通常、それらは魅力的な利点を提供しません。

HDFはデータベースを補完するものであり、クエリを実行しておおよそのメモリサイズのデータ​​セットを生成し、同じデータを複数回使用する場合はHDFにキャッシュすることをお勧めします。固定されたデータセットがあり、通常は全体として処理される場合、適切なサイズのHDFファイルのコレクションとして保存することは悪い選択肢ではありません。頻繁に更新されるデータセットがある場合は、その一部を定期的にHDFファイルとしてステージングすることも有用です。

要約すると、HDFは、通常全体として読み取られる(または書き込まれる)データに適した形式です。これは、幅広いサポートと互換性、アーカイブ形式として適切で非常に高速であるため、多くのアプリケーションにとって共通語または共通/優先交換形式です。

PSこれに実用的なコンテキストを与えるために、HDFを他の選択肢と比較した最近の経験では、特定の小さな(メモリサイズよりもはるかに小さい)データセットがHDFとして読み込むのに2秒かかりました(これはおそらくパンダのオーバーヘッドです)。JSONから読み取るのに約1分。データベースへの書き込みに1 時間。確かに、データベースへの書き込みは高速化されますが、優れたDBAが必要です。これは、箱から出してすぐに機能する方法です。


HDF カラムナーストレージ形式であると言えますか?私はこれらのいずれにも過度に精通していませんが、私が作業したHDFサンプルは、列ベースのデータ集約の外部機能を示しているようです。
フェリックスガニヨングレニエ

データベースとHDFはどちらも「メモリよりもはるかに大きいデータを処理する機能」を提供するため、これがHDFに対するデータベースの利点であると言うのは正確ではないと思います。コア機能davis.lbl.gov/Manuals/HDF5-1.8.7/UG/12_Dataspaces.html
デビッドルバウアー

11

1つの利点は幅広いサポートです-C、Java、Perl、Python、およびRはすべてHDF5バインディングを備えています。

もう1つの利点は速度です。ベンチマークされたことは一度もありませんが、HDFはSQLデータベースよりも高速であるはずです。

大量の科学データと時系列データ(ネットワークの監視、使用状況の追跡など)の両方で使用すると非常に優れていることを理解しています。

HDFファイルにはサイズの制限があるとは思わない(OSの制限は適用されますが)。


5
個人的な経験から、組み込みのドキュメント/ラベルは巨大だと付け加えます。今、すべての私のデータセットは、彼らは、サンプリング周波数など、異常など、どこから来たのかを明示的に記録して保存することができますすることができます
ガラミン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.