2017-02-04 12 views
1

私は時系列データストリーミングを1秒ごとに、例えば5秒ごとに行っています。ポイントは順不同で到着するかもしれません。私は5m、30m、60mと言うより高いタイムパンまでリアルタイムで集計したいと思っています。私の主な関心事は速読です。オンザフライでの時系列データの集約

このリアルタイム集計を実行するためにどのような技術が一般的であるか興味があります。私は、ディスク上に長期保存が必要だと思っていますが、ほぼリアルタイムの点では、集約しやすくするために、メモリに保存する必要があると思います。

これらをメモリキャッシュ(Re​​dis)に格納し、定期的にトリガされてディスクへの集計とフラッシュを計算する方法をお勧めしますか?もしそうなら、私は定期雇用の仕事が終わった後に到着するポイントを得るでしょうか?私は戻ってその点を捨てて、再び期間を計算しますか?

私はおそらくここで私自身の質問に答えるだろうが、私はそこにどのような選択肢のために釣っている。

ありがとうございます。 Chris :-)

答えて

1

ツールの多くは、あなたがタイムスタンプを注文したことを期待しないもあります。データ構造はそれを前提としているからです。

常にトレードオフがあります。それらのほとんどは、あなたのデータを前提と命じている - 一般的に使用さTSDB

  1. 使用して:私はそれを参照してください として、あなたは2つのオプションがあります。 おそらくデータを注文する必要があります。このためには、順序付けられていないサンプルが到着するまでの最大時間を決定する必要があります。

  2. データを失うことができない場合は、既存のデータを継続的に更新できるツールを探す必要があります。

StatsDを使用してストリーミングデータを作成する場合は、任意のフラッシュ間隔に設定できます。

Redisの時系列データ構造を探している場合、私はモジュールで作業を始めました(まだ実稼働環境ではテストされていませんが、APIは変更される可能性があります)。 https://github.com/danni-m/redis-tsdb

1

多くのオプションがあります。使用する方法は、集計番号の正確さによって異なります。

完全なカウントが不要な場合は、タイムスタンプとその他の属性をキーとしてHyperLogLogを使用してカウントを保存できます。このようにして、データが順序どおりでない場合は問題になりません。

などInfluxDBのようなオープンソースおよび商用の時系列データベースの数、Druid、(「時系列データベース」の検索グーグル)

関連する問題