将数据表中的大量行(约 10000 行)传输到 AWS lambda 的优化方法

我正在 tableau 中开发一个扩展,它以数据表中的行的形式记录用户决策(使用 JavaScript),它将修改后的行以 JSON 格式发送到 AWS lambda。在 AWS lambda 中,我们从行中读取数据。创建必要的更新 SQL 查询并使用 for 循环在 redshift 数据库上一一运行它们。

但是这个过程花费了太多时间。 有人可以建议一种更好的方法吗

  1. 是否有更好的方法将数据发送到 AWS lambda,例如打包/压缩数据并发送等?
  2. 我们可以使用任何替代逻辑来代替“for 循环”来批量更新数据库吗?

注意:每个修改的行可能有不同的值。

iseehr 回答:将数据表中的大量行(约 10000 行)传输到 AWS lambda 的优化方法

你知道所有的时间都花在了什么地方吗?我对可能发生的事情有一个或两个猜测,但数据会有所帮助。

Redshift 是一个列式数据库,专为批量上传数据而不是逐行更新而设计。它还专为大量数据(100GB 及以上)而设计。这看起来不像是匹配的用例,但您没有提供足够的信息来确定。 Redshift 也未针对将数据从 SQL 移动到计算节点进行优化,因此如果您通过 SQL 文字加载数据,则速度不会很快。

如果您确实有大量数据,则需要在加载到 redshift 之前捆绑足够的记录 (100MB+),并通过 S3 执行此操作。这意味着数据在 Redshift 中可用之前将等待一段时间。如果这不能满足您的需求,那么您可能没有选择正确的服务。在此模型中,您的 Lambda 会将记录合并为大型 S3 文件。这些将被复制到 Redshift 和间隔中。这基本上就是 Kinesis Firehose 所做的,因此您可能需要研究此 AWS 服务。

Redshift 针对大量读取和少量大量写入进行了优化。如果您需要与读取相同数量的(小)写入,您可能需要一个事务数据库。如果你想继续使用 Postgresql 风格的界面,那么 RDS 中的 Postgresql 是一个选择。

本文链接:https://www.f2er.com/45949.html

大家都在问