将数据表中的大量行(大约 10000 行)传输到 AWS lambda 的优化方法
Optimized way to transfer large no of rows in datatables (AROUND 10000 ROWS)to AWS lambda
我正在 tableau 中开发一个扩展,它以数据表中行的形式记录用户决策(使用 JavaScript),它以 JSON 格式将修改后的行发送到 AWS lambda。在 AWS lambda 中,我们从行中读取数据。使用 for 循环在 redshift 数据库上一个一个地创建必要的更新 SQL 查询和 运行 它们。
但是这个过程花费了太多时间。
有人可以在
上提出更好的方法吗
- 是否有更好的方法将数据发送到 AWS lambda,例如 packing/zipping 数据并将其发送等?
- 我们可以使用任何替代逻辑而不是 'for loop' 来使用更改批量更新数据库吗?
注意:每个修改的行可能有不同的值。
你知道所有的时间都花在了什么地方吗?我对可能发生的事情有一个或两个猜测,但数据会有所帮助。
Redshift 是一个列式数据库,专为批量上传数据而不是逐行更新而设计。它还专为大量数据(100GB 及以上)而设计。这看起来不像是匹配的用例,但您没有提供足够的信息来确定。 Redshift 也未针对将数据从 SQL 移动到计算节点进行优化,因此如果您通过 SQL 文字加载数据,那么这不会很快。
如果您确实有大量数据,您需要在加载到 redshift 之前捆绑足够多的记录 (100MB+),并通过 S3 执行此操作。这意味着数据将等待一段时间才能在 Redshift 中可用。如果这不能满足您的需求,那么您可能没有挑选到合适的服务。在此模型中,您的 Lambda 会将记录合并到大型 S3 文件中。这些将被复制到 Redshift 和间隔中。这基本上就是 Kinesis Firehose 所做的,因此您可能想要查看此 AWS 服务。
Redshift 针对大量读取和少量大量写入进行了优化。如果您需要与读取数量相同的(小)写入,您可能需要一个事务数据库。如果您想继续使用 Postgresql 风格的界面,那么可以选择 RDS 中的 Postgresql。
我正在 tableau 中开发一个扩展,它以数据表中行的形式记录用户决策(使用 JavaScript),它以 JSON 格式将修改后的行发送到 AWS lambda。在 AWS lambda 中,我们从行中读取数据。使用 for 循环在 redshift 数据库上一个一个地创建必要的更新 SQL 查询和 运行 它们。
但是这个过程花费了太多时间。 有人可以在
上提出更好的方法吗- 是否有更好的方法将数据发送到 AWS lambda,例如 packing/zipping 数据并将其发送等?
- 我们可以使用任何替代逻辑而不是 'for loop' 来使用更改批量更新数据库吗?
注意:每个修改的行可能有不同的值。
你知道所有的时间都花在了什么地方吗?我对可能发生的事情有一个或两个猜测,但数据会有所帮助。
Redshift 是一个列式数据库,专为批量上传数据而不是逐行更新而设计。它还专为大量数据(100GB 及以上)而设计。这看起来不像是匹配的用例,但您没有提供足够的信息来确定。 Redshift 也未针对将数据从 SQL 移动到计算节点进行优化,因此如果您通过 SQL 文字加载数据,那么这不会很快。
如果您确实有大量数据,您需要在加载到 redshift 之前捆绑足够多的记录 (100MB+),并通过 S3 执行此操作。这意味着数据将等待一段时间才能在 Redshift 中可用。如果这不能满足您的需求,那么您可能没有挑选到合适的服务。在此模型中,您的 Lambda 会将记录合并到大型 S3 文件中。这些将被复制到 Redshift 和间隔中。这基本上就是 Kinesis Firehose 所做的,因此您可能想要查看此 AWS 服务。
Redshift 针对大量读取和少量大量写入进行了优化。如果您需要与读取数量相同的(小)写入,您可能需要一个事务数据库。如果您想继续使用 Postgresql 风格的界面,那么可以选择 RDS 中的 Postgresql。