我正在使用 AWS Mobile HUD 和连接服务(最突出的是 Cognito 和 DynamoDB)构建应用程序。目前,我面临着设置一个方案的问题,该方案允许我在 DynamoDB 项目上存储用户相关信息(反之亦然)。
场景
运行 1
- 用户 A 从 DynamoDB 中提取
[RootItem] = {RootItem_1, RootItem_2, RootItem_3}
列表(检查:工作正常) - 用户 A 要么关闭
RootItem_1
(在应用中标记为“不感兴趣”)
运行 2
- 用户 A 登录应用程序
- 用户 A 提取
[RootItem] = {}
的列表 - 用户 A 应该只获取不被拒绝的
RootItems
- 发送给客户端的列表应为
{RootItem_2, RootItem_3}
作为非关系数据/NoSQL 的新手,我不确定解决这个问题的最佳方法是什么。可能的想法:
- 将用户 ID 存储在 RootItem_1 上,以将其排除在扫描中[问题:可能有数千名用户拒绝同一项目]
- 将 RootItem_1 的 uuid 存储到 cognito 上的用户数据,在拉取之前在本地缓存并从拉取中排除 uuid
- 创建包含排除/排除 [userid, rootItem_uuid] 的表,首先查询此表以获取用户排除列表。 > 潜在的性能问题?
如果能得到一些建议,在 NoSQL 环境中处理这个问题的最佳方法是什么,那就太好了。
最佳答案
这当然取决于 RootItem 的数量,以及每个用户现有的事件(未消除)RootItem 的数量。但我会维护一个 RootItems 列表(或对其的引用)并将其存储在每个用户的表中,并在用户关闭项目时维护该列表。或者甚至有可能大多数项目都被忽略,然后它将成为用户保存的项目列表?
关于ios - AWS DynamoDB 为用户记住项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42315780/