【问题标题】:Cassandra data model for time series data to query last hour data用于时间序列数据的 Cassandra 数据模型以查询最后一小时数据
【发布时间】:2021-08-03 01:26:44
【问题描述】:
我有一个场景来保存设备中的事件,这些事件将以 30 秒的间隔触发。单个事件最多包含 20 个字段(表中的列数为 20),我需要运行查询以从表中获取最后一小时的事件以进行批处理。由于它是时间序列数据,据我所知,我认为选择小时作为分区键不是最佳实践,因为随着设备数量的增加,最终会形成巨大的分区。那么如果我选择年份或月份作为分区键来控制分区大小,我将如何获取最后一小时的事件?
1,在这种情况下选择Cassandra是个好选择还是有更好的选择?
2,如果我选择Cassandra,我应该如何设计数据模型来处理这种情况?
【问题讨论】:
标签:
database
cassandra
time-series
bigdata
data-modeling
【解决方案1】:
是的,Cassandra 是最好的选择。
我们应该始终为查询设计 Cassandra 表。
我会设计如下表格-
CREATE TABLE DEVICE_EVENT_BY_HOUR (
year int,
month int,
week int,
day int,
hour int,
value text,
PRIMARY KEY ((year, month, week, day, hour),value);
The value column will have all the event values in json format.
这将在整个集群中均匀分布事件。这种设计的唯一问题是,如果我们在一天中的某个特定时间有太多更新,它将淹没该分区。