我试图在DynamoDB中存储一堆网络测量值,我不确定正确的分区键和范围键。我的数据将如下所示:
{
count: 33,
total: 45,
timestamp: 21231133,
data: {
key1: value1,
key2: value2,
key3: value3,
key4: value4,
key5: value5}
}
我需要能够检索在timestamp1和timestamp2之间有时间戳的数据。我将每秒存储数据,并以较慢的间隔(可能每30秒)检索一次。
我需要避免热分区,并且仍然能够快速查询数据。我不想做表扫描。
谢谢,
答案 0 :(得分:0)
根据问题中提到的查询模式,我认为“timestamp”属性应该是PARTITION键。将属性定义为String,Number或Binary时,可以使用BETWEEN运算符。
在此表数据上,除非您有任何其他查询模式或用例,否则我看不到任何可用作RANGE键的属性。
BETWEEN:大于或等于第一个值,小于或 等于第二个值。 AttributeValueList必须包含两个 AttributeValue相同类型的元素,String,Number或 二进制(不是集合类型)。目标属性与目标属性匹配 value大于或等于第一个元素且小于, 或等于,第二个元素。如果项目包含AttributeValue 与请求中提供的类型不同的元素 价值不匹配。例如,{“S”:“6”}不能与之比较 { “N”: “6”}。此外,{“N”:“6”}与{“NS”不相符:[“6”,“2”,“1”]}