ios - AWS DynamoDB 为用户记住项目

标签 ios swift amazon-web-services amazon-dynamodb nosql

我正在使用 AWS Mobile HUD 和连接服务(最突出的是 Cognito 和 DynamoDB)构建应用程序。目前,我面临着设置一个方案的问题,该方案允许我在 DynamoDB 项目上存储用户相关信息(反之亦然)。

场景

运行 1

  1. 用户 A 从 DynamoDB 中提取 [RootItem] = {RootItem_1, RootItem_2, RootItem_3} 列表(检查:工作正常)
  2. 用户 A 要么关闭 RootItem_1(在应用中标记为“不感兴趣”)

运行 2

  1. 用户 A 登录应用程序
  2. 用户 A 提取 [RootItem] = {} 的列表
  3. 用户 A 应该只获取被拒绝的 RootItems
  4. 发送给客户端的列表应为{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/

相关文章:

ios - 适用于 iOS 的 Google Maps SDK 不断增加内存使用量

ios - ARKit – 沿特定轴拖动节点(不是在平面上)

swift - 当焦点在搜索栏上时如何向 UISearchController 添加另一个文本字段?

swift - 需要更新tableView

amazon-web-services - Amazon S3 字节小时究竟是如何确定的?

node.js - 无法调用我的 lambda 函数

ios - 快速检测应用程序是在后台还是在前台

ios - 使用未解析的标识符 'input'

ios - 在 UITableView 中重新加载数据而不阻塞 UI

amazon-web-services - 环境在进入 Terminated 状态时无法启动