什么是根据日期范围查询dynamodb的最佳方法?

时间:2016-01-07 17:35:51

标签: amazon-dynamodb dynamo-local database nosql

作为从SQL迁移到DYnamoDB的一部分,我正在尝试创建一个dynamoDB表。 UI允许用户基于4个属性开始日期,结束日期,事件名称和事件源进行搜索。 该表有6个属性,上面四个属于它的子集,其他属性是优先级和位置。如上所述的查询使得必须基于以上四个值进行搜索。什么是将信息存储在dynamodb中的最佳方式,这将有助于我根据开始日期和结束日期查询相当容易。 我想创建一个使用hashkey作为startdate的GSI,作为结束日期的rangekey和其余两个attrributes的GSI?

Inshort: 我在DynamodB中的表将有6个属性 EventName,Location,StartDate,ENd Date,Priority and source。

查询将有4个必需属性 StartDate,EndDate,Source和Event Name。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以在查询http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html

中使用大于/小于比较运算符

因此,您可以尝试使用架构构建表: (EventName(hashKey),“StartDate-EndDate”(sortKey),其他属性)

在这种情况下,排序键基本上是开始日期和结束日期的组合,允许您使用> =(在第一部分)和< =(在第二部分)... ... dynamodb使用基于ASCII的字母订购...所以我们假设您的sortKey如下所示:“73644-75223”您可以使用> =“73000-”AND< =“73000-76000”来获取给定的事件。

此外,您可以在桌面上为需要通过查询读取的每个剩余属性创建GSI。然后,您可以将数据投影到要使用查询获取的索引中。与LSI相比,来自GSI的查询不会获取未投影的属性。请注意使用GSI(和LSI)所涉及的额外成本(读/写)......以及数据预测所需的额外内存......

希望它有所帮助。