在DynamoDB

时间:2016-06-29 00:05:40

标签: amazon-web-services amazon-dynamodb nosql

我试图在DynamoDB中存储一堆网络测量值,我不确定正确的分区键和范围键。我的数据将如下所示:

{
count: 33,
total: 45,
timestamp: 21231133,
data: {
    key1: value1,
    key2: value2,
    key3: value3,
    key4: value4,
    key5: value5}
}

我需要能够检索在timestamp1和timestamp2之间有时间戳的数据。我将每秒存储数据,并以较慢的间隔(可能每30秒)检索一次。

我需要避免热分区,并且仍然能够快速查询数据。我不想做表扫描。

谢谢,

1 个答案:

答案 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”]}