H5TB APIを使用して、hdf5ファイルのテーブルとして(等距離ではない)時系列を格納します。hdf5時系列でのクエリの実行方法
time channel1 channel2
0.0 x x
1.0 x x
2.0 x x
このような「詳細データ」の挿入もあります:
time channel1 channel2
0.0 x x
1.0 x x
1.2 x x
1.4 x x
1.6 x x
1.8 x x
2.0 x x
は今、私は別のデータ形式でデータを保存したいので、私は「クエリしたいが、フォーマットは次のようです「このようなHDF5ファイル:
select ch1 where time > 1.6 && time < 3.0
私はこのクエリを実行するには、いくつかの方法を考えた:
- Bツリーインデックスと呼ばれる機能が組み込まれています。データの索引作成にこれを使用できますか?
- 私は時間チャネルでバイナリ検索を行い、チャネル値を読み取る必要があります
- 私は自分でインデックスを作成します(詳細挿入がある場合は常に更新します)。ここで使うのに最高のアルゴリズムは何でしょうか?
索引の主な動機は、高速な照会応答を持つことです。
ここで何をお勧めしますか?
これはメモリインデックスの権利でしょうか?これはオプションではありません。私はたくさんのデータを持っています(毎日のテストでは500Mb /分)。 – schoetbi
@schoetbi:必ずしもそうではありません。 'std :: map <>'はテンプレートパラメータとして、デフォルトでローカルフリーストアの観点から実装されるが、最終的にバッキングストレージの観点から実装されるアロケータクラスをとります。例えば。 boost.interprocessのメモリマップされたファイルをバッキングストレージとして使用するアロケータの実装を参照してください。 – ildjarn
私はhdf5ファイル内のインデックスを持っていたいと思います。これも可能ですので、必要なときにいつでも再作成する必要はありませんか? – schoetbi