首页 > 解决方案 > 用于时间序列数据的 Cassandra 数据模型以查询最后一小时数据

问题描述

我有一个场景来保存设备中的事件,这些事件将以 30 秒的间隔触发。单个事件将包含最多 20 个字段(表中的列数为 20),我需要运行查询以从表中获取最后一小时的事件以进行批处理。由于它是时间序列数据,据我所知,我认为选择小时作为分区键不是最佳做法,因为随着设备数量的增加,最终会形成巨大的分区。因此,如果我选择年或月作为分区键来控制分区大小,我将如何获取最后一小时的事件?

1,在这种情况下选择Cassandra是个好选择还是有更好的选择?

2、如果我选择Cassandra,我应该如何设计数据模型来处理这种情况?

标签: databasecassandratime-seriesbigdatadata-modeling

解决方案


是的,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.

这将在集群中均匀分布事件。这种设计的唯一问题是,如果我们在一天中的某个特定时间有太多更新,它将淹没该分区。


推荐阅读