Amazon dynamodb 试图以最佳方式设计模式或表并查找键
我试图设计dynamodb模式/表,并试图根据用例和查询模式找到PK/SK、LSI和GSI 我是DynamoDB的新手,尝试了一些表格模式,但我混合了很多东西 我的用例如下,有一个问题或挑战板,用户可以在一个管理员下玩。可能有许多这样的管理员和特定管理员下的用户。然后每个用户将被标记为多个挑战。例如 管理员\u id---1对多-->用户\u id---1对多-->挑战\u id 挑战可分为以下几类Amazon dynamodb 试图以最佳方式设计模式或表并查找键,amazon-dynamodb,Amazon Dynamodb,我试图设计dynamodb模式/表,并试图根据用例和查询模式找到PK/SK、LSI和GSI 我是DynamoDB的新手,尝试了一些表格模式,但我混合了很多东西 我的用例如下,有一个问题或挑战板,用户可以在一个管理员下玩。可能有许多这样的管理员和特定管理员下的用户。然后每个用户将被标记为多个挑战。例如 管理员\u id---1对多-->用户\u id---1对多-->挑战\u id 挑战可分为以下几类 很容易 轻松的 中庸的 有点难 硬的 很难 现在用户可以对挑战执行一些操作,如 解决 未决
- 很容易
- 轻松的
- 中庸的
- 有点难
- 硬的
- 很难
- 解决
- 未决
- 进展中
- 还没开始呢
- 你明天出发吗
- 不包括应用程序等
- 为每个用户标记特定管理员的所有挑战
- 按操作类型获取特定用户订单的所有挑战
- 获取特定管理员的每个用户的所有挑战计数
如果需要提供更多详细信息,请告诉我。您可以使用下面的模式
| pk | sk | status | user | challenges_type |
| admin1 | users#user1#Very easy | solved | user1 | admin1#solved | ... some more metadata
| admin1 | users#user1#Moderate | InProgress| | admin1#InProgress | ... some more metadata
| admin2 | users#user3#Very easy | solved | | admin2#solved | ... some more metadata
GSI1主键:用户主键:挑战类型
用例
选择*其中pk=admin1
得到所有的结果并进行计算从GSI1中选择*,其中pk=user1
从GSI1中选择*,其中pk=user1,sk beginswith admin1
| pk | sk | status | user | challenges_type |
| admin1 | users#user1#Very easy | solved | user1 | admin1#solved | ... some more metadata
| admin1 | users#user1#Moderate | InProgress| | admin1#InProgress | ... some more metadata
| admin2 | users#user3#Very easy | solved | | admin2#solved | ... some more metadata