AWS Glue 从 RDS 同步数据(需要从所有模式同步 4 table)到 S3(apache parque 格式)

AWS Glue sync data from RDS (need to sync 4 table from all schema) to S3 (apache parque format)

我们正在使用 Postgres RDS 实例(db.t3.2xlarge,数据量约为 2TB)。我们有一个多租户应用程序,因此对于所有注册我们产品的组织,我们正在创建一个单独的模式来复制我们的数据模型。现在我们的一些模式(大约 5 到 10 个模式)包含几个大 tables(大约 5 到 7 个大 tables,每个包含 10 到 2 亿行)。对于 UI,我们需要显示一些静态数据和图表,并计算我们需要在大 table 上执行连接的静态数据和图表数据,这会减慢我们整个数据库服务器的速度。有时我们需要在夜间进行此类查询,这样用户就不会遇到任何性能问题。因此,作为一个解决方案,我们计划在 S3 中创建一个数据湖,以便我们可以将所有分析负载从 RDBMS 转移到 OLAP 解决方案。

作为第一步,我们需要将数据从 RDS 传输到 S3,并保持两个数据源的同步。考虑到以下要求,您能否建议我们选择哪种工具更好:

  1. 我们需要每小时更新一次最近 3 天的数据。我们希望不断更新最近的数据,因为在 3 天的时间内 window,它可能会发生变化。 3 天后,我们可以将数据视为“静止”数据,它可以在数据湖中静止不动,无需任何未来修改。
  2. 我们目前使用的是多租户系统,我们有大约 350 个模式,但随着越来越多的组织注册我们的产品,它将会增加。
  3. 我们计划进行 ETL,因此在转换中我们计划加入所有 table 并创建一个非规范化 table 并将数据以 apache parque 格式存储在 S3 中。这样我们就可以使用 Redshift Spectrum、EMR 或其他工具对该 table 执行分析查询。

我最近才发现 AWS 数据湖,也是基于我的研究(希望能帮助您找到最佳解决方案)。

AWS Athena 可以 partition 数据,您可能希望根据租户 ID(客户 ID)对数据进行分区。

AWS Glue 有爬虫:

Crawlers can run periodically to detect the availability of new data as well as changes to existing data, including table definition changes.