【问题标题】:Looking for a better architecture to generate reports from the production database寻找更好的架构来从生产数据库生成报告
【发布时间】:2019-03-18 10:54:49
【问题描述】:

在我工作的公司中,我必须做的工作之一是编写程序以使用存储在生产数据库中的数据生成业务报告(例如上个月访问我们网站的用户数量)。

我们使用 AWS lambda 函数和复杂的 MySQL 查询来生成报告(*.csv 文件)。

这种架构有一些缺点:

  1. MySQL 查询通常很复杂。我的意思是它们包含很多joins 和子查询,这使得代码难以理解和维护。

  2. 数据库架构更改后,某些查询可能无法运行。

  3. AWS lambda 函数的最大超时时间为 5 分钟。当数据量太大时,我们不得不将 1 个 lambda 函数拆分成多个 lambda 函数。

如何使用其他亚马逊网络服务来解决这些问题?

我已经尝试过 AWS Glue,但还没有找到一种简单的方法将复杂的 MySQL 查询转换为用于 AWS Glue 中的作业的 python 脚本。

Amazon Athena 只能处理存储在 S3 中的数据。它不能直接处理存储在 Amazon RDS 中的数据。

【问题讨论】:

  • 我认为这更像是一个 dba 问题
  • 使用 MySQL 存储过程而不是 AWS lambda 函数......但是你的问题是广泛的......
  • 虽然我现在无法提供解决方案,但请注意,截至 2018 年 10 月 10 日,AWS 已宣布 AWS Lambda 持续时间现已增加到 15 分钟的更新。 docs.aws.amazon.com/lambda/latest/dg/limits.html

标签: mysql amazon-web-services etl business-intelligence aws-glue


【解决方案1】:

我知道您在 1 年前就问过这个问题 - 一种更快的方法是:

  1. 确定您的 MySQL 表的刷新时间和策略,并使用该信息在 Matillion 中设置数据管道,以将这些数据增量传输到雪花/GCP/Redshift。

  2. 创建报告 SQL 的 Snowflake/GCP/Redshift 版本,然后针对这些表生成报告。

【讨论】:

    【解决方案2】:

    我们在我的公司中使用 Matillion(第三方软件)作为 ETL 工具,旨在与 AWS(或 Google)云一起使用。但这在很大程度上依赖于 AWS Redshift。如果您可以将数据移动到 Redshift 并从那里开始工作,那么 Matillion 对您来说可能是一个非常好的选择。在 Matillion 中,您可以设置完成所有工作的工作流,并在图表中将其可视化。缺点是Matillion有成本。但是由于您指的是您的公司,我认为您将能够投资于其他工具。我还将 Matillion 与 Lambda、S3、Redshift、Glue 等一起使用。由于您可以在 Matillion 中运行 Python 脚本,因此您可以根据需要组合它们。

    附言。我不为 Matillion 工作,也不会从推荐 Matillion 中受益。

    【讨论】:

      猜你喜欢
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      相关资源
      最近更新 更多