来自电子制造行业视源电子 (CVTE) 的数据库变更管理实践

2023-11-09 13:13

本文主要是介绍来自电子制造行业视源电子 (CVTE) 的数据库变更管理实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于视源电子

广州视源电子科技股份有限公司 (CVTE) 成立于 2005 年 12 月,旗下拥有多家业务子公司。

file

截至 2022 年底,公司总人数超 6000 人,约 60% 为技术人员。公司的主营业务为液晶显示主控板卡和交互智能平板等显控产品的设计、研发与销售,产品已广泛应用于家电领域、 教育信息化领域、企业服务领域等。自成立以来,依托在音视频技术、信号处理、电源管理、人机交互、应用开发、系统集成等电子产品领域的软硬件技术积累,在细分市场逐步取得领先地位,并建立了教育数字化工具及服务提供商希沃(seewo)、智慧协同平台 MAXHUB 等多个业内知名品牌。

困扰已久的数据库变更发布管理

视源电子此前已经采购了数据库审计安全平台,其理论上可以实现对所有数据库访问的监控与阻断,从而避免违规操作。然而实际使用过程中,却并不能很好的应对复杂的数据库变更管理需求:

  • 拦截规则粒度较粗:由于无法进行精细化的规则设置,粗粒度的规则可能造成误拦截
  • 固定规则无法灵活调整:由于类似防火墙的固定规则配置,一旦终端用户发现规则错误或是需要临时放行,只能不断的反复修改规则
  • 不支持 SQL 审核规范:审计平台的拦截规则基本只限定于 SQL 类型,但是对于更细节的 SQL 审核规范完全无法支持,例如命名风格、字段类型约束等
  • 拦截能力不稳定:存在不明原因的 SQL 执行错误,只能关闭拦截功能才能解决
  • 缺乏线上流程管控:所有的发布依然需要人工在多个割裂的系统中对接,无法在一个闭环流程中实现提交、审核与发布,增加了不必要的沟通成本,也引入了更多的故障点。
  • 缺乏高级发布能力:视源电子一个现实需求是将同一个变更发布到多个工厂的系统中,原有流程中只能逐个登录堡垒机执行,效率低下。
  • 无法实现变更版本化管理:虽然审计平台能够记录所有的变更,但其目的是为了审计,事实上无法支持版本管理中需要的变更差异比对、变更历史分析、历史变更组织编排等能力。
  • 无法管理账号权限:由于存在发布与查询的现实需求,需要将生产系统的账号提供给研发人员,即便做了账号权限的控制,但是下发的账号无法进行有效的管理和回收,也无法控制账号在研发团队间的传播

由于安全平台的诸多局限,为了不影响用户的正常使用,事实上只能放弃拦截功能,而仅仅采用其审计能力。然而变更质量管控的问题依然无法得到解决,成为了日常数据库管理中最大的痛点。

Bytebase:为制造行业带来全新的数据库变更管理体验

专业的事情交给专业的产品。经过充分的试用评估,视源电子选择了 Bytebase 来作为其真正意义上的数据库变更管理平台。作为一款聚焦于数据库变更管理的产品,Bytebase 很好的满足了视源电子在数据库管理需求中的诸多关键需求。

数据库变更全流程管控

file

Bytebase 提供了一站式的变更管理流程,形成变更的合并、审核、发布、通知、记录的完整生命周期管理,同时通过接口等方式与上下游的研发工具实现联动,将原本割裂的行为实现了闭环统一。

  • 合并。可以通过 UI,代码仓库,接口等多种方式合并变更,不同研发团队可以按需选择。
  • 审核。提供了强大的自动审核功能,实现多维度的 SQL 检查。
  • 发布。可以一键将工单发布到目标数据库,避免手工执行低效易错。
  • 通知。可以集成主流 IM,实现流程节点自动化通知。
  • 记录。有别于审计平台只记录最终执行语句,Bytebase 可将记录工单项目的流程信息以及变更前后的结构快照,实现更专业的变更历史管理。

提升发布效率

file

在强调对流程管控的同时,Bytebase 提供了多种能力,帮助开发团队提升其发布效率,其中的一些切实解决了视源团队此前面临的问题。

  • 批量发布。Bytebase 支持多种高级发布能力,其中的批量分组功能可以将大量数据库进行灵活的分组发布,避免逐个库执行的低效,也解决了自定义批处理脚本无法灵活应对交叉分组的问题。
  • 可执行性验证。Bytebase 可以更好的帮助研发同学写出真正可执行的 SQL,不仅包括了语法检查与对象名校验,对于一些特定操作,例如修改被视图引用的表结构(在 Postgres 中需要删除该视图才能修改表结构),可以自动给出视图定义方便研发改写脚本,得到研发团队的一致好评。
  • 简化版本管理。在原有的流程中,测试环境的变更脚本需要通过电子表格等工具进行手工记录与编排,再逐个发布至生产系统,繁琐且易错。Bytebase 提供了变更列表管理功能,可以从历史记录或文件中导入变更,编排后实现一键发布,工作体验得到明显改善。

将访问合规融入流程

file

Bytebase 同时提供了多种安全能力,实现了所有人工直接访问数据库的安全管控。

  • 统一的权限管控。利用一套账号角色体系,可以管理所有项目中的数据库权限,无需将数据库的直接访问权给到开发者。
  • 细粒度的查询导出权限。可以精确到表级或语句级的细粒度权限分配,确保数据的访问合规。
  • 严格控制变更类需求。所有的变更类需求强制通过工单形式执行,便于流程审核与记录。

由浅到深的落地实践

为了确保落地效果,管理团队与不同的项目研发团队进行了深入的沟通,结合实际情况进行分阶段推行,取得了很好的效果。

  • 分部门逐步推广。优先在需求较为迫切的部门推广,例如制造部门急需分组变更等能力。
  • 分场景逐项落地。针对变更最为频繁,场景最为复杂的营销部门,并不急于全面推广,而是结合常规发布、大版本发布、数据修复等不同场景制定不同的应对策略,优先将临时性、易出错的数据变更纳入管理,再逐步接管其他场景,从而让开发团队能够适应新的流程。
  • 分功能逐级演进。优先采用易于上手的 UI 变更工作流,逐步在一些部门启用 GitOps 工作流,实现更无缝的变更体验。

在与视源技术团队合作的过程中,我们也深刻体会到了其专业性,不但将 Bytebase 的各项功能进行了充分的发挥,还贡献了很多极有价值的应用场景。后续的工作中 Bytebase 仍将全力支持,协助视源电子进一步完善新一代的数据库变更管理流程⛽️。


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

这篇关于来自电子制造行业视源电子 (CVTE) 的数据库变更管理实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/376310

相关文章

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

python uv包管理小结

《pythonuv包管理小结》uv是一个高性能的Python包管理工具,它不仅能够高效地处理包管理和依赖解析,还提供了对Python版本管理的支持,本文主要介绍了pythonuv包管理小结,具有一... 目录安装 uv使用 uv 管理 python 版本安装指定版本的 Python查看已安装的 Python

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数