Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 如何最好地缓存bigquery表以快速查找单个行?_Google Cloud Platform_Google Cloud Firestore_Google Bigquery_Google Cloud Dataflow - Fatal编程技术网

Google cloud platform 如何最好地缓存bigquery表以快速查找单个行?

Google cloud platform 如何最好地缓存bigquery表以快速查找单个行?,google-cloud-platform,google-cloud-firestore,google-bigquery,google-cloud-dataflow,Google Cloud Platform,Google Cloud Firestore,Google Bigquery,Google Cloud Dataflow,我在bigquery中有一个原始数据表,它有数亿行。我每24小时运行一次定时查询,以生成一些聚合,这些聚合将生成一个3300万行(6gb)的表,但可能会缓慢增长到当前大小的两倍左右 我需要一种在单独的事件驱动管道中通过id快速访问该聚合表的方法,一次获取1行。i、 e.流程被通知某人A刚刚采取了一项行动,我们从聚合表中了解此人的历史记录吗 显然,bigquery是生成聚合表的正确工具,但不是快速查找的正确工具。所以我需要将它偏移到一个辅助数据存储,比如firestore。但这样做的最佳过程是什么

我在bigquery中有一个原始数据表,它有数亿行。我每24小时运行一次定时查询,以生成一些聚合,这些聚合将生成一个3300万行(6gb)的表,但可能会缓慢增长到当前大小的两倍左右

我需要一种在单独的事件驱动管道中通过id快速访问该聚合表的方法,一次获取1行。i、 e.流程被通知某人A刚刚采取了一项行动,我们从聚合表中了解此人的历史记录吗

显然,bigquery是生成聚合表的正确工具,但不是快速查找的正确工具。所以我需要将它偏移到一个辅助数据存储,比如firestore。但这样做的最佳过程是什么

我可以设想两种策略:

1) 计划将agg表转储到地面军事系统。启动数据流作业,将gcs转储的内容流式传输到pubsub。创建一个无服务器函数来侦听pubsub主题并将行插入firestore

2) 计算引擎上的一个长时间运行的脚本,它直接从BQ流式传输表并运行INSERT。(似乎比策略1慢)

3) 计划将agg表转储到地面军事系统。设置格式,使其可以通过
gcloud beta firestore导入gs://[BUCKET\u NAME]/[EXPORT\u PREFIX]/

4) 可能是某种直接对bigquery表执行查找的数据流作业?以前没有使用过这种方法。不知道成本/性能有多高

5) 我没有考虑过的其他选择

理想的解决方案是允许我在毫秒内快速访问agg行,这将允许我将数据附加到实时事件中


在我应该采用的策略中,是否有一个明显的最佳赢家?

记住,您也可以通过id对表进行集群—使您的查找查询更快、数据消耗更少。不过,它们仍然需要一秒钟以上的时间才能运行

您还可以为次秒结果设置从BigQuery到CloudSQL的导出:

请记住,如果您希望BigQuery成为“热门数据”的真实来源,现在BigQuery可以直接从CloudSQL中读取:


这是可靠的。非常感谢。我有点惊讶地计算了一下,得知将我的整个agg表重写到firestore将花费大约72美元/次同步。(每100000份文件0.18美元,约4000万份文件)。将我的每个agg行作为文档写入云存储是否是一种可能的替代方案?这真的是对存储的糟糕使用吗?我不需要查询能力。更多的只是键/值存储。在尝试了几种方法之后,我最终回到了这个解决方案。谢谢我首先在我的BQ真值表源和我的云postgres之间运行一个查询,以确定哪些行是不同的。然后我导出到GCS,然后从GCS导出到云函数(通过数据流通过pubsub),以在云SQL中执行实际的CRUD。我将以上所有内容包装到一个bash脚本中,通过cron作业运行。它快速、廉价,并使我的云SQL与bigquery保持同步。谢谢菲利佩!很高兴听到它有用!