用于存储不可变时间序列遥测/传感器数据的表设计?

时间:2017-08-08 02:07:32

标签: amazon-dynamodb nosql

我正在寻找有关DynamoDB表设计的一些建议,以便存储来自1000个传感器集线器的遥测数据流。传感器集线器每天最多发送15,000条消息,包含以下内容:

时间戳(unix时间)

station_id(uuid)

sensor_type(string)

sensor_data(json)

我已经研究了存储时间序列数据的最佳实践,并将采用表分区策略,每月创建一个新的“热数据”表(并根据较旧的“冷却器”表调整RCU和WCU)

我不确定选择合适的哈希键和排序键,以及设置索引等。

对数据的大多数查询将是:给我消息,其中station_id =“foo”和sensor_type =“bar”,时间戳在x和y之间。

猜测一下,我假设我会使用station_id作为哈希键,时间戳作为排序键,但如何查询具有特定sensor_type的消息而不诉诸过滤器?我最好将station_id和sensor_type组合为散列键吗?

1 个答案:

答案 0 :(得分:3)

从您提供的查询示例判断我将创建下表:

stationId_sensorType (字符串,分区键) - 包含站ID和传感器类型的连接值的组合属性

timestamp (数字,范围键) - 可用于按时间戳排序或仅查找时间戳范围内的记录的UNIX时间戳。

这将允许获取一对(stationId,sensorType)的所有值。

您还可以将 stationId sensorType 存储为项目中的单独字段,然后您可以在其上创建GSI以支持其他查询,例如,获取所有值的的stationID