3.2 KiB
默认数据源方言插件实现规范
范围
内置数据源方言实现位于 plugin-default-impl/nacos-default-datasource-plugin。它提供随
Nacos 服务端发行包一起发布的数据库方言和表级 mapper,是
数据源方言插件规范的内置实现。
默认实现集合是持久化兼容层,不得引入数据库特有的资源语义。
内置数据库类型
当前实现包含以下数据库族:
| 数据库类型 | Dialect provider | Mapper 包 |
|---|---|---|
derby |
DerbyDatabaseDialect |
impl.derby |
mysql |
MysqlDatabaseDialect 和 DefaultDatabaseDialect |
impl.mysql |
postgresql |
PostgresqlDatabaseDialect |
impl.postgresql |
oracle |
OracleDatabaseDialect |
impl.oracle |
每个数据库包必须同时注册
com.alibaba.nacos.plugin.datasource.dialect.DatabaseDialect 和
com.alibaba.nacos.plugin.datasource.mapper.Mapper SPI 文件。
Mapper 覆盖范围
每个内置数据库族都应提供以下 mapper 实现:
- 当前配置表:
config_info、config_info_gray、config_tags_relation、his_config_info; - 容量和命名空间表:
tenant_info、tenant_capacity、group_capacity; - AI Registry 表:AI 资源元数据和 AI 资源版本。
从 Nacos 3.3 版本线开始,内置数据库族不再要求提供默认 namespace 存储重复记录或 legacy
beta/tag 灰度表的运行时 Config 迁移 mapper。仍保留 pre-3.0 config_info_beta 或
config_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 变化时补充迁移说明。
服务端正在使用的内置数据库方言插件属于关键插件,不能通过插件状态禁用,否则会破坏持久化。