在DynamoDB中为给定的表选择哈希键和排序键的有效方法是什么



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

  1. 用户名
  2. 用户轮班结束日期
  3. 用户项目代码
  4. 用户活动

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

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

例如,考虑下表:

用户项目代码监控测试监控测试
UserName UserShiftEndDate用户活动
用户A 2020年12月13日 45
用户B 2020年12月14日 47
用户 2020年12月17日 45
用户B 2020年12月14日 45
用户C 2020年12月15日 管理

在某些情况下,创建表时可能只提供分区键作为主键。在这些情况下,只能通过分区键或通过扫描操作返回表中的所有项来检索数据。以这种方式创建表很简单,在某些情况下,您只需要简单即可。

然而,随着数据集的增长,表扫描可能会在价格和性能方面成为一种昂贵的负担。扫描表格会很快耗尽你的阅读能力,从而增加你的账单。

因此,在表中添加排序键可以打开扫描和分区键之外的更多数据检索功能。使用排序键不仅可以对数据进行分组和组织,还可以为查询表中的项提供其他方法。

排序键适用于以下情况:

  • 他们在一个可以收集相关信息的地方收集相关信息高效查询。精心设计的排序键可以让您检索使用范围查询的常用相关项组诸如begins_with、between、>、<,等等

  • 复合排序键允许您在数据中定义分层(一对多(
    关系,您可以在
    层次结构的任何级别查询这些关系。

使用排序键时,可以使用KeyConditionExpression(使用范围(通过使用比较运算符来编写条件语句,该运算符根据键进行计算并限制返回的项。换句话说,您可以使用特殊的运算符来根据项目的排序键值来包括、排除和匹配项目。

KeyConditionExpression

最新更新