代码库大小概览

本文档可帮助您了解代码库大小如何影响 SQL 工作流开发和 Dataform 编译资源用量,以及如何估算代码库的编译资源用量。

Dataform 中的代码库大小简介

代码库的大小会影响 Dataform 中以下方面的开发:

协作
多个协作者共同处理大型代码库时,可能会产生过多拉取请求,从而增加合并冲突的风险。
代码库可读性
在单个代码库中构成 SQL 工作流的文件数量过多可能会导致难以浏览代码库。
开发流程
单个代码库中大型 SQL 工作流的某些部分可能需要自定义权限或进程(例如调度),这些权限或进程不同于应用于 SQL 工作流其余部分的权限和进程。代码库大小较大,因此很难根据 SQL 工作流的特定领域量身定制开发流程。
工作流编译
Dataform 会对编译资源实施用量限制。大型代码库可能会导致超出这些限制,从而导致编译失败。
工作流执行
在执行期间,Dataform 会在您的工作区中执行代码库代码,并将资源部署到 BigQuery。代码库越大,Dataform 执行它所需的时间就越长。

如果代码库的大小对您在 Dataform 中的开发产生负面影响,您可以将代码库拆分为多个较小的代码库。

关于代码库编译资源限制

在开发期间,Dataform 会编译工作区中的所有代码库代码,以生成代码库中 SQL 工作流的表示法,称为编译结果。Dataform 会对编译资源强制执行用量限制。

您的代码库可能会因以下原因而超出使用量上限:

  • 代码库代码中存在无限循环 bug。
  • 代码库代码中存在内存泄露 bug。
  • 代码库大小较大,大约超过 1, 000 个 SQL 工作流操作。

如需详细了解编译资源的使用限制,请参阅 Dataform 编译资源限制

估算代码库的编译资源用量

您可以估算代码库的以下编译资源的使用情况:

  • CPU 时间使用情况
  • 在您的代码库中定义的生成的操作图的序列化数据总大小上限

如需大致估算代码库编译的当前编译 CPU 时间用量,您可以在本地 Linux 或 macOS 机器上对 Dataform SQL 工作流的编译进行计时。

  • 如需对 SQL 工作流的编译时间进行计时,请在代码库中按照以下格式执行 Dataform CLI dataform compile 命令:
time dataform compile

以下代码示例展示了执行 time dataform compile 命令的结果:

real    0m3.480s
user    0m1.828s
sys     0m0.260s

您可以将 real 结果视为代码库编译所用 CPU 时间的粗略指标。

如需大致了解在代码库中生成的操作图的总大小,您可以将图的输出写入 JSON 文件。您可以将未压缩 JSON 文件的大小视为图表总大小的粗略指标。

  • 如需将 SQL 工作流程的已编译图表的输出写入 JSON 文件,请在代码库中执行以下 Dataform CLI 命令:
dataform compile --json > graph.json

后续步骤