我目前正在开发一个 poc 来对时间序列数据进行建模。
初始数据点结构: - 传感器名称:192.168.1.1:readCount - 时间戳 - 值
我使用传感器名称作为 rowid,时间戳作为列 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 次。 - 所有地图的汇总指标:如果机器 1 在 mapx 上进行了 20 次写入,在 mapy 上进行了 30 次写入,我想知道总共50个。
问题是我应该如何建模。
我知道复合可用于列 ID。所以理论上我可以将每个标签添加为该复合材料中的一个元素。但是,当组合中的元素数量可变时,是否可以有效地搜索列?
我知道我的问题有点模糊,但我认为这反映了我对 Cassandra 的理解,因为我刚开始使用它。