kan*_*san 2 datamodel cassandra nosql phpcassa cassandra-jdbc
假设有10个设备(dev01,dev02,dev03..etc).
它以一定的间隔时间发送数据,我们收集这些数据,因此我们的数据模式是
dev01 :int
signalname :string
signaltime :date/time[with YY-MM-DD HHMMSS.mm]
Extradata :String
Run Code Online (Sandbox Code Playgroud)
我想将数据推送到cassandra,哪种方式最好存储这些数据?
我的查询就像,
1需要检索基于设备的当前日期数据,还是某个日期范围?
2 5设备当天数据?
我不确定将数据存储到cassadra中的以下方法是最佳模型
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
Run Code Online (Sandbox Code Playgroud)
请帮助我解决这个问题,还有其他任何方式吗?
感谢和问候,Kannadhasan
我在这里看到了3个与您的方法有关的问题,我将在下面介绍:
在开始之前:不鼓励使用超级列族.在这里阅读更多.复合键(如下所述)是要走的路.
此外,您可能需要阅读CQL3,因为thrift是 1.2 以来的遗留API.
您可以使用本机集合数据类型(如列表和映射等),而不是存储json数据.如果您仍想使用JSON,那么自2.2版以来,Cassandra中的JSON支持得到了改进.
通常,每个设备和每个时间段查询非常简单:
或者,如果要一次查询多个设备(但只有一个事件类型)的数据,则可以将信号类型用作行键(并将timeuuid/timestamp用作列键).在此博客条目中阅读更多关于cassandra中的时间序列数据.
希望有所帮助!