SaaS元数据落地技术架构
一、SaaS元数据落地整体技术架构简图
Section titled “一、SaaS元数据落地整体技术架构简图”-
整体四层架构(从上至下,贯穿SaaS全生命周期)
上层:发布运营层 → 版本管理、打包构建、应用市场上架、应用升级、灰度发布
中枢:元数据管控层(核心) → 版本元、应用包元、模板元、租户元快照、变更资产元
底层:运行引擎层 → 动态CRUD渲染、权限解析、流程驱动、数据迁移、升级回滚
基座:数据存储层 → saas主应用(应用、应用版本、应用版本依赖、应用定价、插件、插件版本、租户隔离等)、子应用(项目信息、CRM、采购、人事、行政、设备、财务等) -
架构核心运行逻辑
1)研发打包:读取【版本元数据+应用导出模板元数据】生成可发布产品包;
2)市场上架:绑定产品包元数据,生成可售卖的产品初始化规则;
3)租户开通:复制标准元模板,生成租户私有元数据快照,实现隔离初始化;
4)租户升级:新旧版本元数据差分对比,增量更新、保留租户自定义配置、自动数据适配;
5)全链路可追溯:所有元数据变更绑定版本号、操作日志、租户ID。 -
核心架构特性(解决行业痛点)
- 元数据与业务代码解耦:所有自定义模型、流程、权限不靠硬编码;
- 三层元数据优先级:全局内核 < 套餐模板 < 租户私有(后者覆盖前者);
- 版本差分机制:升级只更系统变更,不覆盖租户个性化配置;
- 快照回滚机制:每版本留存元数据快照,支持一键回滚。
二、核心元数据表设计范例(可直接落地开发)
Section titled “二、核心元数据表设计范例(可直接落地开发)”说明:以下为企业级SaaS最小核心元数据表,完全适配 版本管理、打包、上架、开通、升级 全流程,字段为生产级设计,包含释义、场景用途。
库划分规范:中心元数据库(metadata_center),统一存储所有应用版本、包、模板、租户元配置,子应用(业务库)只存子应用数据(业务数据)。
表1:saas_product(SaaS应用数据表)
Section titled “表1:saas_product(SaaS应用数据表)”用途:定义所有应用基础信息,为应用上架垫定基础
| 字段名 | 字段类型 | 字段释义 | 业务场景作用 |
|---|---|---|---|
| id | bigint | 应用版本唯一主键 | 应用市场、应用定价、应用版本关联外键 |
| name | varchar(255) | 名称 | 应用名称 |
| code | varchar(32) | 编码 | 应用编码 |
| category | string | 应用分类 | 建筑行业、通用行业、制造行业等 |
| field | string | 领域 | 项目、安全、质量、技术等 |
| price | decimal | 基础价格(元) | 应用的单价/点数 |
| status | integer | 状态1-上架 0-下架 | 控制应用市场是否可上架、可下架 |
| intro | text | 介绍 | 应用的产品介绍 |
| docUrl | string | 文档地址 | 应用产品文档 |
| latestVersion | 一对一(hasOne) | 最新版本号 | 应用当前最新版本 |
| files | 一对多 | 图片 | 应用产品主题图片 |
表2:saas_version(SaaS应用版本元数据表 —— 全链路主锚点)
Section titled “表2:saas_version(SaaS应用版本元数据表 —— 全链路主锚点)”用途:定义所有应用版本,支撑打包校验、上架绑定、升级兼容判断、版本溯源
| 字段名 | 字段类型 | 字段释义 | 业务场景作用 |
|---|---|---|---|
| id | bigint | 应用版本唯一主键 | 所有包、租户、升级任务的关联外键 |
| version | string | 语义版本号(V3.2.5) | 前端展示、版本检索、版本对比 |
| publishtime | datetimeTz | 版本时间 | 版本发布的时间 |
| packagefiles | text | 打包文件 | 应用版本自动化上架的包文件 |
| isLatest | boolean | 是否最新:0否/1是 | 是否是最新版本 |
| description | text | 描述 | 应用版本描述 |
| product | 多对一(belongsTo) | 应用 | 应用的过往版本 |
三、核心落地元数据模板和元数据导出模板
Section titled “三、核心落地元数据模板和元数据导出模板”- 打包流程:
应用导出模板元数据(项目信息)示例:
{ "config": { "appName": "saas-project", "outputDir": "./export", "compress": true, "logPath": "./logs", "database": { "host": "192.168.0.243", "port": 5432, "user": "root", "password": "root", "database": "saas-project" }, "plugins": [
] }, "rules": [ { "type": "structure-collections_export", "comment": "导出指定的业务表的完整建表语句以及collections表里面的相关数据和fields字段", "tables": [ "tabProjectMainImageProcessQuantity", "tabProjectSubItem", "tabProjectImageInformation", "tabProjectGratulatory", "tabProjectKeyNodeDuration", "tabProjectMemorabilia", "tabProjectRelevantUnits", "tabProjectInfo", "fProjectRelevant" ] }, { "type": "structure", "comment": "导出指定的业务表的完整建表语句", "tables": [ "t_p12rq26j1wi", "t_igikf6nv2e3", "t_f7b4aon0g4u", "t_it2vjrjit69", "main_tabProjectSubItem_path", "main_tabProjectInfo_path" ] }, { "type": "full_data", "comment": "导出指定的全量数据表和符合模式的表-暂且用不到", "tables": [
], "patterns": [] }, { "type": "fields_export", "comment": "一键导出指定业务表的fields字段", "names": [
] }, { "type": "collections_export", "comment": "一键导出指定业务表及其fields字段-已合并不用写", "names": [
] }, { "type": "dict_export", "comment": "一键导出指定数据字典类型及其层级结构", "typeCodes": [ "Type", "EngineeringContactType", "ProjectMode", "Memorabilia", "EngineerType", "SourceType", "ImageType", "Status", "State", "Scale", "EngineeringTypeCode", "EngineeringDivisionType", "RelevantUnitsType", "TypesOfEngineeringContactNotes" ] }, { "type": "menu_export", "comment": "通过title自动导出菜单及关联数据 - 项目管理", "filter": "title = '项目管理'" }, { "type": "workflow_export", "comment": "一键导出指定工作流及其关联表", "workflowKeys": [ "or9vmcjr04f","b201v9pi3q7","3az0jy261mp","xmiiq9jjc8x" ] }, { "type": "inject_export", "comment": "一键导出指定注入点及其关联表", "injectIds": [
] }, { "type": "inject_fields_export", "comment": "一键导出指定注入字段fields数据", "reverseKeys": [
] } ]}注意:依赖注入/控制反转,现在用的是反向关联字段。本应用不用写规则,本应用与其他应用有关联则人工告知开发人员,手动处理。
- 上架流程:
应用元数据(项目信息)示例:
{ "name": "SaaS 项目管理系统", "code": "saas-project", "category": "建筑行业", "field": "项目", "price": "1200", "status":1, "latestVersion": "1.0.0", "intro": "一个功能强大的 SaaS 项目信息系统,支持项目信息管理、流程审批、数据字典等功能。", "docUrl":"https://docs.youchaoyun.cn/cn/construction/project/project/", "description": "该系统提供完整的项目管理解决方案,包括项目基本信息管理、项目相关单位管理、项目关键节点管理、项目图片信息管理、项目大事记管理、项目主形象进度管理等功能。系统还集成了工作流引擎,支持自定义审批流程和任务分配。", "files": [ "./images/ch.jpeg", "./images/gd.jpeg" ]}-
租户开通:
-
租户升级:
四、设计亮点(适配企业级SaaS核心诉求)
Section titled “四、设计亮点(适配企业级SaaS核心诉求)”- 全链路版本闭环:所有操作均绑定版本号,可追溯、可兼容、可灰度;
- 租户配置无损升级:通过 is_tenant_modified 标记区分系统配置与租户自定义配置,升级不覆盖;
- 快照化回滚:任意版本留存全量元数据快照,解决升级事故无法回滚的行业痛点;
- 标准化交付:打包、上架、开通全部依赖元数据自动执行,杜绝人工配置误差。