如何设计cassandra模式,以便以后可以轻松添加其他列?

如何设计cassandra模式,以便以后可以轻松添加其他列?,cassandra,cassandra-2.0,Cassandra,Cassandra 2.0,我已经定义了如下表结构 CREATE TABLE sensor_data ( asset_id text, event_time timestamp, sensor_type int, temperature int, humidity int, voltage int,

我已经定义了如下表结构

 CREATE TABLE sensor_data (
                asset_id text, 
                event_time timestamp,
                sensor_type int, 
                temperature int, 
                humidity int,
                voltage int,
                co2_percent int
                PRIMARY KEY(asset_id ,event_time)
            ) WITH CLUSTERING ORDER BY (event_time ASC)
此表捕获来自传感器的数据,根据传感器的类型—列传感器类型,某些列将具有值,而其他列则不会。示例温度仅适用于温度传感器,湿度传感器适用于湿度传感器等


现在,当我使用越来越多的传感器时,我的目的是简单地使用ALTERTABLE命令添加额外的列。这是一个正确的策略,还是有更好的方法来设计此表以备将来使用?

我在几个小时前回答了一个类似的问题:

假设您已经准备好Cassandra 2.X,您的情况更容易处理,要执行您需要的操作,我会使用地图

CREATE TABLE sensor_data (
  asset_id text, 
  event_time timestamp,
  sensor_type int, 
  sensor_info map<text, int>,
  PRIMARY KEY(asset_id ,event_time)
) WITH CLUSTERING ORDER BY (event_time ASC)
创建表格传感器\u数据(
资产标识文本,
事件时间戳,
传感器类型int,
传感器信息图,
主键(资产id、事件时间)
)使用群集顺序(事件\时间ASC)
优点是即使新的传感器进入您的世界,您的模式也将保持不变。缺点是您将无法从集合中检索特定数据,您将始终以完全相同的方式检索集合。如果您使用的是Cassandra 2.1,那么关于集合的二级索引可能会有所帮助

嗯,,
卡洛

这当然有帮助,也有意义。但是,当我尝试使用命令-create index my_idx on sensor_info_table KEY(sensor_type)在sensor_type上创建索引时;我收到错误。只有2.1版本支持对集合进行索引--您使用的是什么版本?我使用的是来自包-apache-cassandra-2.1.0-rc3的cassandra在传感器信息表上创建索引my_idx(键(传感器类型));这应该可以工作,我尝试了,我得到了错误-在传感器信息表上创建索引my_idx(键(传感器类型));对于它的工作,我的cqlsh显示版本号cqlsh 5.0.1,如果这有区别的话。