【问题标题】:ETL from multiple MySQL databases来自多个 MySQL 数据库的 ETL
【发布时间】:2018-06-26 14:13:47
【问题描述】:

我有一个系统,它从具有不同模式的多个 MySQL 数据库中提取数据,并执行许多查询(使用连接)并将输出加载到另一个 MySQL 数据库。

这些查询曾经只是一个快速修复,但它们已经增长到超过 10000 行,从而阻塞了源数据库。

我正在通过分析 SQL 查询来设计一个高效的 ETL 管道,但是否有任何临时修复方法,例如可以分析查询并减少达到所需架构的步骤数的工具?

任何帮助都会挽救生命:)

【问题讨论】:

  • 对于任何复杂的 ETL,我更喜欢同时使用 SQL 和一些“真正的”编程语言(例如 Perl)。在它们之间找到最佳平衡很棘手,但通常是值得的。 SQL 对于字符串操作来说很麻烦,另一种语言有很多正则表达式的能力。 SQL 对于在整个表中进行更改是干净的;另一种语言有点乏味。坦率地说,我不会相信任何工具都能拥有您似乎需要的所有技术。
  • 非常感谢您的回复。我同意,我正在探索各种实时 ETL 产品,但我仍在努力寻找暂时修复它的方法。
  • 对于 10K 行代码没有“临时”修复。
  • 哈哈,不能再同意了。它仍然值得一试:)
  • 您可以查看 Kafka Streams kafka.apache.org/documentation/streams(无论如何您确实标记了问题)或 KSQL:confluent.io/product/ksql

标签: mysql bigdata amazon-redshift etl apache-kafka-streams


【解决方案1】:

与其对许多 MySQL 数据库(针对写入进行了优化)执行查询,不如将所有查询移至 Redshift 数据库(针对读取进行了优化)。

但要做到这一点,您需要数据。查看将 ALL 数据克隆到 Redshift 的 ETL 服务。我们使用 Stitch Data,但该领域有很多玩家。您可以设置多个集成,这样每个 MySQL 数据库都将数据泵入同一个 Redshift 数据库(我建议在唯一命名的模式下设置每个)。

数据全部加载后,您可以在 AWS Data Pipelines 中运行各种查询来创建派生表。每个查询都可以是每个自己的作业,这样您就可以在每个查询的基础上进行监控和修改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-07
    • 2012-07-16
    • 1970-01-01
    • 2016-04-29
    • 2011-04-28
    • 2015-05-26
    • 1970-01-01
    相关资源
    最近更新 更多