历史设计输入:现有 V1-V24 迁移继续保留,新的企业组织模型、AI 模块和数据库约束以
V0.1_EXECUTION_BLUEPRINT.md为准。
后端已经改成多模块,因此数据库表也必须按模块边界重新定义“归属关系”。
但这里说的“重设计”不是一上来拆成多库多实例,而是:
- 逻辑上按模块拥有表
- 命名上按模块前缀分区
- 迁移上按模块顺序演进
- 物理上当前仍可先落在同一个
saas_basics库里
也就是说:
- 现在适合做“单库多模块”
- 不适合现在就做“多库微服务”
如果后端已经是多模块,但数据库还是“一整坨公共表”,很快会出现:
- 模块责任不清
- 改一个表影响多个模块
- mapper 和 service 边界变脏
- Flyway 迁移不可维护
- 后续拆服务几乎无法平滑演进
所以多模块架构必须配套“模块化数据库边界”。
- 当前统一使用一个 MySQL 8.3 数据库:
saas_basics - 当前阶段不强制拆 schema
- 当前阶段不强制按模块拆库
每张表必须有清晰的模块归属,只允许一个主模块拥有该表。
其它模块如果用到该数据:
- 通过服务接口访问
- 通过只读查询 DTO 访问
- 不要把表随意当成“公共资源”
Flyway 后续建议按模块化命名追加迁移:
V2_01__tenant_xxx.sqlV2_02__iam_xxx.sqlV2_03__system_xxx.sqlV2_04__integration_xxx.sql
当前的:
V1__enterprise_saas_foundation.sql
仍作为第一版总基线保留。
模块:
saas-basics-module-tenant
主表:
plat_tenantplat_tenant_packageplat_tenant_quotaplat_tenant_appplat_tenant_settingplat_feature_flag
职责:
- 租户生命周期
- 套餐与配额
- 应用开通
- 功能开关
模块:
saas-basics-module-iam
主表:
iam_useriam_user_identityiam_employeeiam_departmentiam_positioniam_roleiam_role_groupiam_user_groupiam_user_group_memberiam_user_roleiam_role_menuiam_role_apiiam_data_scopeiam_menuiam_api_resourceiam_password_policyiam_login_policyiam_auth_policyiam_sessioniam_password_historyiam_login_fail_stat
职责:
- 账号
- 员工
- 组织
- 角色
- API 权限
- 数据权限
模块:
saas-basics-module-system
主表:
sys_dict_typesys_dict_itemsys_configsys_i18n_messagesys_sequence_rule
职责:
- 字典
- 配置
- 国际化
- 编码规则
模块:
saas-basics-module-integration
主表:
int_datasourceint_datasource_propint_api_clientint_webhook_endpointint_integration_logint_datasource_health_log
职责:
- 数据源
- API 客户端
- Webhook
- 集成日志
模块:
saas-basics-module-file
主表:
file_storagefile_bucketfile_objectfile_relationfile_access_logfile_upload_session
职责:
- 存储器
- 文件对象
- 文件引用
- 文件审计
模块:
saas-basics-module-scheduler
主表:
sched_executorsched_jobsched_job_triggersched_job_logsched_job_alarm
职责:
- 执行器
- 任务
- 触发器
- 执行日志
模块:
saas-basics-module-codegen
主表:
gen_projectgen_modulegen_tablegen_columngen_indexgen_templategen_run_recordgen_sql_artifact
职责:
- 元数据建模
- 模板定义
- SQL 与代码生成记录
模块:
saas-basics-module-audit
主表:
audit_login_logaudit_operation_logaudit_eventsec_risk_rulesec_blacklistaudit_security_incident
职责:
- 登录审计
- 操作审计
- 风控规则
- 黑名单
当前 SQL 已经进入第二阶段:V1 提供全量基线,V2 已经开始按模块补齐增强表。
但如果按多模块长期演进,仍建议继续优化:
- 套餐能力建议拆成更细粒度的套餐功能表
- 配额建议增加周期维度和超限策略
V2已补齐用户组、密码策略、登录策略、授权策略V3已补齐登录会话、密码历史、登录失败统计- 角色继承、授权模板、会话明细表还可以继续补
- 功能开关未来建议从
plat_feature_flag再加规则明细表 - 字典建议增加覆盖链模型
V2已补齐数据源检测记录表- 凭证轮换历史表还没补
V2已补齐上传会话表- 文件版本表建议从
file_object中再抽一个版本明细表
V2已补齐任务告警规则表- 任务补偿策略表还没补
V2已补齐 SQL 产物表- 模板变量、模板组、生成规则表还可以继续细化
V2已补齐安全事件表- 黑名单命中记录和事件处置流转表还可以继续细化
下一步不是推倒重来,而是这样推进:
- 保留当前 V1 基线 SQL 不动
- 后续新表和表结构调整按模块迁移追加
- 代码层严格按模块拥有表
- 先把
tenant / iam / system / integration / file / scheduler / codegen的基础 CRUD 做实 - 之后继续细化认证、会话、安全事件和模板执行链路
所以答案是:
- 是,表必须按多模块重新定义边界
- 但不是现在就拆成多个数据库
- 当前最优解是“单库、按模块拥有表、按模块演进迁移”