企业级数据库 DevOps 最佳实践,NineData 实现高效安全的数据库开发
第 15 届中国数据库技术大会(DTCC2024)于 8 月 22 日-24 日在北京隆重召开,本次大会由 IT168 联合旗下 ITPUB、ChinaUnix 两大技术社区主办。玖章算术 NineData 受邀首次参展,并由 NineData 联合创始人周振兴发表了《企业级数据库 DevOps 最佳实践》的主题演讲,帮助开发者和企业更好地使用数据的云。
以下内容,来自于周振兴在 DTCC2024 大会的公开分享整理:
获取完整 PPT 资料,公众号后台回复:DTCC2024
“三多” VS “一少”
当前数据库领域面临着 “三多” 和 “一少” 的情况。“三多” 指的是数据库种类和数量多,云 / IDC 环境多,开发人员多。截至 2022 年 10 月,DB - Engines 上共计 397 种数据库,各种分布式数据库技术和产品快速发展,不同厂商的云原生数据库不同,数据库变更发布变得频繁,国产化进展加速,网络方案也会变得复杂,团队和业务多元化,实时分析型数据库和向量化发展迅速。
而 “一少” 则是指 DBA 人数少,这使得变更稳定性管理变得困难,工具平台繁多。
数据库研发协同挑战
周振兴指出,在数据库研发协同过程中,存在着诸多挑战。企业的技术负责人对发布时间有严格要求,同时对稳定性问题非常关注,一旦出现问题可能会导致严重后果。研发人员可能面临权限不足、不了解规范等问题,SQL 开发、审核、性能优化、审计日志等环节也存在诸多困难。需求紧急但流程慢,用户体验差,变更窗口和规范审核等问题也给研发带来了困扰。此外,故障排查和监控告警也需要高效的解决方案。
如何防止 “删库跑路”、“误操作”
在数据库管理中,我们需要防止 “删库跑路” 和 “误操作” 等情况的发生。例如,无意的误操作或 Bug,以及有心的删库跑路行为,都可能给企业带来严重的损失。我们需要知道是谁、什么时候做的操作,以及如何快速恢复,并且要思考以后如何避免这些情况,能否事前阻断。
数据库开发工具的挑战
当前的数据库开发工具存在一些挑战,如直连数据库带来的数据安全隐患与业务稳定性问题;库/表结构定义混乱,影响业务可扩展性。例如:离职与转岗时,权限回收不便捷;字段定义不规范,扩展性较低;执行低效率 SQL 会带来稳定性问题;索引定义混乱,影响性能与业务;数据库账号难以管理,可能导致数据泄露问题。
此外,数据库变更随意也会影响业务稳定性,所有变更都走 DBA 可能影响业务发展效率,生产环境变更在凌晨执行会导致 DBA 效率较低,而且缺乏注释等会影响扩展性。数据库种类、平台多样,无法统一管理,多云、多 IDC 访问管理复杂,RDMBS、NoSQL 工具不一致。
研发数据库 DevOps 平台
为了解决这些问题,玖章算术研发了 NineData 数据库 DevOps 平台,提供端到端的数据库开发与治理解决方案。NineData 平台包括了高效协作、数据安全等方面,实现 SQL 开发规范、审批流程、版本管理、CI/CD 集成等功能,同时进行细粒度权限管控、安全规范约束、敏感数据保护和操作审计。
5.1 高效安全的变更
高效协作是 NineData 数据库 DevOps 平台的重要目标之一。在 SQL 开发规范方面,我们应制定相关标准。在结构规范上,支持字符集默认 utf8mb4,默认自增主键,默认字段定义为 not null,INT 默认带 unsigned;在索引合理上,支持索引命名规范,不过多使用单列索引,字符尽量定义前缀;在 SQL 高效上,支持尽量使用索引和覆盖索引,避免 WHERE 中的隐式转换等。这样可以提高开发效率,同时保障数据库的稳定性。
5.2 一次具体的变更流程
在进行一次具体的变更时,我们需要考虑多个因素。首先要判断是否有长时间锁表、删除操作、DROP/TRUNCATE 操作以及大量数据变更等情况。如果存在这些情况,需要提交给 DBA 审核后再提交到调度。在执行中,进行变更窗口控制、并发控制、间歇执行和数据备份等操作,以确保数据变更的安全和稳定。
5.3 保护数据变更的安全
在进行数据变更时,我们需要保护数据的安全。例如,对于数据备份,要确保备份已完成。在进行数据变更操作时,如 INSERT、DELETE、ALTER TABLE 等,要注意操作的准确性和安全性。同时,要对数据变更进行记录和跟踪,以便在出现问题时能够快速恢复。
5.4 大表,不锁表的 DML 变更
对于大表的 DML 变更,我们需要注意安全删除大量数据的问题。例如,对于数亿的数据,如何安全删除是一个挑战。我们可以采用一些策略,如“开启 OnlineDML”,可以避免 “长事务” 影响,有效控制短时系统压力,避免短时日志空间暴增等。
5.5 大表,不锁表的 DDL 变更
大表的 DDL 变更也需要谨慎处理。在源表 DDL 变更方面,我们可以采用创建新表、增量同步、拷贝数据和切换表等步骤,可以实现大表变更对业务的零影响。同时,要通过并发控制,保障稳定,并且进度可观察,无需触发器,无额外压力。
自动化 SQL 优化
NineData 的慢查询分析功能,可实时监控数据库性能状态,定位慢 SQL 和优化数据库,支持单条 SQL 与局部 SQL(某个时间段内的所有 SQL),并提供自动化 SQL 优化建议,包含索引推荐以及 SQL 语句优化等,提高 SQL 语句的执行效率。
安全、高效的数据库 DevOps 平台
面向个人,通过 AIGC 助力数据库开发 Copilot 替代传统开发工具(Navicat、Dbeaver 等),提供表设计/编辑、智能开发 IDE、智能 AI 辅助等功能,包括全列类型、智能补全、自然语言转 SQL、智能索引推荐、选项支持、智能 SQL 优化等。
面向企业,应定义数据库开发新范式,包括企业数据库开发最佳实践、敏感数据管理、规范流程、变更发布、组织权限等方面。
NineData 数据库 DevOps 平台应致力于实现安全、高效的数据库开发。
首先,它是一个生产力工具
NineData 数据库 DevOps 平台首先是一个生产力工具,具有智能语法补全、支持导航树遍历对象、常用 SQL 保持、查询历史查看、结果集编辑、数据导出、执行计划查看等功能。同时,支持用户、角色与权限管理,全量 SQL 执行审计,敏感数据管理。支持完整字段类型和选项,多种类型索引创建与修改,完整的约束/外键/分区/其他表选项支持。
一个平台,多种数据库
NineData 的数据库 DevOps 平台支持多种数据库,包括 MySQL、Oracle、PostgreSQL、SQLServer、MongoDB、Redis、elasticsearch、Amazon Aurora、DB2、PolarDB、SelectDB、ClickHouse、kafka、Oceanbase、GaussDB、TiDB、TDSQL(腾讯分布式数据库)、Greenplum、Doris 等。涵盖丰富的关系型数据库、文档数据库、开源数据库、内存数据库、商业数据库、分析型数据库、分布式数据库、消息队列和云原生数据库等。
规范、流程来保障生产环境的稳定
为了保障生产环境的稳定,需要通过 NineData 制定规范和流程。例如,默认生产环境规范包括表变更必须要 Online 执行、表要有主键、限制 VARCHAR 类型字段长度、限制唯一索引名格式、表需要包含某些列、限制表不能使用外键、限制单个索引包含列的个数、限制主键包含列的个数、字段名不能是关键字、限制自增列为无符号等。这些规范和流程有助于保障企业数据库的安全、稳定与可扩展。
NineData 云原生智能数据管理平台
NineData 作为新一代的云原生智能数据管理平台,提供了数据复制、数据库 DevOps、数据备份以及数据对比等多种功能,帮助用户轻松实现混合云、多云数据源的统一管理。通过这些功能,可以轻松完成日常数据库开发、数据安全访问、生产数据库变更与发布、数据库备份恢复、数据迁移、容灾多活、数据仓库及数据湖构建等核心应用场景。
未来展望
展望未来,数据库 DevOps 的技术领域充满希望,NineData 将与所有用户、合作伙伴和数据库从业者不断探索和创新,为企业提供更加高效、安全和可靠的数据库解决方案。相信在未来的发展中,NineData 将为企业的数字化转型提供更强大的支持,助力企业实现更高的业务价值和竞争力。
评论