{# 如需走 Google Fonts 官方 CDN,可换用: #}
学习专区 🕒 2026-09-06 13:48 ✎ 2026-09-06 13:51

多维数据管理中台(dms)

多维数据管理系统(DMS)

分享一个类飞书多维表格的通用、自托管的多维数据管理系统:将 MySQL 中的数据以类似现代多维表格的方式可视化展示与管理,并通过 REST API 供自动化脚本、CI/CD 或其他内部系统进行精确查询、批量写入与更新。

系统面向两类使用者:

  1. 业务人员:无需了解数据库,即可浏览项目与数据表、按字段精确/模糊查询、筛选、排序、翻页,并导出 Excel。
  2. 开发与自动化:通过统一的 REST API(API 密钥认证)完成数据的增删改查、批量写入、精确 Upsert 与公式计算。

1. 功能总览

角色能力只读用户(VIEWER)登录、浏览项目/数据表、查看记录(每页 300 行)、精确查询、包含搜索、多条件筛选、排序、Excel 导出开发者(DEVELOPER)项目/数据表/字段/记录 CRUD、公式(FORMULA)、API 密钥、外部表注册、Query DSL、批量写入、Upsert、Excel 导入/导出管理员(ADMIN)全部能力 + 用户管理、角色与权限管理、API 密钥管理、审计日志API / 自动化脚本API 密钥认证:精确查询、Find / Find-One、Insert / Update / Delete、Batch、Exact Upsert(含组合字段匹配)

核心设计:

  1. Excel 导入:数据表工具栏「导入 Excel」上传 .xlsx,第一行表头按「字段标识 / 字段名称」自动匹配数据表字段;单选/多选支持选项值与显示名两种写法;未匹配列与公式列自动跳过并提示;逐行校验(类型/选项/日期/唯一约束/公式),失败行收集错误不影响其余行。
  2. 批量删除:勾选记录后「批量删除(N)」一键删除(仅限本表记录,事务执行,需删除权限)。
  3. 分页(每页 300 行):数据表每页固定 300 行;翻页按钮(上一页/下一页/页码)始终显示在最后一行数据下方,数据满 300 行自动新增一页,单页时按钮自动禁用。
  4. 精确查询(EXACT)与包含查询(CONTAINS)严格分离:eq 永远实现为大小写敏感精确匹配(BINARY / JSON 精确比较),绝不退化为 LIKE;无结果返回 records: [],不自动模糊兜底。
  5. SYSTEM 动态表:元数据 + JSON Record(不执行 CREATE TABLE);EXTERNAL 物理表:通过 information_schema 白名单注册、只读查询。
  6. FORMULA 公式引擎:受限制解析器(无 eval / new Function),支持 +-*/()、比较、SUM/AVG/PRODUCT/DIVIDE/MAX/MIN,依赖图拓扑排序计算、循环引用检测、结果物化存储、定义修改后自动重算历史数据。
  7. 唯一约束:单字段 is_unique + 组合唯一约束(如 shop + sku),数据库级原子强校验,大小写敏感。
  8. 统一响应:成功 { success: true, data } / 失败 { success: false, error: { code, message } }。


2. 技术栈

后端:Node.js · NestJS 11 · TypeScript(strict)· Prisma ORM 6 · MySQL 8.x · JWT + Refresh Token(轮换)· class-validator / class-transformer · Swagger / OpenAPI · Helmet / CORS / 限流 · ExcelJS 流式读写 · bcryptjs

前端:Vue 3 · TypeScript · Vite · Composition API · Vue Router · Pinia · Axios · Element Plus · vxe-table

部署:Docker Compose(mysql / backend / frontend / nginx)


3. 环境要求

  1. Node.js ≥ 20
  2. npm ≥ 10
  3. MySQL 8.x(本地开发可用 Docker 或已有实例)
  4. Docker + Docker Compose(部署)


部署方法可移至:orangefive/dms: 多维数据管理系统(DMS)- 可自托管的 MySQL 数据可视化与管理平台