当前位置: 首页 > news >正文

搭建基于 Snowflake 的 CI/CD 最佳实践!

Snowflake 提供了可扩展的计算和存储资源,和基于 SQL 的界面 Snowsight,方便用户进行数据操作和分析。然而,如果用户想将自己的 CI/CD 流程与 Snowflake 集成时,会发现一些不便之处(尤其相比其 SnowSight 优秀的查询能力)。

审核和发布流程

在 Snowflake 里,一个典型的更改工作流程如下:

  1. 数据工程师在 Jira 中创建 schema 变更工单。
  2. Snowflake 管理员审核该工单,然后使用 Snowsight 将更改应用到测试实例。
  3. 数据工程师确认更改,并回复工单请求管理员将更改应用到生产实例。
  4. Snowflake 管理员使用 Snowsight 将更改应用到生产环境。
  5. 数据工程师确认更改并关闭工单。

上述过程有多个来回,且容易出错。例如:如果管理员错误地先将更改应用到生产环境会怎样?

缺少自动化的 SQL 语法检查规则

现代的 CI 流水线需要配有自动审核规则。对于 Snowflake 来说,这尤为重要,因为删除一个列可能会破坏下游数据流水线。而 Snowflake 并不提供此类语法检查。

GitOps

Snowflake 最近宣布了 Git 集成。

其中包括 Git 集成(预览版),可以轻松地将应用程序代码与 git 和 git 工作流进行集成。用户可以在 Snowflake 内部直接查看、运行、编辑和协作存在于 Git 仓库中的内容。

如果是类似 Vercel 的体验就更好了,当变更脚本合并到分支时,将自动触发一个滚动发布流水线,并可选择批准流程。

Bytebase:生而解决挑战

为应对 CI/CD 的挑战,Snowflake 打造了 schemachange。

而另一个解决方案则是 Bytebase,详细对比可见 schemachange vs. Bytebase。

基于 Web 的审查和发布流程

Bytebase 提供了基于 web 端的审核和发布界面,这类似 Jira,只不过是专门针对进行数据库变更的。例如,分阶段发布可将变更从测试直接发布到生产实例。

file

记录了 schema 变更历史。

file

检测由意外变更引起的数据库结构漂移 (schema drift)。

file

file

SQL 审核 + API

Bytebase 提供了一系列可配置的 SQL 语法检查规则,以检测 Snowflake SQL 反模式。配置完成后,在审核过程中将自动进行 SQL 审核。此外,可以从你的 VCS CI 调用 Bytebase API。

file

直接在 GitHub PR 中进行检查

file

总结一下

Bytebase 将 DevOps 和类似 GitHub / GitLab 的体验带入了 Snowflake 世界,可以跟着手把手教程一起试试。


💡 更多资讯,请关注 Bytebase 公号:Bytebase

相关文章:

搭建基于 Snowflake 的 CI/CD 最佳实践!

Snowflake 提供了可扩展的计算和存储资源,和基于 SQL 的界面 Snowsight,方便用户进行数据操作和分析。然而,如果用户想将自己的 CI/CD 流程与 Snowflake 集成时,会发现一些不便之处(尤其相比其 SnowSight 优秀的查询能…...

数据结构(五)——树的基本概念

五、树 5.1 树的基本概念 5.1.1 树的定义 树是n(n>0)个结点的有限集合,结点数为0的树称为空树 非空树的特性 有且仅有一个根节点没有后继的结点称为“叶子结点”(或终端结点)有后继的结点称为“分支结点”(或非终端结点&a…...

2.28CACHE,虚拟存储器

主存储器,简称主存。CPU可以直接随机地对其进行访问,也可以和高速缓存器及辅助存储器交换数据。 2> 辅助存储器,简称辅存,不能与CPU直接相连,用来存放当前暂时不用的程序和数据 3> 高速缓冲存储器,位于主存和CPU之间,用来…...

深入理解栈和队列(一):栈

个人主页:17_Kevin-CSDN博客 专栏:《数据结构》 一、栈的概念 栈(Stack)是一种特殊的线性表,它遵循后进先出(Last-In-First-Out,LIFO)的原则。栈可以被看作是一个只能在一端进行操作…...

electron-builder 打包问题,下载慢解决方案

目录 问题说明设置下载源 ?解决方案思路下载Electron下载winCodeSign下载nsis下载nsis-resources 总结 问题说明 项目使用了Electron,在第一次打包时会遇见下载慢,导致打包进度几乎停滞不前,甚至可能直接报错 其实这是因为Electr…...

(简单成功)Mac:命令设置别名

案例:给"ls -l"命令,设置别名通过”ll“快速访问 1、在项目根目录底下查看有无.bash_profile文件,注意这个是个隐藏文件,需要使用ls -a命令查看: 没有.bash_profile新建一个文件, 在最后添加一行…...

Grok-1:参数量最大的开源大语言模型

Grok-1:参数量最大的开源大语言模型 项目简介 由马斯克领衔的大型模型企业 xAI 正式公布了一项重要动作:开源了一个拥有 3140 亿参数的混合专家模型(MoE)「Grok-1」,连同其模型权重和网络架构一并公开。 此举将 Gro…...

Python 自然语言处理库之stanza使用详解

概要 在自然语言处理(NLP)领域,Python Stanza 库是一个备受推崇的工具,它提供了强大的功能和易用的接口,帮助开发者处理文本数据、进行语言分析和构建NLP应用。本文将深入探讨 Stanza 库的特性、用法,并通过丰富的示例代码展示其在实际项目中的应用。 Stanza 简介 Stan…...

计算机网络:数据交换方式

计算机网络:数据交换方式 电路交换分组交换报文交换传输对比 本博客介绍计算机之间数据交换的三种方式,分别是电路交换、分组交换以及报文交换。 电路交换 我们首先来看电路交换,在电话问世后不久,人们就发现要让所有的电话机都…...

万用表革新升级,WT588F02BP-14S语音芯片助力智能测量新体验v

万能表功能: 万能表是一款集多功能于一体的电子测量工具,能够精准测量电压、电流、电阻等参数,广泛应用于电气、电子、通信等领域。其操作简便、测量准确,是工程师们进行电路调试、故障排查的得力助手,为提升工作效率…...

Day61:WEB攻防-PHP反序列化原生类TIPSCVE绕过漏洞属性类型特征

知识点: 1、PHP-反序列化-属性类型&显示特征 2、PHP-反序列化-CVE绕过&字符串逃逸 3、PHP-反序列化-原生类生成&利用&配合 补充:如果在 PHP 类中没有实现某个魔术方法,那么该魔术方法在相应的情况下不会被自动触发。PHP 的魔…...

【开源】SpringBoot框架开发不良邮件过滤系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统用户模块2.2 收件箱模块2.3 发件箱模块2.4 垃圾箱模块2.5 回收站模块2.6 邮箱过滤设置模块 三、实体类设计3.1 系统用户3.2 邮件3.3 其他实体 四、系统展示五、核心代码5.1 查询收件箱档案5.2 查询回收站档案5.3 新…...

详细教---用Django封装写好的模型

本次我们要用自己写好的热销词条爬虫代码来演示如何用Django把我们写好的模型封装。 第一步:代码准备 热搜词条搜集代码: import requests from lxml import etreeurl "https://tophub.today/n/KqndgxeLl9" headers{User-Agent: Mozilla/5.…...

设计模式 抽象工厂

01.人类接口 public interface Human { //首先定义什么是人类//人是愉快的,会笑的,本来是想用smile表示,想了一下laugh更合适,好长时间没有大笑了; public void laugh(); //人类还会哭,代表痛苦 public v…...

OPTIONS请求(跨域预检查)

目录 一、什么是OPTIONS请求?二、简单请求、复杂请求三、特定的请求头、响应头 一、什么是OPTIONS请求? OPTIONS 请求方式是 HTTP 协议中的一种,主要用于 从响应头中获取服务器支持的HTTP请求方式。 OPTIONS 请求方式是 浏览级行为&#xf…...

游戏反云手机检测方案

游戏风险环境,是指独立于原有设备或破坏设备原有系统的环境。常见的游戏风险环境有:云手机、虚拟机、虚拟框架、iOS越狱、安卓设备root等。 这类风险环境可以为游戏外挂、破解提供所需的高级别设备权限,当游戏处于这些风险环境下&#xff0c…...

HarmonyOS NEXT应用开发之动态路由

介绍 本示例将介绍如何使用动态路由跳转到模块中的页面,以及如何使用动态import的方式加载模块 使用说明 通过动态import的方式,在需要进入页面时加载对应的模块。配置动态路由,通过WrapBuilder接口,动态创建页面并跳转。动态i…...

wayland(xdg_wm_base) + egl + opengles 使用 Assimp 加载带光照信息的材质文件Mtl 实现光照贴图的最简实例(十七)

文章目录 前言一、3d 立方体 model 属性相关文件1. cube1.obj2. cube1.Mtl3. 纹理图片 cordeBouee4.jpg二、实现光照贴图的效果1. 依赖库和头文件1.1 assimp1.2 stb_image.h2. egl_wayland_obj_cube1.cpp3. Matrix.h 和 Matrix.cpp4. xdg-shell-client-protocol.h 和 xdg-shell…...

【NLP笔记】Transformer

文章目录 基本架构EmbeddingEncoderself-attentionMulti-Attention残差连接LayerNorm DecoderMask&Cross Attention线性层&softmax损失函数 论文链接: Attention Is All You Need 参考文章: 【NLP】《Attention Is All You Need》的阅读笔记 一…...

【Unity】程序创建Mesh(二)MeshRenderer、光照、Probes探针、UV信息、法线信息

文章目录 接上文MeshRenderer(网格渲染器)Materials(材质)Material和Mesh对应Lighting光照Lightmapping材质中的光照 光源类型阴影全局光照Probes(探针)Ray Tracing(光线追踪)Additi…...

互联网大厂 Java 求职者面试趣谈:Java SE 与微服务在电商场景中的应用

面试趣谈:Java SE 与微服务在电商场景中的应用 在今天的面试中,我们将看到严肃的面试官与搞笑的程序员燕双非的对话,围绕Java SE与微服务在电商场景中的应用展开。第一轮提问 面试官: 你好,燕双非,首先请你…...

如何一键同步网易云音乐到Discord?完整免费教程指南

如何一键同步网易云音乐到Discord?完整免费教程指南 【免费下载链接】NetEase-Cloud-Music-DiscordRPC 在Discord上显示网抑云/QQ音乐. Enables Discord Rich Presence For Netease Cloud Music/Tencent QQ Music. 项目地址: https://gitcode.com/gh_mirrors/ne/…...

从航拍到穿越:手动模式FPV入门避坑指南(附FPV Freerider地图设置)

从航拍到穿越:手动模式FPV入门避坑指南 第一次松开自稳模式开关时,我的手指在遥控器上颤抖了整整三秒。眼前这个5英寸的碳纤维小怪兽突然像脱缰野马般开始自由落体,而过去三年航拍积累的肌肉记忆完全失效——这就是大多数航拍飞手转型FPV时遭…...

别再手动拟合了!用CloudCompare的二次曲面功能,5分钟搞定点云曲面建模

点云建模革命:CloudCompare二次曲面拟合实战指南 当工程师第一次接触点云数据时,往往会被海量的三维坐标点震撼——这些来自激光扫描或摄影测量的数据点,精确记录了物体表面的几何特征,却也带来了巨大的处理挑战。特别是在需要从离…...

告别 CentOS 后,在 Rocky Linux 8 上玩转 Docker:手把手教你数据持久化与镜像管理

Rocky Linux 8 上的 Docker 数据持久化与镜像管理实战指南 当 CentOS 逐渐退出历史舞台,Rocky Linux 8 正成为企业级 Linux 用户的新宠。作为 CentOS 的完美替代品,Rocky Linux 不仅继承了 RHEL 的稳定性,还提供了更灵活的开源生态支持。在这…...

国标GB28181对讲避坑指南:为什么你的摄像头不支持?聊聊设备兼容性与私有协议那些事

GB28181对讲兼容性深度解析:从协议规范到设备选型实战 在视频监控系统集成项目中,语音对讲功能的需求日益增长。GB28181作为行业标准协议,理论上应实现设备间的互联互通,但实际部署中常遇到"协议支持却功能缺失"的尴尬—…...

linux 安装 Elasticsearch Kibana

1.下载 通过网盘分享的文件:es 链接: https://pan.baidu.com/s/1JO07VJ8nVsfyC0TzHaLGKw?pwd1dgu 提取码: 1dgu 2.创建 es 用户, es 无法使用root用户启动 # 创建用户组用户 groupadd es useradd -m -g es es # 设置密码(可选) passwd es # …...

微信支付V3批量转账接口踩坑实录:从签名验签到结果回调的完整避坑指南

微信支付V3批量转账接口深度排雷指南:从签名验签到异步回调的实战全解析 第一次对接微信支付V3批量转账接口时,我盯着控制台里那行FREQUENCY_LIMITED错误码发了半小时呆。这不是简单的频率限制提示,而是新版API给开发者设下的第一道"思…...

用Frida和JNItrace搞定B站Sign算法:一个Android Native逆向的实战案例

Android Native层逆向实战:Frida与JNItrace协同分析B站签名算法 在移动应用安全研究领域,逆向工程是一项极具挑战性的技术工作。当我们需要分析一个应用的Native层逻辑时,传统的静态分析方法往往效率低下,而动态分析工具的组合使用…...

GTE-large实战教程:Prometheus+Grafana监控GPU显存/请求延迟/错误率

GTE-large实战教程:PrometheusGrafana监控GPU显存/请求延迟/错误率 1. 监控需求与方案概述 在现代AI应用部署中,实时监控系统状态至关重要。对于基于GTE-large文本向量模型的多任务Web应用,我们需要重点关注三个核心指标: GPU显…...