繁体   English   中英

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

[英]Whats the best way to query DynamoDB based on date range?

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

简而言之:我在 DynamoDB 中的表将具有 6 个属性EventNameLocationStartDateEndDatePrioritysource

查询将具有 4 个强制属性StartDateEndDateSourceEvent Name

谢谢您的帮助。

您可以使用大于/小于比较运算符作为查询的一部分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)所涉及的额外成本(读/写)......以及数据投影所需的额外内存......

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM