0

我目前正在开发一个 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 的理解,因为我刚开始使用它。

4

1 回答 1

0

@pveentjer

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

使用多个组合时有一些规则和限制,请阅读此处此处

对于 CQL3,还有更多限制,请阅读此处

于 2013-09-11T12:08:48.890 回答