Snowflake中的数据库更改检测过程

Posted

技术标签:

【中文标题】Snowflake中的数据库更改检测过程【英文标题】:Database change detection process in Snowflake 【发布时间】:2020-04-27 12:17:32 【问题描述】:

我正在尝试设计一个流程来捕获数据库更改检测,然后将其推送到 GitHub。尝试探索免费选项或编写自定义代码。我想到的几个选项:

    创建一个层次文件夹结构,如 Account-->Db-->schema-->table、views、sp 等(不同的文件夹)被 GitHub 跟踪并在每次我们要推送代码时导出所有对象到 GitHub。 GitHub 将跟踪所有更改(任何新对象或更新)。还没有考虑删除。

    在 Snowflake 中编写代码以检测对象的更改(使用完全外连接),然后将数据写入 Snowflake 中包含最新 DDL 的表中。

任何人都可以帮助我解决任何人用来在 Snowflake 中实现数据库更改检测的类似功能。我见过 DBT、Sqitch 和 snowchange,但它们不适合/不适合我想要做的事情。

任何帮助将不胜感激。

干杯

【问题讨论】:

不清楚您所说的“捕获数据库更改检测”是什么意思。您是指更改 DDL(结构和对象)还是更改数据或两者兼而有之? 仅更改 DDL(结构和对象)。希望这会有所帮助 【参考方案1】:

也许您可以考虑使用 terraform 及其提供者 https://github.com/chanzuckerberg/terraform-provider-snowflake。 Terraform 是一种安全高效地构建、更改和版本控制基础设施的工具,通过 Snowflake 提供程序,您可以创建 DB、表、模式、管道,在 Github 中对其进行版本控制,并将更改部署到 Snowflake。我们计划将它用于您提到的内容。无聊的地方是,一开始我们要导入很多已有的资源,但是做完之后,Github里什么都有了,我们可以引入CI/CD,也就是说我们先在Github中通过一个拉取请求,然后在审核和批准后,在合并到主控时将更改传播到 Snowflake,它也适用于删除资源。

【讨论】:

感谢您的意见。我查看了链接,但不太确定我们是否可以实现它。

以上是关于Snowflake中的数据库更改检测过程的主要内容,如果未能解决你的问题,请参考以下文章

检查雪花中的表架构更改

在存储过程中创建 Snowflake 仓库会更改当前仓库

Snowflake - 读取实现的架构

Snowflake 数据仓库中的模式版本控制

为啥像 Snowflake 和 Redshift 这样的列式数据库不能更改列顺序?

用于更改跟踪表的 Snowflake snowsql 合并语句 - 当目标/源不匹配时,不允许