首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cassandra timeseries datamodel

Cassandra timeseries datamodel
EN

Stack Overflow用户
提问于 2013-08-01 07:41:03
回答 1查看 1.1K关注 0票数 2

假设有10个设备(dev01、dev02、dev03..etc)。

它以一定的间隔时间发送数据,我们收集这些数据,所以我们的数据模式是

代码语言:javascript
复制
 dev01      :int
 signalname :string
 signaltime :date/time[with YY-MM-DD HHMMSS.mm]
 Extradata  :String

我想把数据推入卡桑德拉,哪种方式最适合存储这些数据?

我的疑问是,

1需要检索基于当前数据的设备,还是有一定的日期范围?

2 5设备当前的数据?

我不确定以下存储数据的方式是否是最好的模型

代码语言:javascript
复制
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

请在这个问题上帮我一下,还有别的办法吗?

谢谢和问候,卡纳达桑

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-01 08:34:09

我在这里看到你的做法有三个问题,我将在下面谈一谈:

  • 超级柱家族,
  • 节俭对cql3,
  • json数据作为单元格值。

在继续之前:不鼓励使用超级列家族在这里读更多。复合键(如下面所述)是要走的路。

另外,您可能需要阅读CQL3,因为从1.2开始,节俭是一个遗留的API

您可以使用本机收集数据类型,如列表、地图等,而不是存储json数据。如果您仍然想使用JSON,那么就有自2.2版以来在Cassandra中改进了JSON支持了。

通常,每个设备和每个时间段的查询都是非常简单的:

  • 行键是设备id,列键是timeuuid。
  • 为了避免热点,可以在行键中添加“桶”计数器(创建一个复合行/分区键)来旋转节点。
  • 然后,如果您知道行/设备id,则可以查询时间范围。

或者,如果希望一次查询多个设备(但只有一种事件类型),则可以将信号类型用作行键(并将timeuuid/时间戳用作列键)。在这个博客条目中阅读关于cassandra中的timeseries数据的更多信息。

希望这能帮上忙!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17987921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档