# nacos-datasource-support
**Repository Path**: wanqiu_share/nacos-datasource-support
## Basic Information
- **Project Name**: nacos-datasource-support
- **Description**: 基于nacos的源码,对nacos支持的数据库datasource进行改造和拓展支持support,使大家可以更好使用和支持更多的数据库。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2024-12-04
- **Last Updated**: 2025-09-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: nacos, nacos数据库, datasource, Support
## README
# nacos-datasource-support
#### 介绍
基于nacos的源码,对nacos支持的数据库进行改造和拓展,使大家可以更好使用和支持更多的数据库
#### 版本说明
1. nacos版本:2.4.2
2. jdk版本 1.8
#### 配置账号密码支持加解密
1. 让配置文件的数据库账号密码支持enc加密
2. pom.xml文件添加加密工具支持:
com.github.ulisesbocchio
jasypt-spring-boot
${jasypt.version}
3. 启动类添加开启注解:
[console]模块下的Nacos.java启动类上添加注解: @EnableEncryptableProperties
4. 配置文件添加密钥:
[distribution]模块下的conf下的application.properties文件,添加密钥:
jasypt.encryptor.password=wanqiu
5. 配置加密账号密码示例:
[distribution]模块下的conf下的application.properties文件,修改数据库配置:
```properties
db.user.0=ENC(0oeFzInq+E8h3c/B9n4/RQ==)
db.password.0=ENC(9fYw0apKb5XMmpplq5fmwwg0q7SxnPsT)
```
6. 修改配置[com.alibaba.nacos.plugin.datasource.mapper.Mapper](plugin-datasource-sqlserver-support/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper)
```xml
com.alibaba.nacos.plugin.datasource.impl.sqlserver.ConfigInfoAggrMapperBySqlserver
com.alibaba.nacos.plugin.datasource.impl.sqlserver.ConfigInfoBetaMapperBySqlserver
com.alibaba.nacos.plugin.datasource.impl.sqlserver.ConfigInfoMapperBySqlserver
com.alibaba.nacos.plugin.datasource.impl.sqlserver.ConfigInfoTagMapperBySqlserver
com.alibaba.nacos.plugin.datasource.impl.sqlserver.ConfigTagsRelationMapperBySqlserver
com.alibaba.nacos.plugin.datasource.impl.sqlserver.HistoryConfigInfoMapperBySqlserver
com.alibaba.nacos.plugin.datasource.impl.sqlserver.TenantInfoMapperBySqlserver
com.alibaba.nacos.plugin.datasource.impl.sqlserver.TenantCapacityMapperBySqlserver
com.alibaba.nacos.plugin.datasource.impl.sqlserver.GroupCapacityMapperBySqlserver
```
#### 数据库支持
1. 默认支持derby
2. 默认支持mysql
3. 开发支持sqlserver
4. 开发支持oracle
#### sqlserver使用说明
1. 最外层pom.xml添加驱动:
```xml
com.microsoft.sqlserver
mssql-jdbc
12.6.0.jre8
```
2. [persistence]模块的pom文件添加驱动使用
```xml
com.microsoft.sqlserver
mssql-jdbc
```
3. 将[plugin-datasource-sqlserver-plugin]代码复制到plugin下对应的路径下更新
4. 修改[config]模块下的TenantCapacityPersistService.java文件
```java
public TenantCapacity getTenantCapacity(String tenantId) {
TenantCapacityMapper tenantCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(),
TableConstant.TENANT_CAPACITY);
String sql = tenantCapacityMapper.select(
Arrays.asList("id", "quota", "`usage`", "`max_size`", "max_aggr_count", "max_aggr_size", "tenant_id"),
Collections.singletonList("tenant_id"));
if (DataSourceConstant.SQLSERVER.equals(dataSourceService.getDataSourceType())) {
sql = sql.replaceAll("`(\\w*)`", "[$1]");
}
List list = jdbcTemplate.query(sql, new Object[] {tenantId}, TENANT_CAPACITY_ROW_MAPPER);
if (list.isEmpty()) {
return null;
}
return list.get(0);
}
```
5. 修改[distribution]里面的数据库驱动:
```properties
spring.datasource.platform=sqlserver
db.pool.config.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
```
6. 修改配置
#### oracle使用说明
1. 最外层pom.xml添加驱动:
```xml
com.oracle.database.jdbc
ojdbc8
21.5.0.0
```
2. [persistence]模块的pom文件添加驱动使用
```xml
com.oracle.database.jdbc
ojdbc8
```
3. 将[plugin-datasource-oracle-support]代码复制到plugin下对应的路径下更新
4. 修改[config]模块下的TenantCapacityPersistService.java文件
```java
public TenantCapacity getTenantCapacity(String tenantId) {
TenantCapacityMapper tenantCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(),
TableConstant.TENANT_CAPACITY);
String sql = tenantCapacityMapper.select(
Arrays.asList("id", "quota", "`usage`", "`max_size`", "max_aggr_count", "max_aggr_size", "tenant_id"),
Collections.singletonList("tenant_id"));
if (DataSourceConstant.ORACLE.equals(dataSourceService.getDataSourceType())) {
sql = sql.replaceAll("`(\\w*)`", "$1");
}
List list = jdbcTemplate.query(sql, new Object[] {tenantId}, TENANT_CAPACITY_ROW_MAPPER);
if (list.isEmpty()) {
return null;
}
return list.get(0);
}
```
5. 修改[distribution]里面的数据库驱动:
```properties
spring.datasource.platform=oracle
db.pool.config.driverClassName=oracle.jdbc.OracleDriver
```
6. 修改配置[com.alibaba.nacos.plugin.datasource.mapper.Mapper](plugin-datasource-oracle-support/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper)
```xml
com.alibaba.nacos.plugin.datasource.impl.oracle.ConfigInfoAggrMapperByOracle
com.alibaba.nacos.plugin.datasource.impl.oracle.ConfigInfoBetaMapperByOracle
com.alibaba.nacos.plugin.datasource.impl.oracle.ConfigInfoMapperByOracle
com.alibaba.nacos.plugin.datasource.impl.oracle.ConfigInfoTagMapperByOracle
com.alibaba.nacos.plugin.datasource.impl.oracle.ConfigTagsRelationMapperByOracle
com.alibaba.nacos.plugin.datasource.impl.oracle.HistoryConfigInfoMapperByOracle
com.alibaba.nacos.plugin.datasource.impl.oracle.TenantInfoMapperByOracle
com.alibaba.nacos.plugin.datasource.impl.oracle.TenantCapacityMapperByOracle
com.alibaba.nacos.plugin.datasource.impl.oracle.GroupCapacityMapperByOracles
```
#### sqlserver与oracle都支持
1. 四种数据库都支持,可以相互切换