简单的哈希密钥似乎过于简单而无法编写文章,而许多人写的是复合哈希/范围密钥,因为复合哈希/范围密钥对许多复杂情况都很有用。但我相信在常见的应用程序中,许多表应该使用Simple Hash Keys设计。在什么情况下你使用Simple Hash Keys?
例如,当您设计如下所示的分层模型时,如何为每个表设计主键? (租户以外的所有表都将tenant_id作为字段。)
仅限#34;团队成员"由Composite Hash / Range Key设计。其他的是由Simple Hash Key设计的。
其中sub_id可以是序号,created_at或其他。
在我发布这个问题之后,我了解了有关DynamoDB及其历史的更多信息,我现在非常清楚地认识到我的担忧。
在亚马逊发布GSI之前,我们必须设计像#34; Idea 2"为了查询" tenant_id"。但现在我们可以使用GSI,因此我们可以使用"简单哈希密钥和GSI"的组合来设计表(例如团队,项目或任务)。是对的吗??
答案 0 :(得分:1)
您使用单个哈希键表来描述项目。例如,用户有许多信息,如姓名,年龄等。您可以创建一个用户表,其中user_id为hashkey,所有其他信息为属性。
您使用哈希范围架构来描述关系。例如,一个团队可以拥有多个用户。因此,您可以创建Team-Member-Relationship表,其中team-id为hashkey,user-id为range key。
换句话说,绘制一个关系图,顶点是(用户,团队,项目),边缘是他们的关系(1对1,1对多,多对多等)。然后对顶点使用Hashkey模式,为边缘使用Hash-Range模式。
谢谢!
厄尔本
答案 1 :(得分:0)
我已回复您在AWS论坛here上发布的同一篇文章。希望它对你有所帮助。尽管Stackoflow和AWS论坛都受到DynamoDB专家的积极监控,请随时与我联系。感谢您对DynamoDB的关注!