使用标签对时间序列数据建模

时间:2013-09-11 07:45:10

标签: cassandra time-series

我目前正致力于为时间序列数据建模。

初始数据点结构: - 传感器的名称: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的理解,因为我刚开始使用它。

1 个答案:

答案 0 :(得分:0)

@pveentjer

“我知道复合可以用于列id。所以理论上我可以将每个标记添加为该复合中的元素。但是当列中包含可变数量的元素时,可以有效地搜索列。复合材料?“

使用多个复合材料时有一些规则和限制,请阅读 here here

对于CQL3,还有其他限制,请阅读 here