database - 用于时间序列数据的 Cassandra 数据模型以查询最后一小时数据
问题描述
我有一个场景来保存设备中的事件,这些事件将以 30 秒的间隔触发。单个事件将包含最多 20 个字段(表中的列数为 20),我需要运行查询以从表中获取最后一小时的事件以进行批处理。由于它是时间序列数据,据我所知,我认为选择小时作为分区键不是最佳做法,因为随着设备数量的增加,最终会形成巨大的分区。因此,如果我选择年或月作为分区键来控制分区大小,我将如何获取最后一小时的事件?
1,在这种情况下选择Cassandra是个好选择还是有更好的选择?
2、如果我选择Cassandra,我应该如何设计数据模型来处理这种情况?
- 打开可能性
解决方案
是的,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.
这将在集群中均匀分布事件。这种设计的唯一问题是,如果我们在一天中的某个特定时间有太多更新,它将淹没该分区。
推荐阅读
- rest - OData v4 扩展多个一对多
- flutter - 文本溢出时如何淡化文本?
- r - R: as.name() - 不支持的类型符号错误”
- bluetooth - 如何检查 BLE 广告是否已启用(HCI)
- c# - GitLab 提供了错误的 C# 代码编码。解决此问题的方法
- amazon-web-services - 如何使用 CLI 访问 ec2 windows 实例中的 s3 存储桶
- quill.io - 是否可以使用 IN 使用 Quill 更新多行
- typescript - Pulumi 在运行时获取 kubernetes 上下文
- r - 表示每行按列组,循环
- google-apps-script - 从编码的谷歌表单中获取响应