私は現在、時系列データをモデル化するための poc に取り組んでいます。
初期データポイント構造: - センサーの名前: 192.168.1.1:readCount - タイムスタンプ - 値
センサー名を行 ID として使用し、タイムスタンプを列 ID として使用します。このアプローチは非常にうまく機能します。
ただし、追加のデータを追加するためにタグを追加したいと考えています。
public class Datapoint {
public String metricName;
public long timestampMs;
public long value;
public Map<String, String> tags = new HashMap<String, String>();
}
Datapoint datapoint = new Datapoint();
datapoint.metricName = "IMap.readCount";
datapoint.value = 10;
datapoint.timestampMs = System.currentTimeMillis();
datapoint.tags.put("cluster", "dev");
datapoint.tags.put("member", "192.168.1.1:5701");
datapoint.tags.put("id", "map1");
datapoint.tags.put("company", "Foobar");
私はそれを次のように使用したいと思います: - 同じ ID を持つすべての異なるマシンのすべてのメトリックを集計します。たとえば、マシン 1 が mapx に対して 10 回の書き込みを行い、マシン 2 が mapx に対して 20 回の書き込みを行った場合、その 30 を知りたいです。 50の合計を知っています。
問題は、これをどのようにモデル化するかです。
列IDにコンポジットを使用できることを知っています。したがって、理論的には、各タグをそのコンポジットの要素として追加できます。しかし、コンポジット内に可変数の要素がある場合、列を効率的に検索できるでしょうか?
私の質問が少し漠然としていることは承知していますが、これは、Cassandra を使い始めたばかりなので、Cassandra についての私の理解を反映していると思います。