【发布时间】: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 进行增量加载),StackOverflow 社区可能会更能帮助您提供一些答案/建议.
标签: amazon-web-services amazon-s3 amazon-redshift amazon-data-pipeline attunity