mysql - 寻找更好的架构来从生产数据库生成报告

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

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

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

enter image description here

这种架构有一些缺点:

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

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

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

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

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

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

最佳答案

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

诗。我不为 Matillion 工作,也不会以任何方式从推荐 Matillion 中受益。

关于mysql - 寻找更好的架构来从生产数据库生成报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52792565/

相关文章:

amazon-web-services - 创建 ECS 集群时未创建 EC2 实例

java - 读取一个巨大的固定宽度文件

mysql - mysql中8位数字转换为日期类型

mysql select multiple and join 查询

node.js - DocumentDB连接问题

sql-server - 无法使用 SSIS 将长文本从 Excel 导入 SQL Server

scala - 如何从 Scala 的 Glue Job 中的 S3 文件创建动态数据框?

php - AJAX 响应和 PHP 循环

php - 用于 LAMP 堆栈上 MySQL 数据库的 NoSQL 副本的 MongoDB 与 CouchDB

java - 如何减少代码中的 Lambda 冷启动时间?