Redshift 中的增量负载

Posted

技术标签:

【中文标题】Redshift 中的增量负载【英文标题】:Incremental Load in Redshift 【发布时间】:2014-12-14 14:11:51 【问题描述】:

我们目前正致力于将数据加载到 Redshift。我们这里有不同的场景。如果 OLTP 数据库是驻留在本地的 SQL Server,那么我们可以考虑使用 Attunity 之类的工具来帮助通过 S3 将数据加载到 Redshift。 Attunity 在 CDC 中很智能,可以识别读取事务日志的更改,并可以相应地将更改应用于目标。但是这种工具在ETL​​过程中应用转换逻辑的能力很差。 Attunity 不是 SSIS 或 ODI 的替代品,但擅长从各种来源提取和加载数据。因此,为了进行转换,我们需要一个合适的 ETL 工具。我们可以使用 Attunity 在 Redshift 内的暂存区加载数据,并且从暂存区我们可以使用另一个 ETL 工具或使用触发器将数据加载到目标表。由于 Redshift 不支持触​​发器,那么该 ETL 工具可能是什么?除了 AWS Data Pipeline 之外,我们没有在这里找到任何其他东西。但是使用两个工具:Attunity 和 AWS Data Pipeline 可能会变得昂贵。还有其他替代方法吗?我们认为 Data Pipeline 无法连接到本地 SQL Server。它仅适用于亚马逊生态系统。

现在让我们考虑一下我们的本地 SQL Server 现在部署在 Amazon RDS 中。那么情况可能会变得不同。我们仍然可以遵循上述相同的 ETL 流程:使用 Attunity 和 AWS Data Pipeline 两个工具。但是这一次应该更容易只使用一个工具:AWS Data Pipeline。现在 AWS Data Pipeline 是否足以处理所有场景?我们没有发现它可以读取事务日志。但是我们应该能够为增量负载应用其他方法。一种非常常见的方法是考虑每个源表的最后修改日期列。然后我们可以识别 RDS Sql Server 表中的行,这些行是从上次加载时间修改的。但是,我们不能直接将更改后的数据从 RDS 带到 Redshift。我们将不得不使用 S3 或 DynamoDB。我们可以让 AWS Data Pipeline 使用 S3 作为路由。又好像头疼了。也许还有其他更简单的方法。再说一次,AWS Data Pipeline 在竞争激烈的市场中是相当新的。此工具的一个很大限制是无法从 AWS 之外的不同来源(例如 Salesforce、Oracle 等)加载数据。是否有任何其他易于使用的工具可以在 AWS 生态系统中完美运行,没有任何困难并且成本最低?

【问题讨论】:

如果您可以将问题简化为特定主题(例如,如何从 RDS MS-SQL 到 Redshfit 进行增量加载),*** 社区可能会更能帮助您提供一些答案/建议. 一个潜在的工具:bryte.com.au/solutions/amazon-redshift-integration 【参考方案1】:

我会依靠 Attunity 将您的 OLTP 数据带入暂存区域,因为它非常擅长管理管道的这一部分(尽管您必须使用 repctl 构建大量自己的监控)并且可以相当解决传统上构建起来非常昂贵的这部分 ETL 具有成本效益。 Pentaho DI 作为 ETL 工具运行 ETL 过程的程序组件是一个不错的选择,因为您可以构建(尽管它有一些内置)“触发器”来监视数据库表、文件系统、ftp 站点、队列等。 . 并让它们运行几乎任何你想要的过程。有一个不错的社区版,其中包含大部分细节,购买 EE 版对于支持和调度程序来说是物有所值的。

【讨论】:

【参考方案2】:

“AWS 数据管道可能会变得昂贵” 这项亚马逊服务是免费的。

您可以使用Amazon Workflow Service 来安排您的 ETL 转换步骤。

【讨论】:

以上是关于Redshift 中的增量负载的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 sql server 增量上传到 Amazon Redshift [关闭]

Redshift:在列表中查找 MAX 忽略非增量数字

将有效负载数据从 dynamodb 复制到 redshift

如何将 CDC 加载到 Redshift 数据库中?

将 bigquery 数据移至 Redshift

从 db 中检索 Redshift 集群指标