【发布时间】:2015-02-25 07:22:25
【问题描述】:
Simple Hash Keys 似乎太简单了,不能写一篇文章,而很多人写的是 Composite Hash/Range Keys,因为 Composite Hash/Range Keys 对于许多复杂的情况很有用。但我相信在常见的应用程序中,很多表都应该使用 Simple Hash Keys 来设计。您在什么情况下使用简单哈希键?
例如,当您设计如下层次模型时,您如何为每个表设计主键? (Tenant 以外的所有表都有tenant_id 作为字段。)
- 租户
- 用户
- 团队
- 项目
- 任务
- 团队成员
想法1
只有“团队成员”是由复合哈希/范围键设计的。其他的则由 Simple Hash Key 设计。
想法。 2
- Tenant 由 Simple Hash Key 设计。
- 用户、团队和项目的主键将是复合的(tenant_id、sub_id)。
- 任务的主键将是复合的 ({tenant_id}_{project_range_key}, sub_id)。
- 团队成员的主键将是复合的({tenant_id}_{team_range_key}、{tenant_id}_{user_range_key})。
其中 sub_id 可以是序列号、created_at 或其他。
更新
发布此问题后,我了解了更多有关 DynamoDB 及其历史的信息,现在我清楚地认识到我的担忧。
在亚马逊发布 GSI 之前,我们必须设计像“Idea 2”这样的表来查询“tenant_id”。但是现在我们可以使用 GSI,所以我们可以使用“简单哈希键和 GSI”的组合来设计表(例如团队、项目或任务)。是对的吗??
【问题讨论】:
标签: database amazon-web-services amazon-dynamodb key-value-store