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