Skip to content

库表元数据扫描任务支持更多数据源类型(TiDB、openGauss、DB2) #597

@actiontech-bot

Description

@actiontech-bot

需求概述

当前 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)无需修改

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions