2017-02-08 4 views
0

複数のマシンのセンサーの読み取りを追跡する測定値があります。最後の値を取得するときのパフォーマンスの問題

マシンごとに50種類の読み取りがあり、最大1000台のマシンがあります。 30秒ごとに1つの読みがあります。

私は読書を保存する方法は、2つのタグmachine_idとanalysis_idと単一の値を持つ単一の測定値です。

私が持っているユースケースの1つは、マシンのリストの各読み込みの現在の値を取得することです。

このデータベースのレコード数が1億件になったり、そのような数字が1日未満の場合は、最後に値を取得することができなくなります。

SELECT * 
FROM analysisvalue 
WHERE entity_id = '1' or entity_id = '2' 
GROUP BY analysis_id, entity_id 
ORDER BY time DESC 
LIMIT 1 

と::

SELECT last(*) AS value, 
FROM analysisvalue 
WHERE entity_id = '1' or entity_id = '2' 
GROUP BY analysis_id, entity_id 

両方、その後の完了までにかなり長い時間がかかる

は、私は2つの次の選択肢を試してみました。 1億回で1秒程度の何かです。

最新の値を検索するというユースケースは、非常に頻繁です。私は、機械の「現在の」状態をほぼ即座に得ることができる必要があります。 最新の値を別の場所に記録することで、アプリケーションロジックの面でこれを行うことができますが、InfluxDBだけで何ができるのだろうかと思っていました。

+0

どのバージョンのInfluxDBをお使いですか? –

+0

私は最新です、1.2。 – manecosta

+0

InfluxDBリポジトリで[issue](https://github.com/influxdata/influxdb/issues/new)を開いてこれを開くことができますか? –

答えて

0

私は同様のものに直面していました。私は、連続したクエリを作成することでそれを回避しました。

https://docs.influxdata.com/influxdb/v0.8/api/continuous_queries/

+0

私はそれに対して連続問合せを使用する方法について考えてきましたが、それを実行する良い方法を思いつくことはできません。あなたはどのようにそれをやったのか詳しく説明できますか? – manecosta

関連する問題