我正在寻找有关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组合为散列键吗?
答案 0 :(得分:3)
从您提供的查询示例判断我将创建下表:
stationId_sensorType (字符串,分区键) - 包含站ID和传感器类型的连接值的组合属性
timestamp (数字,范围键) - 可用于按时间戳排序或仅查找时间戳范围内的记录的UNIX时间戳。
这将允许获取一对(stationId,sensorType)的所有值。
您还可以将 stationId 和 sensorType 存储为项目中的单独字段,然后您可以在其上创建GSI以支持其他查询,例如,获取所有值的的stationID 强>