Amazon dynamodb 试图以最佳方式设计模式或表并查找键

Amazon dynamodb 试图以最佳方式设计模式或表并查找键,amazon-dynamodb,Amazon Dynamodb,我试图设计dynamodb模式/表,并试图根据用例和查询模式找到PK/SK、LSI和GSI 我是DynamoDB的新手,尝试了一些表格模式,但我混合了很多东西 我的用例如下,有一个问题或挑战板,用户可以在一个管理员下玩。可能有许多这样的管理员和特定管理员下的用户。然后每个用户将被标记为多个挑战。例如 管理员\u id---1对多-->用户\u id---1对多-->挑战\u id 挑战可分为以下几类 很容易 轻松的 中庸的 有点难 硬的 很难 现在用户可以对挑战执行一些操作,如 解决 未决

我试图设计dynamodb模式/表,并试图根据用例和查询模式找到PK/SK、LSI和GSI

我是DynamoDB的新手,尝试了一些表格模式,但我混合了很多东西

我的用例如下,有一个问题或挑战板,用户可以在一个管理员下玩。可能有许多这样的管理员和特定管理员下的用户。然后每个用户将被标记为多个挑战。例如

管理员\u id---1对多-->用户\u id---1对多-->挑战\u id

挑战可分为以下几类

  • 很容易
  • 轻松的
  • 中庸的
  • 有点难
  • 硬的
  • 很难
现在用户可以对挑战执行一些操作,如

  • 解决
  • 未决
  • 进展中
  • 还没开始呢
  • 你明天出发吗
  • 不包括应用程序等
现在我已经提出了下表和json格式

{ “表名”:“挑战”

}

我想挑战可能是PK。 基本查询模式如下所示

  • 为每个用户标记特定管理员的所有挑战
  • 按操作类型获取特定用户订单的所有挑战
  • 获取特定管理员的每个用户的所有挑战计数

如果需要提供更多详细信息,请告诉我。

您可以使用下面的模式

| 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

  • 这将为您提供有关如何构建dynamodb模式的基本概念

    | 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