【问题标题】:How to keep BigQuery schema in sync with code如何使 BigQuery 架构与代码保持同步
【发布时间】:2021-01-10 14:54:25
【问题描述】:

我正在开发各种直接与 BigQuery 对话的服务,方法是将行流式传输到数据库中。现在我正在直接从 Google 云用户界面更新架构,这会导致您可以想象由于健忘而出现的问题!

我想了解如何最好地保持代码和模式与仍在快速发展的服务和模式保持一致。

我目前的想法是:

  • 使用 Terraform 之类的东西,但我不确定它如何在需要更新或迁移的实时表上工作
  • 向服务中添加代码以检查/设置架构,如果不使流程自动化,这至少会引发错误

提前致谢!


编辑:

根据 cmets 的要求给出更清晰的说明;我们正在使用云运行的微服务将行流式传输到 bigquery,这些服务是用 python/node 编写的。他们的主要目标是对数据进行一些轻度转换并存储在 BQ 中。

不太确定还要添加什么,我的理想情况是我们在代码中有一些东西也定义或至少检查架构,以保持代码和数据库同步。

【问题讨论】:

  • 这可能会有所帮助:stackoverflow.com/questions/50813574/…
  • @dendog,实际上 Bigquery 正在利用各种 APIs and Libraries,这可能会解决很多问题,甚至简化的 bq command-line 工具可以成为完成几乎所有 Bigquery 管理操作的良好起点。您能否详细说明最初的任务,以获取有关功能预期的更多详细信息?

标签: database google-cloud-platform google-bigquery terraform infrastructure-as-code


【解决方案1】:

与任何数据库一样,您必须遵循一些规则或最佳实践来避免一些错误和冲突。例如,您必须避免手动更新架构,您可以选择始终使用代码进行更新(这更好,因为您可以根据您的 git 历史记录来跟踪架构更改)。

然后您可以有一个辅助进程来检查架构并使用较新的更改对其进行更新。或者在启动时执行此操作(仅当您不在无服务器中并且应用启动持续时间不是您关心的问题时)。

Terraform 非常适合部署基础架构,但更仅限于更新/修补现有组件。不推荐。

【讨论】:

  • 这个答案太高了,无法提供任何帮助。
  • 一切都取决于您在寻找什么。你能更准确地说出你想知道什么吗?
  • 实际上我正在寻找的是一个“精确”的答案:) 我已经概述了这些选项并且你重新迭代了它们,但我真的想要一个带有明确示例的适当解决方案。跨度>
  • 太难了。取决于你的工作量、你的背景、要求、你的语言......准确地说,我也可以
  • :) :) :) 我不是 Google 员工,也不是支持人员,我是一名拥有 15 年以上经验的 IT 工程师。随便骂我吧,我是来帮你的。我看到了不同的案例,可以以不同方式驱动你的约束。通用解决方案是无用的,上下文很重要!您有很多库/框架已经尝试帮助您进行模式管理(使用 MySQL 或 PostgreSQL);这个库是固执己见的,你可以从他们那里得到灵感,找到最适合你的方式。或添加详细信息!
猜你喜欢
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-06
  • 2015-06-30
  • 2014-03-21
  • 1970-01-01
  • 2016-10-21
  • 2015-01-12
相关资源
最近更新 更多