私の場合、デバイスの 15 のパフォーマンス メトリックを取得し、InfluxDB に保存する必要があります。各デバイスには固有のデバイス ID があります。
メトリックは、次の方法で InfluxDB に書き込まれます。ここでは例として 1 つだけ示します
new Serie.Builder("perfmetric1")
.columns("time", "value", "id", "type")
.values(getTime(), getPerf1(), getId(), getType())
.build()
データの書き込みは高速で簡単です。しかし、クエリを実行するとパフォーマンスが低下しました。過去 1 時間の 15 個のメトリック値をすべて取得しようとしています。
select value from perfmetric1, perfmetric2, ..., permetric15
where id='testdeviceid' and time > now() - 1h
1 時間で、各メトリクスには 120 のデータ ポイントがあり、合計で 1800 のデータ ポイントになります。c4.4xlarge EC2 インスタンスがアイドル状態の場合、クエリには約 5 秒かかります。
InfluxDB の方がうまくいくと思います。これは私のスキーマ設計の問題ですか、それとも別の問題ですか? クエリを 15 の並列呼び出しに分割すると、高速になりますか?