自动 DynamoDB 数据库检查 | ReactJS + AWS 放大

Posted

技术标签:

【中文标题】自动 DynamoDB 数据库检查 | ReactJS + AWS 放大【英文标题】:Automated DynamoDB Database Checks | ReactJS + AWS Amplify 【发布时间】:2021-01-21 19:25:35 【问题描述】:

我和我的团队正在开发一个全栈应用程序,在前端使用 ReactJS,在后端使用 AWS Amplify。我们使用 AWS AppSync 来查询 DynamoDB 表中的数据(通过 GraphQL 查询),使用 Cognito 进行用户身份验证,并使用 SES 向用户发送电子邮件。基本上,用户输入一些信息(DynamoDB 表 #1),然后与机会数据库(DynamoDB 表 #2)匹配,然后向用户显示前 3 个机会。如果没有找到,则会发送一封电子邮件通知用户他们将在找到机会时收到一封电子邮件。现在的问题:我想知道是否有一种方法可以自动查询 DynamoDB 表(例如每天一次或每次将新机会添加到 DynamoDB 表 #2 时)并向以下用户发送具有匹配机会的电子邮件在等他们吗?我尝试使用 Lambda 触发器,但我能做到的唯一方法是根据 DynamoDB 表 #2 查询 DynamoDB 表 #1 的每一行。这在计算上是不可行的,因为将会有太多的资源被用完。我正在寻求有关如何进行日常检查的建议,因为我还没有弄清楚!任何回复表示赞赏,如果您需要我这边的任何其他信息,请告诉我!谢谢!

【问题讨论】:

【参考方案1】:

您可以考虑使用DynamoDB Streams。当一个新的机会被添加到 DynamoDB 时,流将触发一个 lambda 被调用。然后,您的 lambda 可以执行您的业务逻辑,以将机会与适当的用户相匹配。

【讨论】:

你好赛斯!我确实想到了这一点,但这是否意味着我必须在表 2 的所有行中检查表 1 中的每个用户?这如何减少后端工作?或者这是做这种事情的唯一方法?如果有 1000 个用户和 500 个机会,是否可行?因为每次有新的插入机会数据库时都会进行 1000*500 次检查 听起来你的问题有两个部分。第 1 部分涉及在事件发生时如何采取行动(例如新机会)。第 2 部分涉及将用户与机会匹配。听起来您对第 1 部分有一些想法(例如 DDB 流),但仍在研究如何以高效的方式将用户与机会相匹配。也许您可以更深入地了解您的数据模型以及您如何为用户匹配机会,因为此时这部分似乎是您的瓶颈。

以上是关于自动 DynamoDB 数据库检查 | ReactJS + AWS 放大的主要内容,如果未能解决你的问题,请参考以下文章

如何检查然后更新node.js中的AWS dynamoDB项?

DynamoDB 使用 Cloudformation 自动扩展

Dynamodb 自动缩放地形导入

AWS Amplify in React,如何从订阅的侦听器呈现新数据

Nodejs,AWS Dynamodb如何在创建新记录之前检查用户是不是已经存在

将自动缩放策略应用于 DynamoDB 表时出现 ObjectNotFoundException