代码库大小概览

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

Dataform 中的代码库大小简介

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

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

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

代码库编译资源限制简介

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

您的代码库可能会超出用量限额,原因如下:

  • 代码库代码中的无限循环 bug。
  • 代码库代码中存在的内存泄漏 bug。
  • 代码库规模较大,大约超过 1000 个 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

后续步骤