Bigquery 事件流和 table 创建

Bigquery event streaming and table creation

我们目前正在通过将文件上传到 google 云存储然后将这些文件插入 bigquery 来将事件保存到 bigquery。

我们在 cirka 300 个节点上有一个非常活跃的应用程序 运行,每天保存大约 10 亿个事件。

我们现在计划将其更改为使用 "new" 流 API。

我现在担心的是,如果 table 不存在,我们当前的解决方案会创建它,而流 API 则不是这种情况。 (我们的事件 table 在游戏 + 月份进行了分片,以减少我们必须查询的数据。)

我们如何以最好的方式解决这个问题? IE。有 +300 个节点将数据流式传输到 bigquery,并在需要时创建新的 tables!

提前致谢!

/冈纳埃克特拉普

从我们的经验谈起。我们创建了在部署时管理我们的 table 的脚本,而不是在日期更改时实时管理。此脚本被指示 create 每个分片 table 提前 1 年。

如果结构发生变化,我们可以执行 patch call for older tables, and for new tables we simply delete 并在它们为空时重新创建它们 tables。

当你有并行节点时,很难知道哪个节点充当主节点来创建 tables,因此为此我们使用了部署阶段,实际上我们触发了 table当我们开发 运行 部署时。

您可以提前预测游戏ID,并提前为它们创建table。 运行 创建一些 table 并批量更新的脚本比编写正确的同步方式从所有可用节点执行此操作要容易得多。如果您无法预测游戏 ID,那么您可以调用同步 API,它将在游戏 ID 可用时提前创建 tables。