我们正在使用 Postgres RDS 实例(db.t3.2xlarge 大约 2TB 数据)。我们有一个多租户应用程序,因此对于注册我们产品的所有组织,我们正在创建一个单独的模式来复制我们的数据模型。现在我们的几个模式(大约 5 到 10 个模式)包含几个大表(大约 5 到 7 个大表,每个表包含 10 到 2 亿行)。对于 UI,我们需要显示一些静态数据和图形,并计算这些静态数据和图形数据,我们需要在大表上执行连接,这会减慢整个数据库服务器的速度。有时我们需要在夜间进行此类查询,以免用户遇到任何性能问题。因此,我们计划在 S3 中创建一个数据湖的解决方案,以便我们可以将所有分析负载从 RDBMS 转移到 OLAP 解决方案。
作为第一步,我们需要将数据从 RDS 传输到 S3,并保持同步两个数据源。考虑到以下要求,您能否建议我们选择哪种工具更好:
- 我们需要每小时更新最近 3 天的数据。我们希望不断更新最近的数据,因为在 3 天的时间窗口内,它可能会发生变化。3 天后,我们可以认为数据“处于静止状态”,它可以在数据湖中静止,无需任何未来修改。
- 我们目前正在使用多租户系统,我们有大约 350 个模式,但随着越来越多的组织注册我们的产品,它将会增加。
- 我们计划进行 ETL,因此在转换中,我们计划连接所有表并创建一个非规范化表,并将数据以 apache parque 格式存储在 S3 中。这样我们就可以使用 Redshift Spectrum、EMR 或其他工具对该表执行分析查询。