Amazon web services DynamoDB-减少查询数量

Amazon web services DynamoDB-减少查询数量,amazon-web-services,amazon-dynamodb,dynamodb-queries,Amazon Web Services,Amazon Dynamodb,Dynamodb Queries,在我的用户登录应用程序后,我向DynamoDB发出了太多请求,我正在考虑不同的方法来减少呼叫次数 该应用程序允许用户触发发送给其他用户的某些警报。例如:“收到货物,到达甲板”,“装运完成”等 以下是所作的呼吁: 获取公司的软件许可证到期日期 获取计算机在大楼中的位置(即“办公室A”) 获取可触发的各种警报(即“已收到装运、到达甲板”、“装运已完成”等) 获取有关用户的信息(即用户所属的公司团队以及用户的管理级别(可以是0、1、2或3)) 我认为可能的解决方案是: 将公司的许可证到期日期作为每台计

在我的用户登录应用程序后,我向DynamoDB发出了太多请求,我正在考虑不同的方法来减少呼叫次数

该应用程序允许用户触发发送给其他用户的某些警报。例如:“收到货物,到达甲板”,“装运完成”等

以下是所作的呼吁:

  • 获取公司的软件许可证到期日期
  • 获取计算机在大楼中的位置(即“办公室A”)
  • 获取可触发的各种警报(即“已收到装运、到达甲板”、“装运已完成”等)
  • 获取有关用户的信息(即用户所属的公司团队以及用户的管理级别(可以是0、1、2或3))
  • 我认为可能的解决方案是:

  • 将公司的许可证到期日期作为每台计算机的一个属性(这将减少1次查询)。但是,如果我需要更新公司的许可证到期日期,那么我需要更新系统中每台计算机的许可证到期日期,这听起来不切实际,因为数据库中可能有200台、300台甚至更多计算机

  • 将公司的许可证到期日期添加为警报的属性(这将减少1个查询);这似乎更合理,因为只有大约15种不同的警报,因此如果我以后需要更改许可证到期日期,这还不算太糟糕

  • 缓存用户设备上的信息;但是,我似乎找不到一个好的策略来尽可能地更新本地存储的信息


  • 我仍然认为这3个选项听起来不太好,所以我希望有人能给我指出正确的方向。有没有减少呼叫数量的好方法?我正在检索有关4个不同实体(许可证、计算机、警报、用户)的信息,我应该在用户登录后留下这4个电话吗?

    以下是每个组件可以做的几件事

  • 获取有关用户的信息

    将其保存在会话存储中,并在详细信息更改时更新存储。会话存储通常使用类似缓存的redis实现

  • 计算机定位

    将它保存在像redis这样的分布式缓存中。惰性地初始化它。每当计算机位置发生新的写操作时(在IMO中很少见),使用dynamodb streams和aws lambda从redis中删除条目

  • 警报种类

    与计算机位置相同

  • 许可证到期日

    如果可能的话,不要允许许可证到期日(为这些情况发布一个新的,以便保持可追溯性)和永久缓存许可证到期日。或者与计算机位置相同