如何将Google Cloud SQL与Google Big Query集成

Dhr*_*uri 4 google-cloud-sql google-bigquery google-cloud-platform google-cloud-dataflow

我正在设计一个解决方案,其中Google Cloud SQL将用于存储来自应用程序常规功能的所有数据(OLTP数据的种类).预计数据会随着时间的推移而增长到相当大的规模.数据本身具有关系性,因此我们选择了Cloud SQL而不是Cloud Datastore.

这些数据需要被提供给Big Query进行分析,这需要接近实时分析(作为最佳情况),尽管实际上可以预期一些滞后.但我正在尝试设计一种解决方案,将这种滞后降低到最低限度.

我的问题有3个部分 -

  1. 我应该使用Cloud SQL存储数据,然后将其移至BigQuery或更改基本设计本身,并使用BigQuery初始存储数据吗?BigQuery是否适合用于常规,低延迟的OLTP工作负载?(我不这么认为 - 我的假设是正确的吗?)

  2. 将Cloud SQL数据加载到BigQuery中的推荐/最佳实践是什么?这种集成是否接近实时?

  3. Cloud Dataflow是一个不错的选择吗?如果我将Cloud SQL连接到Cloud DataFlow并进一步连接到BigQuery - 它会起作用吗?或者有没有其他方法可以实现这一目标更好(如问题2中所述)?

Fel*_*ffa 10

看看WePay如何做到这一点:

MySQL到GCS操作符对MySQL表执行SELECT查询.SELECT拉取所有大于(或等于)最后一个高水印的数据.高水位线是表的主键(如果表是仅附加的),或者是修改时间戳列(如果表接收更新).同样,SELECT语句也会返回一些时间(或行)以捕获上一次查询中可能丢弃的行(由于上面提到的问题).

通过Airflow,他们设法每15分钟将BigQuery与MySQL数据库保持同步.


Jia*_* He 5

BigQuery支持Cloud SQL联合查询,可让您直接从BigQuery查询Cloud SQL数据库。为了使Cloud SQL表与BigQuery保持同步,您可以编写带有以下查询的简单脚本,以每小时同步两个表。

INSERT
   demo.customers (column1)
SELECT
   *
FROM
   EXTERNAL_QUERY(
      "project.us.connection",
      "SELECT column1 FROM mysql_table WHERE timestamp > ${timestamp};");
Run Code Online (Sandbox Code Playgroud)

只需记住将$ {timestamp}替换为当前时间戳-1小时。