我需要针对我正在研究的用例之一提供一些建议。
使用案例:
我们在 Cloud SQL 中拥有大约 5-10 个表的数据,其中一些被视为查找表,另一些则被视为事务性表。我们需要将其发送到 BigQuery,以生成 3-4 个表(扁平化、嵌套或非规范化),这些表将用于 Data Studio、Looker 等中的报告。
数据应增量处理,Cloud SQL 中的更改可能每 5 分钟发生一次,这意味着 BigQuery 报告应近乎实时地提供数据。如果可能的话,我们还应该维护数据更改的历史记录。
解决方案:
我们在 BigQuery 中保留了 3 层,因此来自 Cloud SQL 的数据来到第一层,然后在展平后我们将其保存到第二层(维护历史记录),然后对其进行处理以插入到第三层(报告)。The problem这种方法的缺点是它是为日常处理而开发的,无法帮助处理 Cloud SQL 中每 5 分钟的数据更改。
欢迎任何建议。
Note:-我们需要使用数据流、VM 或其他方式来进行一些逻辑处理,这意味着我们不能仅使用计划查询,因为我们不能使用查询来处理所有逻辑,但是可以使用视图和代码的混合。
这比您想象的更简单:BigQuery 可以直接从 Cloud SQL 中读取数据。
Docs:
- https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries
更多阅读:
- https://medium.com/google-cloud/loading-mysql-backup-files-into-bigquery-straight-from-cloud-sql-d40a98281229 https://medium.com/google-cloud/loading-mysql-backup-files-into-bigquery-straight-from-cloud-sql-d40a98281229
因此,您所需要做的就是编写一个 MySQL 查询来查找过去 5 分钟内的所有更改。您可以从 BigQuery 中运行此查询 - 并通过一个查询将所有数据具体化到 BigQuery 中,例如:
INSERT INTO `dataset.table`
SELECT *
FROM EXTERNAL_QUERY(
'your.CloudSql.database'
, 'SELECT * FROM users')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)