如何在此 dynamodb table 中搜索唯一用户?

How to search for unique users in this dynamodb table?

return 如何使用以下(简化的)模式从 dynamodb table 中创建唯一用户列表?它需要 GSI 吗?这是针对用户数量较少的应用程序,我可以想出无需创建 GSI 即可满足我的需求的方法(例如在 SK 上扫描和过滤,或创建一个包含用户 ID 列表的新项目)。但什么是可扩展的解决方案?

------------------------------------------------------
| pk      | sk                     | amount | balance  
------------------------------------------------------
| "user1" | "2021-01-01T12:00:00Z" | 7      |
| "user1" | "2021-01-03T12:00:00Z" | 5      |

| "user2" | "2021-01-01T12:00:00Z" | 3      |
| "user2" | "2021-01-03T12:00:00Z" | 2      |

| "user1" | "user1"                |        | 12
| "user2" | "user2"                |        | 5

您的数据模型并非旨在有效地获取所有唯一身份用户。

您当然可以使用scan操作并使用您当前的数据模型进行过滤,但效率很低。

如果您想在单个查询中获取所有用户,则需要将所有用户信息放入一个分区中。正如您所确定的,您可以使用 GSI 执行此操作。您还可以重新组织数据模型以适应这种访问模式。

例如,您提到该应用程序的用户数较少。如果用户数量足够少,您可以创建一个分区来存储所有用户的列表(例如 PK=USERS)。如果您可以在 400kb 以下执行此操作,那可能是一个可行的解决方案。

惯用的解决方案是创建全局二级索引。