infra 数据库设计
本服务负责基础配置、代码生成元数据、文件与 CDN、API 日志及服务器监控。当前源码覆盖 18 张 MySQL 表和 1 个 TDengine 超级表模型;测试库实测 21 张 MySQL 表、1 个 TDengine 超级表和 8 张子表。源码预期的 MySQL 字段全部存在;额外表及额外列已单列,不能直接认定为废弃对象。
核验日期:2026-09-18。MySQL 采集时间为 20:51:05(Asia/Shanghai),TDengine 为 20:51:28。仅统一采集元数据,不读 取业务记录、不运行 Spring、构建或测试。结构存在不能证明当前服务成功读写或功能启用。
阅读入口
- 参数与数据源配置
- 代码生成元数据
- 文件、CDN 与传输记录
- API 访问与异常日志
- 服务器监控配置与时序数据
- 代码生成演示表
- Redis 与外部存储边界
- MySQL 实测字段、索引、约束字典
- TDengine 实测字段、标签与子表统计
数据源与租户边界
| 代码入口 | 运行时数据源键 | 提供配置指向 | 证据 |
|---|---|---|---|
| 普通 infra MyBatis Mapper | 默认 master | datasource.infra → ik_yudao_infra | doc/数据库设计管理/nacos/infra-server.yaml:8、datasource.yaml:48 |
| ServerMonitorDataMapper | tdServerMonitor | datasource.td_server_monitor → server_monitor | infra-server.yaml:16、datasource.yaml:375、ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/tdengine/ServerMonitorDataMapper.java:20 |
| Redis 工具及监控锁 | 共享 Redis 配置 | 键空间见 Redis 页 | infra API Redis DAO / ServerMonitorJob |
| 阿里云 SLS 查询 | yudao.infra.sls | project / log-store 由配置提供 | SlsLogServiceImpl:76/228 |
当前所用 Nacos 文件是用户提供的测试环境配置副本,不声称是正在运行进程的已加载配置。infra 主模块未发现 Elasticsearch 索引实体或直接 ES DAO;共享配置中出现 ES 不足以证明本服务拥有 ES 索引。
MySQL DO 除下载记录外均继承 BaseDO,不是 TenantBaseDO。实库仍有 10 张对应表含 tenant_id:两类日志、CDN、分片上传、服务器配置及五张演示表。租户插件通过 TenantContextHolder 获取租户并按 ignore-tables 配置控制 SQL,而不是只能依赖实体属性;证据为 ik_project/yudao-cloud/yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/db/TenantDatabaseInterceptor.java:33。因此这些列记录为“框架参与的额外物理列”,不判为错误,也不补造实体字段。
本配置忽略租户的表包括 codegen 两表、config、file_config、file、file_content、data_source_config、file_download_request,以及库中 job/job_log;server_monitor 另有 Mapper 拦截忽略注解。最终以运行时上下文和加载配置为准。
继承字段与引用约定
| BaseDO 字段 | Java 类型 | 映射行为 |
|---|---|---|
| create_time | LocalDateTime | 创建填充 |
| update_time | LocalDateTime | 创建/更新填充 |
| creator | String | 创建者标识,显式 JDBC VARCHAR |
| updater | String | 更新者标识,显式 JDBC VARCHAR |
| deleted | Boolean | @TableLogic 软删除 |
证据:ik_project/yudao-cloud/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/dataobject/BaseDO.java:30。各业务页重复列出全部继承列便于独立阅读。Java 类型与数据库物理类型分列管理,长度、默认值、可空性以实测字典为准。
完整源码对象清单
| 对象 | 引擎 | 业务页 | 源码证据 |
|---|---|---|---|
infra_codegen_column | MySQL | 代码生成元数据 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/codegen/CodegenColumnDO.java:30 |
infra_codegen_table | MySQL | 代码生成元数据 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/codegen/CodegenTableDO.java:32 |
infra_config | MySQL | 参数与数据源配置 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java:28 |
infra_data_source_config | MySQL | 参数与数据源配置 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/db/DataSourceConfigDO.java:28 |
yudao_demo01_contact | MySQL | 代码生成演示表 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo01/Demo01ContactDO.java:30 |
yudao_demo02_category | MySQL | 代码生成演示表 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo02/Demo02CategoryDO.java:30 |
yudao_demo03_course | MySQL | 代码生成演示表 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo03/Demo03CourseDO.java:28 |
yudao_demo03_grade | MySQL | 代码生成演示表 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo03/Demo03GradeDO.java:28 |
yudao_demo03_student | MySQL | 代码生成演示表 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo03/Demo03StudentDO.java:30 |
infra_file_config | MySQL | 文件、CDN 与传输记录 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/file/FileConfigDO.java:40 |
infra_file_content | MySQL | 文件、CDN 与传输记录 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/file/FileContentDO.java:32 |
infra_file | MySQL | 文件、CDN 与传输记录 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/file/FileDO.java:32 |
infra_file_download_request | MySQL | 文件、CDN 与传输记录 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/file/FileDownloadRequestDO.java:27 |
infra_cdn_config | MySQL | 文件、CDN 与传输记录 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/file/InfraCdnConfigDO.java:29 |
infra_file_part_upload | MySQL | 文件、CDN 与传输记录 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/filepart/FilePartUploadDO.java:30 |
infra_api_access_log | MySQL | API 访问与异常日志 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/logger/ApiAccessLogDO.java:46 |
infra_api_error_log | MySQL | API 访问与异常日志 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/logger/ApiErrorLogDO.java:37 |
infra_server_monitor_config | MySQL | 服务器监控配置与时序数据 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/servermonitor/InfraServerMonitorConfigDO.java:28 |
server_monitor | TDengine | 服务器监控配置与时序数据 | ik_project/yudao-cloud/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/servermonitor/ServerMonitorDataDO.java:34 |
源码范围为 yudao-module-infra-biz/src/main,不将 src/test 生成模板当实际持久化对象。常量 serialVersionUID、STABLE_NAME、OUTSIDE_CONFIG_ID 不落库;监控 tbname 为子表定位信息,响应 VO 的计算字段不作为物理列。
实库额外对象与差异
| 对象或范围 | 实测与源码对照 | 处理结论 |
|---|---|---|
| infra_job、infra_job_log、infra_region | 实库存在;当前 infra/src/main 未找到对应 DO/Mapper | 保留在实测字典;归属和当前使用情况未核验,不能判为可删除 |
| infra_file_config.cdn_config | 实库有列,FileConfigDO 未映射 | 记录未映射列;当前 CDN 源码使用独立配置与 cdn_config_id |
| 10 张表的 tenant_id | 物理列存在,DO 未声明 | 按上文租户插件与 ignore-tables 解释;逐表可见实测字典 |
| infra_file.classification | 当前 int | 不沿用旧环境 tinyint 的历史结论 |
| infra_file.original_md5 | char(32),可空,idx_original_md5 | 当前源码字段与物理结构均存在 |
| infra_api_access_log.file_ids | json,可空 | JacksonTypeHandler 的文件 ID 数组;与附件的逻辑关联 |
| server_monitor | 47 普通列 + server_name TAG,8 子表 | 指标字段全部对应;tbname 不是普通数据列 |
| 监控写入及调度 | Job 调 BaseMapper.insert,@Scheduled 注释;未找到本模块显式建子表 SQL | 结构采集不能证明自动建表或当前采集运行,保留运行核验项 |
实库约束读取结果:21 表均有主键,infra_server_monitor_config 额外有 uk_name;未返回物理外键约束。各页箭头均表示逻辑关联。每张表的二级索引已在业务页摘要及实测字典列出,查询过滤条件不等同于索引。
本轮没有连接失败项。未核验项为运行时有效配置、业务写入、Redis 实际键/TTL、SLS 索引、文件存储本体,以及无源码映射三表的现行归属。