【发布时间】:2014-06-03 16:16:03
【问题描述】:
我是 Cassandra 的新手,想知道如何解决这个传感器数据问题:
每个传感器都有一个名称和一个描述,以及多个时间戳,每个时间戳都有一个值。 在 JSON 中,它看起来像这样:
[{
"sensor" : "Sensor1",
"description" : "first sensor",
"timeseries" : {
1200001 : 2,
1200002 : 5,
1200006 : 1,
1200009 : 3,
1200011 : 7,
1200012 : 9 }
}]
如何使用 CQL 保存它? 我试过这样的事情:
CREATE TABLE sensordata (
sensor text,
description text,
time int,
value int,
PRIMARY KEY (sensor, time)
);
但这会为每个时间戳保存一个描述。如果我将描述添加为 Cluster Key,我总是必须在编写时提供它。 我的写作应该是这样的:
INSERT INTO sensordata (sensor, description) VALUES ('Sensor1', 'first sensor');
INSERT INTO sensordata (sensor, time, value) VALUES ('Sensor1', 1200001, 2);
INSERT INTO sensordata (sensor, time, value) VALUES ('Sensor1', 1200002, 5);
INSERT INTO sensordata (sensor, time, value) VALUES ('Sensor1', 1200006, 1);
或许我应该只使用两张表?
CREATE TABLE sensormetadata (
sensor text,
description text,
PRIMARY KEY (sensor)
);
CREATE TABLE sensordata (
sensor text,
time int,
value int,
PRIMARY KEY (sensor, time)
);
最后我想查询一个特定的传感器(在定义的时间范围内)。 另一个查询是过去 120 秒内的所有传感器数据。
SELECT description, time, value from sensordata WHERE sensor='Sensor1';
SELECT description, time, value from sensordata WHERE sensor='Sensor1' AND time > 1200000 AND time < 1250000;
SELECT sensor, description, time, value from sensordata WHERE time > 1200000;
谢谢!
最好, 马耳他
【问题讨论】:
标签: cassandra key schema cluster-computing cql