如何在此 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 以下执行此操作,那可能是一个可行的解决方案。
惯用的解决方案是创建全局二级索引。
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 以下执行此操作,那可能是一个可行的解决方案。
惯用的解决方案是创建全局二级索引。