Files
alibaba--nacos/specs/zh-cn/plugin/default-datasource-dialect-plugin-spec.md
T
2026-07-13 12:37:52 +08:00

3.2 KiB
Raw Blame History

默认数据源方言插件实现规范

范围

内置数据源方言实现位于 plugin-default-impl/nacos-default-datasource-plugin。它提供随 Nacos 服务端发行包一起发布的数据库方言和表级 mapper,是 数据源方言插件规范的内置实现。

默认实现集合是持久化兼容层,不得引入数据库特有的资源语义。

内置数据库类型

当前实现包含以下数据库族:

数据库类型 Dialect provider Mapper 包
derby DerbyDatabaseDialect impl.derby
mysql MysqlDatabaseDialectDefaultDatabaseDialect impl.mysql
postgresql PostgresqlDatabaseDialect impl.postgresql
oracle OracleDatabaseDialect impl.oracle

每个数据库包必须同时注册 com.alibaba.nacos.plugin.datasource.dialect.DatabaseDialectcom.alibaba.nacos.plugin.datasource.mapper.Mapper SPI 文件。

Mapper 覆盖范围

每个内置数据库族都应提供以下 mapper 实现:

  • 当前配置表:config_infoconfig_info_grayconfig_tags_relationhis_config_info
  • 容量和命名空间表:tenant_infotenant_capacitygroup_capacity
  • AI Registry 表:AI 资源元数据和 AI 资源版本。

从 Nacos 3.3 版本线开始,内置数据库族不再要求提供默认 namespace 存储重复记录或 legacy beta/tag 灰度表的运行时 Config 迁移 mapper。仍保留 pre-3.0 config_info_betaconfig_info_tag 数据的部署,必须在升级到依赖当前 mapper 集合的 3.3 服务端前完成迁移。

如果未来 Nacos 版本新增持久化表,在该表成为文档化服务端能力之前,内置数据库族必须补充 对应 mapper。

选择

Nacos 从 spring.sql.init.platform 选择数据库类型,并兼容旧配置 spring.datasource.platform

当选择类型为 mysql 时,使用 MySQL mapper 和 MySQL 兼容的默认 dialect 行为。当选择类型 为 derby 时,Derby 仍是 standalone 开发和本地测试的嵌入式默认数据库。

兼容性

内置实现必须:

  • 在不同数据库族之间保持 Nacos 逻辑 schema
  • 保持 SQL 占位符和参数顺序与 repository 代码兼容;
  • 保持插入操作期望的生成主键列;
  • 保持 AI 资源 mapper 行为与资源模型对齐;
  • 当某个数据库族需要 schema 变化时补充迁移说明。

服务端正在使用的内置数据库方言插件属于关键插件,不能通过插件状态禁用,否则会破坏持久化。