您当前的位置:首页 > 电脑百科 > 数据库 > 百科

GitHub 的数据库 CI/CD 最佳实践

时间:2022-09-03 21:49:12  来源:网易号  作者:qaseven

数据库更改是开发过程中一个棘手的部分。我们能否像对待代码一样对待数据库,将其作为 CI/CD 周期的一部分?

数据库更改是应用程序开发过程中一个棘手的部分:它通常涉及来自不同环境的多个数据库和跨团队协作,此外,数据库是一触即发的。它让我们思考:我们可以像对待应用程序代码一样对待数据库吗?

DORA(DevOps Research & Assessment)指出,将数据库工作整合到软件交付过程中,对持续交付有积极的贡献。是时候让数据库成为 CI/CD 周期的一部分了。

但它是如何工作的?

数据库 CI/CD 的关键要素

要回答“如何”,我们首先需要梳理一下典型的数据库变更工作流程。在 SQL 语句可以安全地应用于数据库之前,有两个关键步骤:review & change

1. SQL 审查

此步骤是为了确保更改:

 

  1. 准确实现业务逻辑;
  2. 遵循数据库设计最佳实践;

 

在这里,开发人员通常负责前者的任务,而 DBA 则负责后者。DevOps 理念旨在通过集成 Ops 和 Devs 来解决这个问题。现实情况是,当组织中存在 DBA 时,很难将两个团队直接合并。一种可能的解决方案是保留 DBA 的任务,同时让开发团队能够预审 SQL。这种左移方法可以显着减少发布延迟的机会。此外,如果组织中没有 DBA,那么赋予开发团队以确保 SQL 不会对数据库造成严重破坏的能力就更加重要。

2、SQL变更执行

此步骤是为了确保:

 

  • 语句正确执行。我们不希望出现错误的数据库连接、权限不足、对象名称冲突或基本语法错误。
  • 所有计划的语句都被执行。当要执行的脚本很多或者有多个目标数据库要批量执行时,可能会出现遗漏。
  • 变更执行过程不应影响业务。硬件资源耗尽和长时间锁定表对公司来说并不愉快。

 

为了避免与变更相关的错误,减少手动方面也很重要:自动化的事情越多,发生错误的机会就越少。预配置管道以自动将 SQL 应用于数据库?听起来不错。为避免对常规业务运营产生负面影响,应采用各种零停机更改技术,尤其是对于具有大型数据集的数据库。

因此,实施数据库 CI/CD 的关键要素应该使开发团队能够执行 SQL 审查简化 SQL 更改推出

使用 VCS 集成进行 SQL 审查和变更部署

让我们首先探讨如何让开发团队自己执行 SQL 审查。

很少有开发人员是审查 SQL 语句“架构正确性”的专家,即使对于高级 DBA,手动检查也可能非常低效且容易出错。幸运的是,业界通过集成不同的 SQL 检查规范创建了各种自动审查工具。

然而,这些工具有一个共同的问题——它们都是为 DBA 设计的。一方面,这些工具往往需要更高的数据库操作权限,因此不适合开发人员直接使用。另一方面,开发人员拥有自己的 IDE,而单独的外部仲裁器是他们最不需要的东西。想象一下,当您必须在多个工具之间复制和粘贴代码时会有多糟糕。

那么开发人员友好的 SQL 审查工具应该是什么样的呢?

我们通常在版本控制系统 (VCS) 上执行传统的代码审查流程,SQL 也应如此。因此,应该将 SQL 审查工具集成到代码审查工作流程中。启用后,当您在 Github 上提交 PR 时,将触发GitHub Marketplace 上可用的 SQL Review Action 。


 

让我们看看如何实现简化的 SQL 更改推出。

独立的 SQL 部署工具并不少见。这些工具通常手动上传 SQL 脚本,通过审批流程继续部署,然后在部署完成后提供反馈。该模型准确地描述了开发人员和 DBA 如何独立工作,而分散的流程是延迟发布的最常见原因之一。毕竟,当您在多个系统之间不断手动移动 SQL 脚本时,谁能保证永远不会出错?

我们需要一个更高效和自动化的发布流程。让我们回顾一下应用程序代码的经典 CI/CD 工作流程:提交更改 > 代码审查 > 合并分支 > 自动构建 > 自动部署。既然我们已经在 GitHub Actions 上实现了 SQL 审查,为什么不能包括后续的推出流程呢?

嗯,是的,我们可以!

用于数据库 CI/CD 的 SQL 更改推出工具应该能够与 VCS 集成。一旦您的 SQL 脚本经过审查并合并到目标分支中,就会触发发布过程,并且脚本会自动推送到 Bytebase。当然,DBA 可以在针对目标数据库执行 SQL 之前执行另一次完整性检查。


 


 

完整的数据库 CI/CD 工作流程

在这里,我们展示了一个完整的数据库 CI/CD 工作流程


 

 

  1. 开发者创建一个包含 SQL 迁移脚本的 Merge Request / Pull Request;
  2. 自动触发 SQL Review Action 来审查 SQL 并提供建议以协助代码审查;
  3. 经过几次可能的迭代后,开发团队中的团队领导或其他同事批准更改并将 SQL 脚本合并到一个分支中;
  4. 合并事件自动触发 Bytebase 中的发布管道,并创建捕获预期更改的发布票;
  5. (可选)DBA 或指定的审阅者可以通过 Bytebase 的内置 UI 审阅更改脚本;
  6. 批准的脚本会根据配置的上线阶段逐步执行;
  7. 应用更改后,最新的数据库模式会自动写回代码存储库。这样一来,开发团队始终拥有最新架构的副本。此外,他们可以根据最新模式的变化配置下游管道;
  8. 确认迁移并继续进行相应的应用程序推出。

 

此工作流程非常适合现有的 CI/CD 流程,并且对开发人员来说很自然。敏锐的读者可能已经发现所描述的步骤是具有里程碑意义的文章Evolutionary Database Design的实现。



Tags:GitHub   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
GitHub顶流"Web OS"——运行于浏览器的桌面操作系统、用户超100万、原生jQuery和JS编写
Puter 是近日在 GitHub 上最受欢迎的一款开源项目,正式开源还没到一周 ——star 数就已接近 7k。作者表示这个项目已开发 3 年,并获得了超过 100 万用户。根据介绍,P...【详细内容】
2024-03-10  Search: GitHub  点击:(23)  评论:(0)  加入收藏
基于GitHub App 深度讲解Kotlin高级特性与框架设计
基于GitHub App 深度讲解Kotlin高级特性与框架设计GitHub App 是 GitHub 平台上的一种特殊类型的应用程序,它允许开发者通过 GitHub API 与 GitHub 上的仓库和组织进行交互...【详细内容】
2023-11-28  Search: GitHub  点击:(199)  评论:(0)  加入收藏
GitHub:程序员正积极使用 AI 编程、JavaScript 语言依然最流行
IT之家 11 月 20 日消息,GitHub 发布了 2023 年度 Octoverse 开源状态报告,其中主要强调了 AI 在开发过程中的作用,并围绕云和 Git 的开源活动展开。官方介绍称,今年的三大趋势...【详细内容】
2023-11-20  Search: GitHub  点击:(171)  评论:(0)  加入收藏
Git新手如何上传项目代码到GitHub并完成后续的代码更新?
国内对于个人站长的发展空间限制越来越多,首先是百度主推自家产品,现在权重最高的似乎就是百家号了,其次是腾讯云、阿里云这些提供IDC大厂提供的云端服务产品也很少有针对个人...【详细内容】
2023-11-15  Search: GitHub  点击:(243)  评论:(0)  加入收藏
如何在GitHub上存储源码并保持同步
GitHub是一个广泛使用的基于云的代码托管平台,它为开发者提供了一个便捷的方式来存储、管理和共享他们的源代码。通过GitHub,开发者可以轻松地与团队成员合作,跟踪代码更改,并保...【详细内容】
2023-11-15  Search: GitHub  点击:(232)  评论:(0)  加入收藏
GitHub在大会上发布的十大AI更新!
作者 | Tasmia 策划 | 言征出品 | 51CTO技术栈(微信号:blog51cto)GitHub的母公司微软在生成人工智能业务方面取得了巨大增长,该公司首席执行官萨蒂亚·纳德拉告诉华尔街,该...【详细内容】
2023-11-13  Search: GitHub  点击:(226)  评论:(0)  加入收藏
重塑 GitHub、颠覆程序开发:GitHub Universe 2023 发布重大更新
编译 | 核子可乐、TinaGitHub 的东家微软看到了生成式 AI 业务的大幅增长,其首席执行官萨蒂亚·纳德拉 (Satya Nadella) 告诉华尔街,GitHub Copilot 软件的付费客户在第...【详细内容】
2023-11-10  Search: GitHub  点击:(221)  评论:(0)  加入收藏
GitHub黑市曝光,高档刷星6元一颗,最奇葩开源项目97%都是刷的
梦晨 克雷西 发自 凹非寺量子位 | 公众号 QbitAI在黑市买GitHub星星多少钱?最贵的高达6元一颗。有创业者Yassin Eldeeeb自掏腰包测试了一把。他足足花20欧元(约156人民币),只买...【详细内容】
2023-11-05  Search: GitHub  点击:(60)  评论:(0)  加入收藏
AI编程,详细比较GitHub Copilot对比Amazon CodeWhisperer
1、简介GitHub Copilot和Amazon CodeWhisperer是采用人工智能技术驱动的编码助手,它们将自动完成编码功能提升到一个全新的水平。在最佳状态下,它们可以根据开发者提供的简短...【详细内容】
2023-11-01  Search: GitHub  点击:(225)  评论:(0)  加入收藏
大模型无法替代码农!普林斯顿芝大惊人发现:GPT-4解决GitHub编程问题成功率为0
Stack Overflow,已经被ChatGPT创飞了!因为码农大量涌向ChatGPT、Github Copilot,Stack Overflow今天不得已宣布裁员100多人,几乎占员工人数的1/3。所以,ChatGPT这类AI编码工具,真...【详细内容】
2023-10-17  Search: GitHub  点击:(284)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(5)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(5)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(14)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(14)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(7)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(15)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(6)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(5)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(32)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(20)  评论:(0)  加入收藏
站内最新
站内热门
站内头条