使用发布/订阅和云功能将数据从网站发送到BigQuery

时间:2019-12-10 16:04:07

标签: google-bigquery google-cloud-functions google-cloud-dataflow google-cloud-pubsub

这就是我要完成的事情

  1. 访问者登陆我的网站
  2. Javascript收集一些信息并发送匹配信息
  3. 处理匹配并将其插入BigQuery

这就是我计划解决的方式

  1. 将匹配发送到Cloud Functions HTTP触发器(使用Ajax)
  2. Cloud Functions将消息发送到Pub / Sub
  3. 发布/订阅使用发布/订阅触发器将数据发送到另一个Cloud Function
  4. 第二个Cloud Function将匹配结果处理到Biguery行中,并将其插入BigQuery中

有没有更简单的方法来解决这个问题?

其他一些需要考虑的细节

  • 每天大约有100万次点击
  • 不想使用Cloud Dataflow,因为它会增加成本
  • 无法(可能)跳过发布/订阅,因为有人离开网站时会发送某些匹配,并且请求可能没有足够的时间来处理所有内容。

1 个答案:

答案 0 :(得分:0)

您可以执行Big Query流式传输,这种方式比较便宜,并且可以避免达到Load Jobs配额(每天每张表1000个)[1]。

另一个选择是,如果您不介意数据花费大量时间加载,则可以将所有信息存储在Cloud Storage存储桶中,然后通过传输加载所有数据[2]。您可以对其进行编程,以便每天上传数据。该解决方案集中在批处理环境中,在该环境中,您将所有信息存储在一侧,然后将其传输到最终目的地。如果您只想流式传输您提到的解决方案就可以。

由您自行选择更适合您的特定用法的选项。

[1] https://cloud.google.com/bigquery/quotas#load_jobs [2] https://cloud.google.com/bigquery-transfer/docs/cloud-storage-transfer