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

Amazon dynamodb 用于存储不可变时间序列遥测/传感器数据的表格设计?,amazon-dynamodb,nosql,Amazon Dynamodb,Nosql,我正在寻找一些关于DynamoDB表设计的建议,以存储从1000个传感器集线器流入的遥测数据。传感器集线器每天最多发送15000条消息,其中包含以下内容: 时间戳(unix时间) 站点id(uuid) 传感器类型(字符串) 传感器数据(json) 我已经研究了存储时间序列数据的最佳实践,并将采用一种表分区策略,即每月创建一个新的“热数据”表(并相应地调整RCU和WCU以适应较旧的“较冷”表) 我不确定的是选择合适的散列键和排序键,以及设置索引等等 对数据的大多数查询将是:在station_id=

我正在寻找一些关于DynamoDB表设计的建议,以存储从1000个传感器集线器流入的遥测数据。传感器集线器每天最多发送15000条消息,其中包含以下内容:

时间戳(unix时间)

站点id(uuid)

传感器类型(字符串)

传感器数据(json)

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

我不确定的是选择合适的散列键和排序键,以及设置索引等等

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


猜测一下,我假设我将使用station_id作为散列键,timestamp作为排序键,但是如何在不使用过滤器的情况下查询具有特定传感器类型的消息呢?我是否最好将station\u id和sensor\u type组合为哈希键?

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

stationId\u sensorType(字符串,分区键)-包含站点id和传感器类型连接值的组合属性

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

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


您还可以将stationIdsensorType作为单独的字段存储在项目中,然后您可以在它们上创建GSI以支持其他查询,例如,获取stationId的所有值这15000个值是否平均分布在24小时内?@mayu是的,正确。谢谢@Ivan。我已经着手实施了你的建议,看来它会奏效的。