2012-02-20 8 views
0

私は、JAVAのコーディング経験はほとんどありませんが(大学ではいくつかのクラス)、データ収集の分野ではほとんどありません。大量のデータを収集してフィルタリングする

私はCANバス上で送信されるすべてのメッセージを監視したいと思います。&はこれらを一時的に保存して後でフィルタリングするので、特定のメッセージを特定できます。

これは、毎秒1バイトの最大17543メッセージを格納する必要があることを意味します。私は少なくとも数十秒間保存したいと思います。

どうすればよいでしょうか?

これらはすべてアレイに保存できますか? データベース(Hibernateなど)を使用する方が良いでしょうか?

私はこれがむしろオープンエンドであることを知っていますが、私は可能なこととこれを処理するための最良の方向が何であるかを知りたいと思います。

答えて

1

したがって、1秒間に17,543メッセージ(それぞれ最大で1バイト)が得られ、数十秒を保存したいでしょうか?

これは大量のデータではなく、メモリ内の配列に簡単に格納できます。 1分のメッセージを格納するとします.17,543 x 60秒= 1 MB未満のデータです。それは現代のコンピュータのピーナッツだ。データベースが過度に使用されます。

+0

ありがとうございました。この記憶にはどのような限界がありますか? – IanS

+0

お使いのPCにはおそらく数GB(数千MB)のメモリがあります。それはあなたがこれに必要とするものの何千倍もあります。 – Jesper

0

毎秒1バイトの最大17543メッセージを格納する必要があります。私は少なくとも数十秒間保存したいと思います。

メッセージをcircular bufferに保存することは意味があります。これは、配列を使用して簡単に実装できます。

30秒分のデータには約500KBのストレージが必要です。

1

Hibernateはデータベースではありません。 ORMです。

20 seconds = 20 * 17543 bytes 
      = 350860 bytes 
      = 350 KB 
      = nothing. 

メモリにすべてを格納しても、このような少量のデータでは問題にはなりません。

関連する問題