使用DBT比使用存储过程方法好在哪里?



我已经使用stored procedure方法很长时间了。

作为销售报告生成的一部分,我在数据库中创建了stored proceduresjoin/union all多个表,并在需要时使用python调用它。

现在DBT是一个热门话题。

stored procedures迁移到DBT的优势是什么?是否有任何点迁移我的整个stored procedure堆栈从存储过程到DBT?

dbt的一些主要优点是:

  1. 集成版本控制(如git)
  2. 支持多种环境(dev和prod)
  3. 依赖管理和构建
  4. 使用简单的选择语法轻松地重建模型的子集
  5. 自动化测试
  6. 金贾的模板
  7. 可重用的,复杂的逻辑,如增量物化和快照
  8. 自动生成文档网站

更多信息在他们的文档和营销材料在他们的网站,getdbt.com

正如您所指出的,dbt在功能上类似于存储过程,只是有一些额外的东西。

为了拥有dbt、源代码控制等提供的功能,dbt存在于数据库之外。虽然您可能获得dbt的特性,但您也将失去存储过程的功能,例如,使用临时表、变量或创建参数化查询的能力。

您还将受到dbt使用视图来执行和管理查询的约束。这限制了数据库允许在视图中使用的语言特性,并且与使用过程相比,您没有那么多的选项来提高查询性能。

请记住,dbt中的一些功能在许多主要db中都可用:

  • 依赖管理-大多数数据库都有系统表,可以告诉您一个数据库对象如何引用另一个数据库对象。这些可以通过一种显示向前和向后依赖关系的方式进行查询。
  • 模板SQL -动态SQL。
  • 可重用逻辑-函数和视图。
  • 测试—这可以通过存储过程实现。sql server的tSQLt框架就是一个很好的例子。dbt中的测试是由dbt运行的查询。

最新更新