【问题标题】:DynamoDB - Sort key attribute nameDynamoDB - 排序键属性名称
【发布时间】:2020-03-12 19:48:35
【问题描述】:

在 DynamoDB 中使用哈希和范围/排序键创建复合键时,将创意字符串值存储在排序键中似乎非常有用(例如“Details-123456-foo”,其中该值中的每个段都可以对那张唱片有意义的东西)。在设计架构时,文档似乎也能引导您朝这个方向前进。

也就是说,将排序键命名为通用名称是否有意义,例如“sortKey”或“rangeKey”而不是特定名称(例如“createTimestamp”),以便您灵活地存储相同的各种数据哈希键,从而在使用带有哈希/排序键的“查询” API 时保持快速的数据访问?

【问题讨论】:

  • 我个人更喜欢特定版本,例如。 username_type 或 UsernameType 因为后面的代码是不言自明的。

标签: aws-lambda amazon-dynamodb aws-sdk dynamodb-queries


【解决方案1】:

是的,DynamoDB 的最佳做法是为主键和排序键使用通用名称。

当您按预期使用 DynamoDB 时,您将不同类型的项目存储在一个表中。主键和排序键的项目类型特定键名称不适用于此。使用GSI overloading 时也是如此。

让我们以博客的用例为例,您希望将帖子和 cmets 存储在同一个 DynamoDB 表中。在这种情况下,每个帖子和评论都会有某种唯一的 ID。与其将主键命名为“post_id”,不如将其统称为(例如,仅“id”)并通过将它们的类型附加到值(“post_1”、“post_2”、“comment_1”、... )。这同样适用于排序键,因为根据键类型,您可能希望按不同的条件进行排序。

【讨论】:

  • 谢谢 - 这很有意义并证实了我的想法。并且 +1 链接到超载 GSI 的链接!这太酷了!无论出于何种原因,我都无法在网络上的任何地方找到这些最佳做法。
猜你喜欢
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多