本文档可帮助您了解代码库大小对 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
后续步骤
- 如需详细了解 Dataform 编译资源限制,请参阅 Dataform 编译资源限制。
- 如需详细了解如何在 Dataform 中拆分代码库,请参阅拆分代码库。