AWS Glue:SQL Server多分区数据库ETL进入Redshift

时间:2018-01-17 17:26:32

标签: sql-server amazon-redshift etl database-partitioning aws-glue

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

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

我们也看过DMS,这有助于将架构和当前数据转换为红移,但它似乎也不适用于多分区数据源问题

2 个答案:

答案 0 :(得分:3)

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

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

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

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

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

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

答案 1 :(得分:0)

您可以使用AWS DMS进行此操作。

步骤:

  1. 设置并配置DMS实例
  2. 为redshift设置目标端点
  3. 为每个sql server实例设置源端点请参阅 https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html
  4. 为每个sql server源设置一个任务,可以指定表 要复制/同步,您可以使用转换来指定 您要写入的redshift上的模式名称。
  5. 然后,您将在redshift上将所有数据放在相同的模式中。

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