我的表是(device, type, value, timestamp)
,其中(device,type,timestamp)
创建了一个唯一组合(非 DynamoDB DBMS 中复合键的候选者)。
我的查询可以介于这三个属性中的任何一个之间,例如
GET ( value
)s from ( device
) with ( type
) 具有 ( timestamp
) 大于 < some-timestamp
>
我正在使用dynamoosejs/dynamoose。从大多数搜索中,我相信我应该使用三个字段的组合(作为单个字段 ; device-type-timestamp
)作为id
. 但是set: function
ofSchema
不允许我使用对象属性(例如this.device
),并且由于某些原因,我无法在外部执行此操作。
我得到的最接近的 ( id:uuidv4:hashKey, device:string:GlobalSecIndex, type:string:LocalSecIndex, timestamp:Date:LocalSecIndex
)
和
( id:uuidv4:rangeKey, device:string:hashKey, type:string:LocalSecIndex, timestamp:Date:LocalSecIndex
)
等等..
但是,在使用 Query 时,很难获取特定device,type
的结果,因为id
, (hashKey
或rangeKey
) 总是从场景中丢失。
所以这个问题。对于这样的桌子,你会怎么做?
需要注意的是,该表旨在收集来自 IoT 设备的内容,每个设备平均每 5 分钟生成一次。