本文作者司马辽太杰, gzh:程序猿读历史
在业务快速变化与数据安全日益重要的今天,生产数据库变更管理、版本控制、数据使用是数据库领域的核心挑战之一。传统的解决方式往往采用邮件或即时通讯工具发起审批流程,再通过堡垒机直连数据库执行变更操作。这种粗放管理模式高度依赖操作人员的专业素养,SQL脚本质量把控、操作合规性追溯、安全风险防控等关键环节,均与企业的生产IT系统变更管理规范形成冲突。可以说这类解决方案:100斤的哪吒,99斤反骨,1斤藕粉。
近期,玖章算术推出了NineData 社区版,该版本不仅免费,还为生产数据库变更管理、版本控制、数据使用 提供了专业可靠的解决方案。本文是笔者对该版本的使用体验心得。
NineData 社区版解决方案
NineData 社区版是玖章算术推出的免费、一键安装的数据管理解决方案,专为开发者、初创团队、教育机构及个人用户设计,包含DevOps、数据复制、数据库对比三个核心功能。
-
数据库 DevOps:数据库 DevOps 具有数据源管理、数据查询、SQL 规范、SQL 审核、审批流程等强大功能,帮助用户快速完成多种环境的数据管理任务,助力企业数字化转型。
-
数据复制:NineData 数据复制支持多种同异构数据源之间的离线、实时数据复制。适合数据迁移、数据库扩缩容、数据库版本升级、异地容灾、异地多活、数据仓库及数据湖数据集成等多种业务场景。
-
数据库对比:NineData 数据库对比功能支持对两个数据源之间的内容进行一致性对比,不一致的情况下支持自动生成变更 SQL,实现数据与结构的一致性。
NineData 社区版是一个完全离线运行的本地化部署版本,无需连接任何云端服务或访问 NineData 网站,所有数据与操作 100% 留存于您的本地环境。特别适用于无法访问外网的内网环境,完美匹配小规模企业、个人项目或学习测试等场景。
对比维度 | 社区版 | 企业版 |
---|---|---|
核心定位 | 开发者/初创团队/个人开发者 | 中大型企业/生产环境 |
部署方式 | Docker 单机部署 | Docker 单机部署/分布式集群 |
数据库 DevOps | 10 个数据源 | 按许可证动态扩展(无限制) |
数据复制 | 10 个任务(含 2 个增量任务) | 按许可证动态扩展(无限制) |
数据对比 | 上限 10 任务 | 无上限 |
部署复杂度 | ⭐⭐⭐⭐⭐ 单命令部署 | ⭐⭐⭐⭐ 具备升降配、增加节点等能力 |
资源消耗 | 单机 | 集群(跨机房容灾 + 异地多活) |
技术支持 | 文档 | 7x24 专属技术支持 + SLA 服务保障 |
费用 | 免费 | 按需付费 |
NineData 社区版使用体验
NineData 社区版本可直接通过 docker 快速部署该服务。安装部署命令如下:
docker run -p 9999:9999 --privileged -v /opt/ninedata:/u01 --name ninedata -d swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest
服务初始化大约需要10分钟,也可以通过: docker logs -f ninedata
查看安装进度,如日志中出现以下提示则表示安装完成:
部署完成后,在浏览器中输入服务地址和端口后即可登录,初始管理员账号与密码均为 admin 。整个部署过程简单、方便,唯一不足的是目前镜像大约有2G左右,需要有一个比较好的网络环境。NineData 也提供了多个镜像下载地址,用户可以就近选择。
华北-北京:swr.cn-north-4.myhuaweicloud.com/ninedata/ninedata:latest
华东-上海:swr.cn-east-3.myhuaweicloud.com/ninedata/ninedata:latest
华南-广州:swr.cn-south-1.myhuaweicloud.com/ninedata/ninedata:latest
NineData Docker Hub 官方地址:ninedata/ninedata:latest
笔者本次重点体验DB DevOPS 中的SQL 窗口、数据安全、SQL 任务等功能,下面将逐一介绍上述功能。
-
SQL 窗口
SQL 窗口是开发者日常使用高频的工具,数据库对象树形展示、执行结果多样化展示、保留字体现等等基础功能,NineData 社区版均有不错的表现,这部分功能和企业版保持一致。
笔者曾经遇到数据库GUI工具面对大量表出现卡顿的情况,本次测试也特地创建了1万个表后,使用NineData 社区版查看表结构,均能做到1秒左右出结果。此处的优化,还是相当意外。
-
数据安全
NineData 社区版 还提供了敏感数据加密的功能,支持将数据源中的某一列或多个列设置为敏感列,未被授权查看敏感列的用户将无法查看该列的内容。敏感列功能由敏感等级、数据类型、脱敏算法等几个关键组件构成。
敏感等级提供 S0 ~ S5 6 个等级,数字越大安全级别越高。S0 表示非敏感字段,S1 ~ S5 的每个等级都对应不同的审批流程,支持管理员配置不同的审批策略,对敏感数据进行分类分级管控。此外,系统默认提供了 27 条数据类型,每条数据类型关联了敏感等级、脱敏算法,以及敏感字段的识别规则。数据类型用来自动识别表中的敏感字段,识别规则命中目标列后就会关联该列,自动为敏感列进行分类分级 。敏感列的数据将通过该算法进行加密,系统默认提供了 33 条脱敏算法,也支持根据实际业务需求创建自定义脱敏算法。
下图是笔者在测试时,构建的银行卡号、身份证、地址以及手机号等常见敏感字段的脱敏方式。
-
SQL 任务
SQL 任务是对数据库发起 SQL 操作的任务,主要包括 DDL、DML等 两类语句。当生产数据库需要变更时,可以通过提交 SQL 任务工单实现,它的主要功能是全周期的安全管控,包括提交、审批、执行、回滚等步骤。系统会在实际执行对应的 SQL 任务之前,自动备份对应变更内容的当前数据状态,如为当意外情况发生或者操作失误导致数据错误,用户可以下载该备份数据手动进行数据回滚,保证数据的安全。
除了流程以外,SQL 任务还内嵌了编 200多条规则,这些规则除了提升 SQL 质量,防止慢 SQL、保持一致的编码风格,减少潜在的错误和性能问题外。例如:针对 OceanBase for MySQL 在进行变更时可能存在的部分语法冲突问题,提供了冲突检查规则,强制用户分开执行。下图是部分规范。
总结
通过笔者本次使用体验以及结合市场上开源或免费的数据库DevOPS 工具来看,NineData 此次推出的社区版在产品功能、性能、以及易用性均有较大的提升,不仅有基础的SQL 变更管理、数据查询使用,也包含了丰富的SQL规范和数据安全等高级特性。不足的是,社区版目前仅支持10个数据源,这对于大部分公司来说还是偏少。希望后期社区版能支持更多的数据源。