BigQuery是否适合频繁更新部分数据



我在GCP上,我有一个用例,我想接收来自远程机器的大量事件流。为了组成一个最后的事件-我需要摄入和";"组合";类型X的事件,以及类型Y和Z的事件。

事件类型X架构:SrcPortProcessID

事件类型Y架构:目的端口ProcessID

事件类型Z架构:进程IDProcessName

我目前正在使用云SQL(PostgreSQL(来存储我的大部分关系数据。我想知道我是否应该在这个用例中使用BigQuery,因为我预计会发生大量此类事件,而且我可能有对这些数据进行分析的未来计划。

我还想知道如何对这些事件进行建模。我关心的是";JOIN";在这些事件之间;JOIN";ed事件将是:SrcPort、SrcProcessID、SrcProcessorName、DstPort、DstProcessID、DstPProcessName

当";最终事件";已完成,我想将其发布到PubSub。

我可以创建一个去规范化的表,只在事件发生时进行部分更新(BigQuery在更新性能方面做得怎么样?(,然后在完成后发布到pubsub。

或者,我可以将这些作为原始事件存储在单独的";表";,然后JOIN定期完成事件,然后发布到pubsub。

我不确定PostgreSQL在存储和处理大量事件方面有多好。

BigQuery吸引我的地方是轻松处理大容量的舒适性。

如果您在Postgres上已经有了这个功能,我建议您应该将BigQuery视为一个补充系统,用于存储重复的数据以进行分析。

BigQuery为您提供了降低成本和提高查询性能的不同方法:

  1. 阅读有关分区和集群的内容,记住这一点;扫描";只有您感兴趣执行";事件完成">
  2. 您可以使用计划查询定期运行MERGE语句,以实现表的具体化(您可以根据需要随时进行计划(
  3. 您可以在某些情况下使用"物化视图">

BigQuery可以很好地处理批量导入和频繁插入(如http日志记录(。每隔几秒钟插入约100或约1000行的段的bigquery效果良好。

您创建最终视图的想法肯定会有所帮助。在BigQuery中存储数据比处理数据便宜,所以保留一组原始数据不会有什么坏处。

如何建模或构建事件取决于您。

相关内容

  • 没有找到相关文章

最新更新