2009-07-21 7 views
4

私たちの会社は、大量のラボセンサーデータを保持するファイル形式をしばらく見てきました。彼らは計測を実行するたびに、ファイルを生成します。このファイルは、傾向分析のためにデータベースに保存しています。データを「グループ化」することができるので、階層形式が好まれます。これはデータをデータベースに入れる前の中間ファイル形式です。私たちの開発環境のために、これは私たちの優先リストです:.Netファイル形式?

1).Netに準拠しています。このAPIは、Webサービスとクライアントアプリケーションで使用されます。私たちは顧客の環境を支配していないので、pure.Netソリューションが最適です。

2)読み込み速度。私たちの読書は、逐次ではなくランダムです。速いほど良い。私たちがC#開発の店でなければ、速度は#1だと言います。

3)ファイルサイズ。ファイル自体が大きい場合、良好な圧縮率(86%以上)が望ましい。

4)読み取りのメモリフットプリント。大量のデータがあるため、単に読むことができません。各センサは時間/値の対を有する。これにより、4百万以上のペアが生成されます。これによりXMLが削除されました。

私たちは現在、HDF5を見て、APIがひどく.NETの分野で欠けていること、Webサービスを行うことができないこと、サイズ/スピードを求めていることを発見しました。私もJSONを見ていると有望そうだが、データの一部を読み返すことはしていない。私はウェブを検索し、私たちが必要とする多くのファイル形式を見つけられませんでした。どんな助けもありがとうございます。

答えて

1

は、次のような、Bツリーデータベースが必要になります。また、SQLiteのを見て

コンパクト

SQL Serverの http://sqlite.phxsoftware.com/

あなたはSQLの一部 グーグルで済ますことができればCTreeは、ISAMの詳細ですctree

申し訳ありませんがために、私はこれは新しいacctの

+0

ありがとう私は概念の証明を試して、それがどのように動作するかを見ていきます。間違いなく有望です。 – mcauthorn

+1

すべての初期テストとデモから、HDF5と同じ読み書き速度でも圧縮はできませんが(10%少なくなります)、再生することで同じデータを小さなファイルサイズで取得できました。推奨していただきありがとうございます。 – mcauthorn

0

私は特殊な読書の要件はどのフォーマットでも問題になると思います。この場合、独自のパーサーを実装する必要があります。

0

バイナリツリー/バランスツリー形式の方があまり苦労しない場合は、Newick Formatに格納することができます。また、JSONのようなキー/値のペア形式をサポートすることもできます。

JSONより軽量ではありませんが、 "{}"は "()"に置き換えられました。

((アライグマ、 熊)、((sea_lion、シール)、((サル、ネコ)、 イタチ))、イヌ)。

明らかにバイナリツリーなので、クエリは非常に高速ですが、おそらくJSONオブジェクトの辞書よりも高速ではありませんが、リンクリストスタイルのヒエラチャ(オブジェクトグラフ)は心配ありません。

私は、しかし、私はそれのために任意の.NET APIを見つけることができませんでした怖いだけで、JavaとCの

1

私はあなたがある場合は、データベース内のテーブルにこの情報を格納したほうが良いかもしれないと思いますSQL Serverを使用して、VARBINARYがその作業を行う必要があります。

テーブルは階層構造にすることができます。[Parent]フィールドは、トップレベルノードではnullにすることができます。

ルックアップ値(ファイルのID)にインデックスを付けると、ランダムアクセスが高速になります。圧縮が必要な場合は、GZipクラスを使用して生のバイト[]をフォーマットしてからデータベースに貼り付けることができます。この情報のデータベースを使用して

はあなたに能力を与える:

1)狂気のクエリを実行し、などに参加します 2)複数の列にインデックスを付けて、異なるキー値を高速に検索することができます 3).Netには複数のAPIがあります。 4)速度に悪影響を及ぼさない場合は圧縮を追加できます 5)データをバックアップする必要がありますあなたのお手伝いをしてください

このアドバイスはあなたを助けますか?

+0

あるbcのSO私をせず、より多くのリンクたいだけでなく、私たちはそれをデータベースに保存しますが、我々は中間tと何かが必要o情報を含んでいる。我々はセンサー - > DBから行くことはできません。 Sensor-> file-> databaseになります。私がDBに直接行くのが好きだと言うと、私を信頼してください。 – mcauthorn

+0

センサーに一時ファイルを書き込み、そのファイルをVARBINARY列に読み込ませることはできます。速度が許容範囲内であれば、私は通常どんな状況でもデータベースを利用しようとします。事態はメンテナンスのために管理しやすくなります。 – jonathanpeppers