0

さまざまなソースからさまざまな時間間隔で取得される時系列データを保存して提供するための何かを構築したいと考えています。これには、生データと計算データの両方が含まれます。たとえば、30秒ごとの温度測定値と、5分ごとに個別に計算している温度予測をログに記録するとします。

データをすばやくクエリできるようにする必要がありますが、リレーショナルデータベースが大きくなりすぎると、まったく機能しなくなることがわかりました。ある種のメモリ内のものを作成することを考えていましたが、ある時点でクラッシュすると確信しているので、データをディスクに保持する必要があります。だから私は、一般的に要求されるデータのためのある種のキャッシュを使って、全体をディスクベースにしないのはなぜだろうと思っていました。

しかし、私はこれについてどうやって行くのか少し無知です。ある種の文字列キー/記号を使用してデータが何であるかを識別するために、データソースが更新データセットをサーバーに定期的にプッシュすることを想像しています。サーバーがデータを取得し、それから何をしますか?ある種のバイナリファイルに書き込みますか?シンボルごとに1つのファイルに書き込むことはできますか?(10万以上のシンボルを想定)

私が欲しいのはグーグルのBigTableに似ていると思いますが、規模ははるかに小さいです。基本的に、分散ハッシュテーブルは、文字列キーを関連データの時系列にマッピングし、非常に高速な取得と時間による範囲クエリの取得機能を備えています。多次元データ用の追加ポイント。

ああ、これは(理想的には)C#/windowsプロジェクトによるものです-それほど高性能である必要はありません。

4

7 に答える 7

2

残念ながら、これを行う方法を説明するNDA契約により禁止されています。私は、あなたがやろうとしていることを正確に実行する非リレーショナルデータベースを作成したチームで働きました。それは城塞と呼ばれています。しかし、私はあなたに公に利用可能なものへのリンクを指摘することができます、そしてそれはあなたにそれがどのように機能するかについてのいくつかのアイデアを与えるはずです。

http://zone.ni.com/devzone/cda/tut/p/id/6579

あなたはただ製品を買うことができました、しかしそれはかなり高価です。

また、カールが指摘しているように、これはWonderwareLookoutLabVIEWDSCなどのSCADA製品で一般的に使用されています。

SCADAデータストレージを検索すると、興味深い読み物も見つかります。


余談ですが、データ量が少ない場合は、リレーショナルデータベースでこの問題を解決できます。時間の経過とともに発生する傾向があるのは、データが際限なく増大し、リレーショナルデータベースがその容量を超えていっぱいになることです。優れたSCADAデータストレージシステムは、1秒間に一度にポーリングされる50000ポイントを簡単に処理できます。ある時点でさえ、それらは簡単に扱えないほど大きくなり始めます。

于 2009-04-07T21:34:46.717 に答える