0

我们的团队正在尝试在 Redshift 中创建一个 ETL,作为我们用于某些报告的数据仓库。我们正在使用 Microsoft SQL Server,并将我们的数据库划分为 40 多个数据源。我们正在寻找一种能够将来自所有这些相同数据源的数据通过管道传输到 1 个 Redshift DB 的方法。

查看 AWS Glue 似乎无法实现这一目标。由于他们打开了工作脚本供开发人员编辑,我想知道是否有其他人有过循环多个数据库并将同一个表传输到单个数据仓库的经验。我们试图阻止自己为每个数据库创建一个作业......除非我们可以以编程方式循环并为每个数据库创建多个作业。

我们还研究了 DMS,它有助于将架构和当前数据转移到 redshift,但它似乎也不适用于多分区数据源问题。

4

2 回答 2

3

这听起来像是 Matillion ETL for Redshift 的一个很好的用例。

(完全披露:我是 Redshift 的 Matillion ETL 的产品经理)

Matillion 是一个 ELT 工具 - 它将从您的(众多)SQL 服务器数据库中提取数据并通过有效的 Redshift COPY 将它们加载到一些临时表中(可以以通常的方式存储在 Redshift 中,或者可以保存在 S3 上并通过 Spectrum 从 Redshift 访问)。从那里您可以将转换作业添加到清理/过滤/加入(以及更多!)为您的报告用户的可查询星型模式。

如果您的 40 多个数据库上的表模式非常相似(您的问题没有说明您如何将数据分解为这些服务器 - 水平或垂直),您可以参数化作业中的连接详细信息并使用迭代来运行它们每个源数据库,可以是串行的,也可以是一定程度的并行。

将转换下推到 Redshift 效果很好,因为所有这些转换查询都可以利用大规模并行、可扩展的计算架构的强大功能。工作负载管理配置可用于确保 ETL 和用户查询可以同时发生。

此外,您可能希望在 Redshift 集群中混搭其他数据源,Matillion 支持更多数据源 - 请参阅https://www.matillion.com/etl-for-redshift/integrations/

于 2018-01-19T11:50:01.040 回答
0

您可以为此使用 AWS DMS。

脚步:

  1. 设置和配置 DMS 实例
  2. 为红移设置目标端点
  3. 为每个 sql server 实例设置源端点,请参阅 https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html
  4. 为每个 sql server 源设置一个任务,您可以指定要复制/同步的表,您可以使用转换来指定要写入的 redshift 上的哪些模式名称。

然后,您将在 redshift 上拥有相同模式中的所有数据。

如果你想一起查询所有这些,你可以通过在 redsshift 中运行一些转换代码来组合和创建新表来做到这一点。或者您可以使用视图。

于 2018-01-18T08:32:15.113 回答