【问题标题】:How to decrease the query time DynamoDB如何减少查询时间 DynamoDB
【发布时间】:2020-12-24 12:04:22
【问题描述】:

我正在设置 DynamoDB。我们的数据很简单,它有四个字段:

  1. 用户名
  2. UserShiftEndDate
  3. 用户项目代码
  4. 用户活动

理想情况下,我们应该根据UserShiftEndDate 查询用户。我们数据中的所有字段/组合都不是唯一的。我可以为每条记录添加一个自动生成的 ID。

请根据UserShiftEndDate建议我选择哪些字段作为分区键和排序键或 GSI 以获得最佳查询响应时间。

例如,考虑下表:

UserName UserShiftEndDate UserProjectCode UserActivities
UserA 12/13/2020 45 monitoring
UserB 12/14/2020 47 testing
Userc 12/17/2020 45 monitoring
UserB 12/14/2020 45 testing
UserC 12/15/2020 47 managing

我的查询应该将日期作为输入,并返回所有shiftEndDate 晚于或等于给定日期的用户数据。

例如,如果输入 12/14/2020,则查询应返回除第 1 行之外的所有用户数据。

我们计划以即时形式存储日期。为了简单起见,我在这里提到它作为日期

【问题讨论】:

  • 嘿NewBee,能否请您给我们更多您想查询的信息,也许有一个例子?您是要查找单个用户还是同时具有轮班结束的所有用户? Stackoverflow now has table support,它应该可以帮助您在这里创建一个“演示”表。
  • @Jens,感谢您的回复,我编辑了我的问题。我希望这个问题现在更清楚了。

标签: amazon-web-services amazon-dynamodb dynamodb-queries amazon-dynamodb-index


【解决方案1】:

我建议创建一个 UUID(以编程方式生成)作为主键,然后创建一个带有 UserShiftEndDate 的 GSI。这样您就可以提供日期并获取具有提供日期的所有记录。请参阅this 文章了解更多信息。

【讨论】:

  • 感谢您的回复,但我认为使用 UserShiftEndDate 的 GSI 在这里不可行,因为我想使用 UserShiftEndDate > Today 获取行。但是我不能通过使用分区键作为 UserShiftEndDate 进行查询来做到这一点。与查询一样,我无法应用 > 过滤分区键
猜你喜欢
  • 2013-06-05
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多