【问题标题】:Cassandra: Combining dynamic columns with fixed columnsCassandra:结合动态列和固定列
【发布时间】: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


    【解决方案1】:

    您可以使用您的第一个架构,但将 description 列设为静态:

    CREATE TABLE sensordata (
        sensor text,
        description text static,
        time int,           
        value int,          
        PRIMARY KEY (sensor, time)
    );
    

    这实质上意味着描述将在每个分区存储一次(或每个传感器 ID 一次),但会出现在每一行中。静态列是在 2.0.6 中添加的,您可以在此处阅读有关它们的更多信息:http://www.datastax.com/dev/blog/cql-in-2-0-6

    【讨论】:

    • 这就是我要找的!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 2014-02-22
    • 1970-01-01
    • 2012-01-01
    • 2017-11-21
    相关资源
    最近更新 更多