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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions