需求概述
当前 DMS-EE 的库表元数据扫描(DB Structure Sync)功能仅支持 MySQL、PostgreSQL、Oracle、SQL Server、OceanBase For MySQL。本次需求扩展支持 TiDB、openGauss(GaussDB for MySQL)、DB2 三种数据源类型,使敏感数据发现和数据脱敏功能覆盖更多主流数据库。
- TiDB:兼容 MySQL 协议,复用 MySQLMetadataCollector 和 MySQLSampleFetcher
- openGauss:兼容 PostgreSQL 协议,复用 PostgreSQLMetadataCollector 和 PostgreSQLSampleFetcher
- DB2:使用 SYSCAT 系统目录视图,需新建 DB2MetadataCollector 和 DB2SampleFetcher
修改清单
仓库:dms-ee
| 序号 |
文件路径 |
操作 |
修改内容 |
| 1 |
internal/db_structure/collector/metadata_collector_ee.go |
修改 |
NewMetadataCollectorFactory() 中新增 3 行注册:TIDB、GAUSSDB FOR MYSQL、DB2 |
| 2 |
internal/db_structure/collector/db2_collector_ee.go |
新建 |
DB2MetadataCollector 实现(CollectSchemas/CollectTables/CollectColumns/GetDefaultExcludeSchemas),约 120 行 |
| 3 |
internal/data_masking/biz/sample_fetcher_factory_ee.go |
修改 |
NewSampleFetcherFactory() 中新增 3 行注册 + DB2SampleFetcher 结构体 |
关键注意事项
- MetadataCollectorFactory key 使用
strings.ToUpper(dbType),注册 key 分别为 "TIDB"、"GAUSSDB FOR MYSQL"、"DB2"
- SampleFetcherFactory key 使用
pkgConst.DBType + strings.EqualFold 匹配
- TiDB 用
pkgConst.DBTypeTiDB
- DB2 用
pkgConst.DBTypeDB2
- GaussDB 不能用
pkgConst.DBTypeGaussDB(值为 "GaussDB / openGauss",与 API 输入 "GaussDB for MySQL" 不匹配),必须用 pkgConst.DBType("GaussDB for MySQL")
- 前端(dms-ui-ee)和 CE 仓库(dms)无需修改
需求概述
当前 DMS-EE 的库表元数据扫描(DB Structure Sync)功能仅支持 MySQL、PostgreSQL、Oracle、SQL Server、OceanBase For MySQL。本次需求扩展支持 TiDB、openGauss(GaussDB for MySQL)、DB2 三种数据源类型,使敏感数据发现和数据脱敏功能覆盖更多主流数据库。
修改清单
仓库:dms-ee
internal/db_structure/collector/metadata_collector_ee.goNewMetadataCollectorFactory()中新增 3 行注册:TIDB、GAUSSDB FOR MYSQL、DB2internal/db_structure/collector/db2_collector_ee.goDB2MetadataCollector实现(CollectSchemas/CollectTables/CollectColumns/GetDefaultExcludeSchemas),约 120 行internal/data_masking/biz/sample_fetcher_factory_ee.goNewSampleFetcherFactory()中新增 3 行注册 +DB2SampleFetcher结构体关键注意事项
strings.ToUpper(dbType),注册 key 分别为"TIDB"、"GAUSSDB FOR MYSQL"、"DB2"pkgConst.DBType+strings.EqualFold匹配pkgConst.DBTypeTiDBpkgConst.DBTypeDB2pkgConst.DBTypeGaussDB(值为"GaussDB / openGauss",与 API 输入"GaussDB for MySQL"不匹配),必须用pkgConst.DBType("GaussDB for MySQL")