跳到主要内容

数据源配置:report_data_source

该表存储按租户管理的报表连接配置。保存、修改配置不预热目标连接;实际查询或连接测试才创建资源。连接凭据只描述存储方式,不在设计文档中写入实际值。

业务流程是管理员创建数据源,保存连接参数及容量限制;报表查询通过数据源 ID 读取当前租户的有效配置,再使用独立连接访问目标存储。修改配置会递增版本并淘汰旧连接资源,禁用后不可作为有效查询源,删除使用逻辑删除。元数据库保存配置,目标数据库提供报表数据,两者具有不同读写职责。

实体来源:ik_project/yudao-cloud/yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/dal/dataobject/datasource/ReportDataSourceDO.java:12。

完整字段​

“应用约束/默认值”来自创建请求与服务;数据库 DEFAULT/NOT NULL 单列在后文,两者已与本轮采集对照。

数据库列Java 字段 / 类型语义与应用约束/默认值声明行
idid / Long数据源主键,@TableId27
namename / String名称;必填,最多 100 字符31
codecode / String编码;[a-z0-9_-]{1,64}35
source_typesourceType / StringMYSQL、ES、TDENGINE、REDIS39
connection_configconnectionConfig / String规范化连接 JSON,恰含一种连接结构43
password_cipherpasswordCipher / String密码密文;允许清空,非明文密码47
statusstatus / Integer0 启用、1 禁用;创建默认 053
max_connectionsmaxConnections / Integer最大连接数;1~10,默认 357
connect_timeout_msconnectTimeoutMs / Integer建连超时;1000~30000 ms,默认 500061
acquire_timeout_msacquireTimeoutMs / Integer等待资源超时;1~30000 ms,默认 500065
query_timeout_msqueryTimeoutMs / Integer查询超时;1000~60000 ms,默认 3000069
idle_timeout_msidleTimeoutMs / Integer空闲回收;60000~3600000 ms,默认 60000073
max_rowsmaxRows / Integer返回行数上限;1~10000,默认 500077
config_versionconfigVersion / Long创建为 1;每次成功修改加 181
remarkremark / String备注,最多 500 字符;可清空85
tenant_idtenantId / Long服务端当前租户 IDTenantBaseDO:19
create_timecreateTime / LocalDateTime创建自动填充BaseDO:30
update_timeupdateTime / LocalDateTime创建/更新自动填充BaseDO:35
creatorcreator / String创建者 IDBaseDO:42
updaterupdater / String更新者 IDBaseDO:49
deleteddeleted / Boolean逻辑删除标志BaseDO:54

继承来源:ik_project/yudao-cloud/yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/db/TenantBaseDO.java:14,以及 ik_project/yudao-cloud/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/dataobject/BaseDO.java:24。

应用约束来源:ik_project/yudao-cloud/yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/datasource/vo/DataSourceCreateReqVO.java:17。

connection_config 的结构​

该列对应 ConnectionConfigVO。下列只是键名及类型,不包含连接值。顶层只允许一种非空配置,不接受未知字段;数据库名、host、port 在保存时验证。

顶层键子字段规则
mysqlhost:String、port:Integer、database:String、username:String、tlsEnabled:Booleanport 默认 3306;TLS 默认 false
esendpoints:List<Endpoint>、username:String1~5 个端点;端点有 host、port(默认 9200)、scheme(默认 http,仅 http/https)
tdenginehost:String、port:Integer、database:String、username:String、protocol:Stringprotocol 仅接受 REST;port 必须提供
redishost:String、port:Integer、database:Integer、username:String、tlsEnabled:Booleanport 默认 6379;database 默认 0;TLS 默认 false

密码单独经过服务端加密存入 password_cipher;JSON 本身不含密码字段。更新密码使用 KEEP / CLEAR / REPLACE 语义。不得在文档样例里复制实际连接配置或密文。

来源:ik_project/yudao-cloud/yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/datasource/vo/ConnectionConfigVO.java:12;同模块 service/datasource/ReportConnectionConfigSupport.java:23、service/datasource/ReportDataSourceServiceImpl.java:143。

一致性、关系与查询模式​

  • 创建时从上下文设置租户;查询、更新、删除除租户插件外仍显式限制 tenant_id。启用查询要求 status=0 且未删除。
  • 修改和删除使用 id + tenant_id + config_version + deleted + status 条件;影响行数不为 1 即冲突。code 和 source_type 不在当前更新字段白名单中。
  • 创建捕获唯一键冲突。实测唯一键是 uk_tenant_code(tenant_id,code),不含 deleted,逻辑删除不会释放同租户编码。
  • 数据源分页支持 name 模糊匹配、code/source_type/status 精确匹配、create_time 范围,按 id 倒序。实体 XML Mapper 是空壳,没有另外的表或 JOIN。
  • 独立连接池以 (tenantId, dataSourceId) 为键,配置版本改变时淘汰旧资源;当前运行借用并发为 ES 串行、其他类型最多 min(2,maxConnections),不应把 max_connections 直接解释为所有引擎的执行并发。
  • 查询引用数据源 ID 及 configVersion;连接表与外部物理对象之间是运行时配置关系,没有本模块声明的数据库外键。

来源:ik_project/yudao-cloud/yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/service/datasource/ReportDataSourceServiceImpl.java:31、:47、:79、:157;同模块 dal/mysql/datasource/ReportDataSourceMapper.java:20、framework/datasource/ReportDataSourceResourceManager.java:17、:130、service/datasource/ReportDataSourceQueryService.java:24。

实测物理结构与差异​

采集时间:2026-09-18 20:51,库 ik_yudao_report,MySQL 8.0.35;InnoDB、utf8mb4_unicode_ci。21 个源码字段全部存在,无额外列。— 表示未声明默认值。

列实际 SQL 类型可空数据库默认/额外行为
idbigint否—;auto_increment
namevarchar(100)否—
codevarchar(64)否—
source_typevarchar(16)否—
connection_configtext否—;并非物理 JSON 列
password_ciphertext是NULL
statustinyint否0
max_connectionsint否3
connect_timeout_msint否5000
acquire_timeout_msint否5000
query_timeout_msint否30000
idle_timeout_msint否600000
max_rowsint否5000
config_versionbigint否1
remarkvarchar(500)是NULL
creatorvarchar(64)是空字符串
create_timedatetime否CURRENT_TIMESTAMP
updatervarchar(64)是空字符串
update_timedatetime否CURRENT_TIMESTAMP;更新时自动刷新
deletedbit(1)否b'0'
tenant_idbigint否0

实测索引:主键 PRIMARY(id)、唯一键 uk_tenant_code(tenant_id,code)、普通索引 idx_tenant_status_deleted(tenant_id,status,deleted);未发现外键。本次没有读取任何配置业务行,不能据表结构声称已遍历各条配置所指向的外部数据库。

完整采集字典见 Report 主库物理字典。

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答