数据库研发效能与质量最佳实践 万霁春/数据库团队经理 从事数据库行业工作13年,经历过互联网场景、传统金融场景和互联网金融场景,涵盖了关系型数据库到大数据平台,管理过上千套规模和百TB规模的数据实例,踩过不少坑,积累了一些疑难杂症的解决方案。最近几年也深耕在信创方向,协助企业完成了全站商业数据库到国产开源数据库的架构迁移和优化。 01数 据 库 管 理 痛 点 02鹰 眼( S Q L Re v i e w) 03神 盾( B e t t l e ) 04客 户 案 例 PART 01 数据库管理痛点 数据库管理痛点 数据安全与稳定是重中之重,然而数据库却很容易出现风险 慢 审核流程拖累版本需求快速迭代 数据增长过快,未及时升级,造成系统卡顿影响业务... 未按规范文档执行,导致数据库出现长时间的全局锁,系统瘫痪无法运行... 数据库安全管控解决方案 数据库研发规范管理平台,为元数据管理、版本发布、规范落地提供安全防护 鹰眼(SQLReview) 应用代码SQL审核平台,规避SQL性能风险 鹰眼-多重审核维度 精准的代码解析能力,新旧数据/数据库全方位覆盖,支持手动上传、自动上传、批量审核,效率更高,操作更便捷,速度更“快” 鹰眼-全生命周期支撑+智能优化建议 全生命周期支撑,对SQL“跟踪”监管,生成智能优化建议,为风险兜底,让数据库更安全,更稳健 开发 测试 生产 事中审核 事前审核 事后审核 支持嵌入开发的IDE编程窗口中进行代码开发中的审核; 在测试、打包或上线阶段都可以使用批量审核、手动上传或自动上传进行审核; 使用嵌入到DB监控系统进行上线后的监控审核; 代码阶段一键即可SQL快速审核,并根据鹰眼建议完成优化; 避免上线后因为数据量和数据分布变化导致性能下降; 同时鹰眼开放API接口,可嵌入到其他系统; 鹰眼-智能优化建议页面 鹰眼-自定义规则库 拥有丰富多元的内置默认规则库,同时可以灵活多维度自定义规则,定制化规范,更专业,更细致 指 标 规 则 颗 粒 度 最 细 落 地 规 则 库 最 优 解 鹰眼原厂自带的近千条落地规则经过实战场景检验;一键应用,即可满足日常审核场景; G常用参数、语法、函数等;可覆盖90%以上使用场景; 每种数据库提供几十种规则指标,全面查找SQL中可能存在的问题; 对于行业内特殊的审核规则也可自由进行配置; 鹰眼-自定义规则库页面 鹰眼-功能全面 平台还提供工作台视觉化展示、差异对比、白名单豁免、用户权限管理、平台架构及DEVOPS、数据脱敏、报表统计等各种功能,让数据库安全管控更省心 鹰眼-差异对比 快稳省细 鹰眼-敏感数据脱敏 鹰眼-使用结果概述 选定某个代表性的系统进行规则的制定、代码的扫描识别、SQL的审核、优化建议的改写等 部分触发高危规则 全表扫描且影响行数大于n行delete/update全表扫面自查询嵌套超过n层delete未使用where条件SQL使用恒等式使用索引扫描,但影响行数大于ninsert使用子查询且子查询行数大于n使用二级索引查询且扫面行数大于nSQL语句使用selectSQL使用前置模糊查询表关联超过n张SQL使用关键字使用全索引扫描 神盾(Bettle) 神盾(Bettle) 数据库研发规范管理平台:为生产数据库变更、数据修改、数据库资产提供安全防护 底层环境支持 神盾-助力高效 自动化管理多环节一致性、多版本差异自动补齐、数据变更自动备份,效率更高,操作更“快” 自动化管理多环节一致性 一致性 ①开发建模通过神盾操作;②基于生产环境最新的数据进行变更; 多版本差异自动补齐 每次移交部署,神盾会根据最新结构比对目标库;保持开发/测试/生产数据库环境强一致性 神盾在操作者变更数据时自动产生日志/备份,可迅速回滚; 神盾-流程化规范 统一制定落实指标管理、规则管理、数据库规范管理,全流程线上化的数据库建模及移交,保证移交至各个环境的数据库对象一致目所有模型符合dba创建的规则,更安全,更稳健 对数据库的字段类型、主键约束、表名、默认字段等数据进行规则的制定 对数据库的字段类型、索引等制定对应的规则管控,用于后面的规则管理 对不同数据库的表、字段、索引分区、默认规则、默认字段、表权限制定详细的规范管理 神盾-权限隔离 根据用户、组织进行详细的功能隔离和数据权限隔离,针对具体需求灵活选择部署方式,颗粒度化到字段级 神盾-元数据管理/发布管理 统一变更入口、变更自动备份、版本差异补齐、风险拦截,可直接将生成的变更单发布到对应环境,也可对接CI/CD流程平台集中发版,让数据库研发规范管理更省心 统一变更入口 所有开发建模通过神盾操作,生成变更单,统一管理 变更自动备份 表结构和数据变更时自动产生日志/备份,操作可溯源、回滚 版本差异补齐 基于生产环境,保持开发/测试/生产数据库环境强致性 风险拦截 预估若与实际不匹配,风险拦截:高危语句需多重审核才能执行 神盾-发布管理 神盾发布 拥有发布权限的人员可将生成的变更单进行统一发布:发布人员可对发布状态进行追踪,对发布失败的变更单会有失败原因查询 CI/CD流程发布 神盾平台可与各大CI/CD流程进行打通,以提供API接口的形势进行版本的发布 神盾-使用结果概述 选定某个代表性的系统进行规范的制定、变更单的创建以及流程的发布 部分规则设置 重复索引 联合索引超过n个字段 delete未使用where条件 SQL使用恒等式 新建表中未设定uk、pk 字段长度大于n 表名长度大于n 表命名未以tb开头 非空字段必须明确指定默认值 表分区数量限制 表名是否允许使用关键字、保留字 客户案例 某金融科技平台 企业痛点 审核时效慢 数亿数据量,全查全检,效率慢,同时上线时对SQL审核有时效要求,需要在7/8h内完成审核,随着数据量增大,时效要求比较吃力; 变更周期长 数据变更由开发人员手写,工单审批则由DBA人工执行,工作量大; 管控效率低 数据库质量管控规范难以落地,切换数据库客户端比较麻烦,执行DDL、DML流程较复杂; 某银行 企业痛点 审核不全面 自研的SQL审核工具针对拼接的SQL审核不到位,不能对每个分支进行审核; 管控效率低 数据库管控不是很便捷,建表等操作都是开发手写,再打包交给DBA执行; 流程繁琐 数据修改流程不规范;发布流程比较繁琐; 某证券 企业痛点 管控不全面 数据库权限管控不到位,各个环境版本差异难以补齐,要花费大量人力进行问题排查; 数据差异化 上游业务系统数据变更或表结构变更,数仓不能及时同步修改,会造成数据差异; 变更效率低 数据变更开发手写,提交工单走审批给到DBA执行,流程相对较复杂; 房产-XXX 企业痛点 运维不规范 历史遗留问题较多,开发运维不规范; 缺少管控 sql没有进行review,对sql安全、sql审核没有很好的工具管控; 开发效率低 DDL,DML相关sql开发完全手写,花费在取数或者数据开发层面的时间很多 扫二维码交个朋友一起成长共同进步 感谢大家观看