假设有10个设备(dev01、dev02、dev03..etc)。
它以一定的间隔时间发送数据,我们收集这些数据,所以我们的数据模式是
dev01 :int
signalname :string
signaltime :date/time[with YY-MM-DD HHMMSS.mm]
Extradata :String我想把数据推入卡桑德拉,哪种方式最适合存储这些数据?
我的疑问是,
1需要检索基于当前数据的设备,还是有一定的日期范围?
2 5设备当前的数据?
我不确定以下存储数据的方式是否是最好的模型
Standard columnfamily Name:signalname
row key :dev01
columnname :timeseries(20120801124204)[YYMMDD HHMMSS]
columnvalue :Json data
columnname :timeseries(20120801124205)[YYMMDD HHMMSS][next second data]
columnvalue :Json data
row key :dev02
columnname :timeseries(20120801124204)[YYMMDD HHMMSS]
columnvalue :Json data
columnname :timeseries(20120801124205)[YYMMDD HHMMSS][next second data]
columnvalue :Json data
Or
Super columnfamily :signalname
row key :Clientid1
supercolumnname :dev01
columnname :timeseries(20120801124204)[YYMMDD HHMMSS]
columnvalue :Json data
supercolumnname :dev02
columnname :timeseries(20120801124204)[YYMMDD HHMMSS]
columnvalue :Json data
row key :Clientid2
supercolumnname :dev03
columnname :timeseries(20120801124204)[YYMMDD HHMMSS]
columnvalue :Json data
supercolumnname :dev04
columnname :timeseries(20120801124204)[YYMMDD HHMMSS]
columnvalue :Json data请在这个问题上帮我一下,还有别的办法吗?
谢谢和问候,卡纳达桑
发布于 2013-08-01 08:34:09
我在这里看到你的做法有三个问题,我将在下面谈一谈:
在继续之前:不鼓励使用超级列家族。在这里读更多。复合键(如下面所述)是要走的路。
另外,您可能需要阅读CQL3,因为从1.2开始,节俭是一个遗留的API。
您可以使用本机收集数据类型,如列表、地图等,而不是存储json数据。如果您仍然想使用JSON,那么就有自2.2版以来在Cassandra中改进了JSON支持了。
通常,每个设备和每个时间段的查询都是非常简单的:
或者,如果希望一次查询多个设备(但只有一种事件类型),则可以将信号类型用作行键(并将timeuuid/时间戳用作列键)。在这个博客条目中阅读关于cassandra中的timeseries数据的更多信息。
希望这能帮上忙!
https://stackoverflow.com/questions/17987921
复制相似问题