在什么情况下你会在 DynamoDB 上使用 Simple Hash Keys?

In what situation do you use Simple Hash Keys on DynamoDB?

Simple Hash Keys 写文章好像太简单了,而写 Composite Hash/Range Keys 的很多,因为 Composite Hash/Range Keys 对于很多复杂的情况很有用。但是我相信在一般的应用中,很多table应该是用Simple Hash Keys来设计的。你在什么情况下使用Simple Hash Keys?

例如,当你设计如下层次模型时,你如何为每个table设计主键? (除 Tenant 之外的所有 table 字段都有 tenant_id。)

想法.1

只有"Team Member"是Composite Hash/Range Key设计的。其他由Simple Hash Key设计。

想法。 2

其中 sub_id 可以是序号,created_at,否则。

更新

发布这个问题后,我了解了更多关于 DynamoDB 及其历史的知识,现在我清楚地认识到了我的担忧。

在 Amazon 发布 GSI 之前,我们必须设计 table 类似 "Idea 2" 以便针对 "tenant_id" 进行查询。但现在我们可以使用 GSI,因此我们可以使用 "Simple Hash Key and GSI" 的组合来设计 table(例如团队、项目或任务)。那正确吗??

我已经回复了与您在 AWS 论坛 here 上相同的 post。希望对您有所帮助。尽管 Stack Overflow 和 AWS 论坛都受到 DynamoDB 专家的积极监控,但请随时关注我。感谢您对 DynamoDB 的关注!

您使用单个散列键 table 来描述一个项目。例如,一个用户有很多信息,如姓名、年龄等。您可以创建一个用户 table,其中 user_id 作为哈希键,所有其他信息作为属性。

您使用哈希范围架构来描述关系。例如,一个团队可以有多个用户。因此,您可以创建一个团队成员关系 table,其中团队 ID 作为散列键,用户 ID 作为范围键。

换句话说,画一个关系图,顶点是(用户,团队,项目),边缘是他们的关系(1对1,1对多,多对多等)。然后对顶点使用 Hashkey 模式,对边使用 Hash-Range 模式。

谢谢!

二本