HDF5 の評価:HDF5 はデータのモデリングにどのような制限/機能を提供しますか?

StackOverflow https://stackoverflow.com/questions/547195

質問

私たちは、C/C++ コードの分析中に収集したデータを保存するために使用するテクノロジを評価しています。C++ の場合、データ量は比較的多くなり、TU あたり約 20Mb になります。

次のSOを読んだ後 答え それを考えさせられました HDF5 私たちが使用するのに適したテクノロジーかもしれません。ここの人々が私が抱いているいくつかの最初の質問に答えるのを手伝ってくれないかと考えていました。

  1. パフォーマンス。データの一般的な使用法は、コンパイラによって生成された「.o」ファイルの有効期間と同様に、1 回の書き込みと「数回」の読み取りです。HDF5 は SQLite DB などの使用と比較してどうですか?それは合理的な比較でしょうか?

  2. 時間の経過とともに、保存している情報は追加されますが、新しい形式をサポートするために、必ずしも完全に新しい「リーダー」のセットを再配布する必要はありません。ユーザーガイドを読んだ後、情報がタグ/列に関連付けられているため、古い構造を読み取るために構築されたツールは関係のないフィールドを無視するという点で、HDF5 は XML または DB に似ていると理解しました。これに関する私の理解は正しいでしょうか?

  3. 書き出したい情報の大部分は、ツリー型の構造になります。スコープ階層、タイプ階層など。理想的には、スコープを親、子などを持つものとしてモデル化します。1 つの HDF5 オブジェクトが別の HDF5 オブジェクトを「ポイント」することは可能ですか?そうでない場合、HDF5 を使用してこの問題を解決する標準的な手法はありますか?それとも、DB で必要とされるように、データを検索するときに適切な検索を使用して、あるオブジェクトを別のオブジェクトに「リンク」する一意のキーが必要なのでしょうか?

どうもありがとう!

役に立ちましたか?

解決

  

どのようにHDF5は、SQLiteのDBのようなものを使用と比較しますか?   でも、合理的な比較を行うためにということですか?

関連のソートではなく、本当に。彼らは両方の構造化されたファイルです。 SQLiteはSQLを使用してデータベースクエリをサポートするための機能を備えています。 HDF5は、大規模な科学的データセットをサポートするための機能を備えています。

これらは両方とも、高性能であることを意味しています。

  

時間が経つにつれて、我々は我々が保存されている情報に追加されますが、必ずしも新しいフォーマットをサポートするために、「読者」の全く新しいセットを再配布するとは思わないだろう。

あなたが構造化された形式でデータを保存する場合は、

、それらの構造のデータ型もHDF5ファイルに格納されています。 (それは生来の後方互換性が含まれている場合など)、私はこれがどのように機能するかに関して、少しさびんだけど、私はあなたの「リーダー」を設計した場合、正しく将来的に変更されているタイプを扱うことができなければならないことを知っています。

  

それは別のHDF5オブジェクト「ポイント」を持つことは可能ですか?

絶対に!あなたはの属性を使用したいと思います。各オブジェクトは、そのオブジェクトに到達するためにパスを記述する1つの以上の文字列を持っています。フォルダのことを除いて、フォルダ/ディレクトリに似ていのHDF5 グループ/グループは、サイクルを含むことができる、有向グラフを形成する一方、ディレクトリは、階層的である=一意のパスは、(少なくとも/ OハードリンクWファイルシステム内の)それぞれの位置を記載しています。私はあなたが直接属性としてオブジェクトへの「ポインタ」を保存することができるかどうかわからないんだけど、あなたは常に文字列の属性として、絶対/相対パスを保存することができます。 (またはどこか他の文字列として、あなたが望んでいた場合は、ルックアップテーブル豊富に持つことができる)

他のヒント

私のプロジェクトではHDF5データを制作していますが、普段直接扱うことはありません。最初の 2 つの質問については、次のとおりです。

  1. 私たちは一度書き込み、何度も読み取るモデルを使用していますが、この形式はこれをうまく処理しているようです。私は、以前は両方のファイルに書き込んでいたプロジェクトを知っています。 オラクル データベースと HDF5。最終的に、パフォーマンスが低下し、誰も使用しなくなったため、Oracle 出力は削除されました。明らかに SQLite は Oracle ではありませんが、HDF5 形式の方がこのタスクには適していました。その 1 つのデータ ポイントに基づいて、RDBMS は複数の挿入と更新に対してより適切に調整される可能性があります。

  2. お客様が使用するリーダーは、新しいデータ型を追加した場合でも堅牢です。一部の変更は予想されていますが、データ フィールドを追加するときに問題が起こることを心配する必要はありません。当社の DBA は最近、HDF5 データを読み取り、Google Earth で視覚化するために KMZ ファイルを設定する Python プログラムを作成しました。彼が Python を学ぶために使用したプロジェクトなので、リーダーを構築するのは難しくないと思います。

3番目の質問については、頭を下げます ジェイソン S の優れた知識.

HDF5 は、特にすでに興味がある場合、または科学コミュニティ向けに何かを作成する予定がある場合には、完全に合理的な選択だと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top