【发布时间】:2018-07-16 18:11:19
【问题描述】:
我们正在处理一个需求,我们希望从一个 redshift 集群“逐行”获取增量数据,根据需求对其进行处理并将其插入另一个 redshift 集群。我们希望做到“row wise” 而不是“batch operation”。为此,我们正在编写一个通用服务,它将从 Redshift -> Redshift 进行行处理。所以,它就像 Redshift -> Service -> Redshift。 对于插入数据,我们将使用插入查询来插入。我们将在特定批次之后提交,而不是按行进行性能。 但我有点担心多个插入查询的性能。或者有没有其他可用的工具可以做到这一点。有许多可用的 ETL 工具,但都进行批处理。我们希望逐行处理。有人可以建议吗?
【问题讨论】:
-
你不想这样做,除非音量非常非常低。性能会很差。必须有更好的方法从其他来源获取数据
-
你说的每批有多少数据?使用 Redshift,您希望进行批量加载而不是插入。考虑让您的服务将行作为多个文件写入 S3,然后进行批量加载(意味着每次数万到一百万行)。如果您一次只加载一千行或更少的行,您将遇到 Redshift 的问题。插入只是一个坏主意,因为这会阻止 Redshift 优化其表和列。
-
在不知道处理行的要求的情况下,我无法说出一次执行这一行的想法,但是如果我们假设必须一次完成一行,那么我们不会'不想使用 Redshift。要么将数据存储在 OLTP 数据库中,在那里处理行,然后将其加载到 Redshift,要么将 Redshift 批量处理到 OLTP,在那里处理,然后批量返回到 Redshift。
标签: database amazon-web-services amazon-redshift