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个部分 -
我应该使用Cloud SQL存储数据,然后将其移至BigQuery或更改基本设计本身,并使用BigQuery初始存储数据吗?BigQuery是否适合用于常规,低延迟的OLTP工作负载?(我不这么认为 - 我的假设是正确的吗?)
将Cloud SQL数据加载到BigQuery中的推荐/最佳实践是什么?这种集成是否接近实时?
Cloud Dataflow是一个不错的选择吗?如果我将Cloud SQL连接到Cloud DataFlow并进一步连接到BigQuery - 它会起作用吗?或者有没有其他方法可以实现这一目标更好(如问题2中所述)?
Fel*_*ffa 10
看看WePay如何做到这一点:
MySQL到GCS操作符对MySQL表执行SELECT查询.SELECT拉取所有大于(或等于)最后一个高水印的数据.高水位线是表的主键(如果表是仅附加的),或者是修改时间戳列(如果表接收更新).同样,SELECT语句也会返回一些时间(或行)以捕获上一次查询中可能丢弃的行(由于上面提到的问题).
通过Airflow,他们设法每15分钟将BigQuery与MySQL数据库保持同步.
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小时。
| 归档时间: |
|
| 查看次数: |
3882 次 |
| 最近记录: |