BlueDB 是一个面向多数据库的审核与运维管理平台,围绕实例纳管、SQL 查询 / 执行、工单审核、备份、权限申请、会话治理等场景提供一站式能力。平台采用前后端分离架构:
- 前后端分离基于 gin-vue-admin v2.6.1 版本构建,提供用户 / 菜单 / 角色 / 字典 / Casbin RBAC 等通用能力。
- 数据库管理能力参考 Archery 的设计实现,适配多种数据库的查询和执行等。
- 测试用户名:
admin - 测试密码:
123456 - 默认后端端口:
8888 - 默认前端端口:
8080 - 默认 Swagger 地址:http://localhost:8888/swagger/index.html
- 健康检查地址:http://localhost:8888/health
- 多数据库纳管:支持 MySQL、ClickHouse、MongoDB、Redis 等常见数据库的实例管理与操作。
- SQL 查询与执行:提供在线查询、执行、会话查看、空间分析、备份管理等能力,集成 Monaco 编辑器与 SQL 格式化。
- 工单审核工作流:支持 SQL 工单提交、风险核查、审核、执行与回滚的全流程闭环。
- 权限体系:基于 JWT + Casbin RBAC,提供菜单、按钮、接口三级权限,叠加资源组与实例库级授权。
- 监控与告警:集成 Prometheus 指标、操作审计日志、慢查询 / 会话诊断。
- 私有 DNS / 资源编排:对接阿里云 PrivateZone 等云服务,支持 DNS 与实例资源联动。
后端(Go 1.22)
- Web 框架:Gin
- ORM:GORM(MySQL / PostgreSQL / Oracle / MsSQL / SQLite)
- 鉴权:JWT + Casbin
- 配置:Viper,日志:Zap
- 缓存:go-redis
- MongoDB:qmgo + 官方 driver
- API 文档:Swag
- 监控:Prometheus Client、gopsutil
- 对象存储:阿里云 OSS、AWS S3、腾讯云 COS、华为云 OBS、七牛 KODO
- 定时任务:robfig/cron
- ClickHouse、MongoDB、MsSQL、PostgreSQL、SQLServer 等多引擎驱动
前端(Vue 3 + Vite)
- 核心:Vue 3 + Vite 4
- UI:Element Plus、Tailwind CSS
- 状态管理:Pinia
- 路由:Vue Router
- 编辑器:Monaco Editor、TinyMCE、WangEditor
- 图表:ECharts + vue-echarts
- 文档预览:
@vue-office/docx、@vue-office/excel、@vue-office/pdf - HTTP:Axios
- Node 版本 > v16.8.3(推荐使用 node 16 / 18 LTS)
- Go 版本 >= v1.22(go.mod 中指定 go 1.22)
仓库根目录已提供 start-dev.ps1,双击或执行以下命令可同时启动前后端:
pwsh -File .\start-dev.ps1该脚本会分别在两个窗口中执行:
- 构建并运行
server/server.exe - 运行
web的npm run serve
# 进入 server 文件夹
cd server
# 初始化 Go 模块及依赖(首次)
go generate
# 编译
go build -o server main.go
# Windows 环境
go build -o server.exe main.go
# 运行
./server # Linux / macOS
./server.exe # Windows
# 调试
go run ./main.go后端默认读取同目录下的 config.yaml(容器环境可使用 config.docker.yaml),关键配置项包括:
system:监听端口(默认8888)、数据库类型、限流、是否启用 Redis / Mongomysql/pgsql/mssql/oracle/sqlite:系统主库连接redis/mongo:缓存与文档库jwt:Token 签名、有效期zap:日志输出策略(目录、级别、格式)captcha:验证码策略cors:跨域白名单prometheus:监控对接地址aliyun-oss/aws-s3/tencent-cos/hua-wei-obs/qiniu/local:对象存储go-inception-dns:SQL 审核引擎地址
# 进入 web 文件夹
cd web
# 安装依赖
npm install
# 启动开发服务器(带热更新,默认 http://localhost:8080)
npm run serve
# 生产构建
npm run build
# 本地预览生产构建
npm run preview
# 大型项目构建时可使用内存限制修复脚本
npm run limit-build开发环境变量位于 web/.env.development:
VITE_CLI_PORT=8080 # 前端服务端口
VITE_SERVER_PORT=8888 # 后端服务端口
VITE_BASE_API=/api # 代理前缀
VITE_BASE_PATH=http://127.0.0.1 # 后端 host
生产环境变量位于 web/.env.production,默认通过 Nginx 反向代理 /api 到后端。
go install github.com/swaggo/swag/cmd/swag@latestcd server
swag init执行后 server/docs 目录下的 docs.go、swagger.json、swagger.yaml 会被更新,启动后端后访问 http://localhost:8888/swagger/index.html 查看。
使用 VSCode 打开根目录下的工作区文件 gin-vue-admin.code-workspace,侧栏会出现三个虚拟目录:backend、frontend、root。
"运行和调试" 面板提供三个 task:
Backend:启动后端Frontend:启动前端Both (Backend & Frontend):复合任务,同时启动前后端
工作区已内置 go.toolsEnvVars,默认将 GOPROXY 配置为 https://goproxy.cn,direct。多 Go 版本环境可通过 go.gopath、go.goroot 指定版本:
"go.gopath": null,
"go.goroot": null,仓库 deploy/ 目录下提供了容器化编排模板:
deploy/docker/Dockerfile、entrypoint.sh:一体化镜像构建。deploy/docker-compose/docker-compose.yaml:生产编排。deploy/docker-compose/docker-compose-dev.yaml:开发编排。deploy/kubernetes/server、deploy/kubernetes/web:K8s 部署资源(Deployment / Service 等)。
容器构建入口也可使用根目录 Makefile:
make build # 容器内构建前后端
make build-local # 本机构建前后端
make build-web # 仅构建前端
make build-server # 仅构建后端
make image # 构建前后端二合一镜像
make plugin PLUGIN=xxx # 打包指定插件| 领域 | 选型 | 说明 |
|---|---|---|
| 后端框架 | Gin + GORM | 轻量高性能 HTTP 框架 + 主流 ORM |
| 权限体系 | JWT + Casbin | Token 鉴权 + RBAC 细粒度授权 |
| 前端框架 | Vue 3 + Vite + Element Plus | 现代化组合式 API + 快速构建工具 |
| 状态管理 | Pinia | Vue 官方推荐状态管理库 |
| SQL 编辑器 | Monaco Editor | VSCode 同款编辑体验 |
| API 文档 | Swagger (swaggo) | 代码注释即文档 |
| 监控 | Prometheus | 指标采集与告警对接 |
| 缓存 | Redis | 会话 / 黑名单 / 热点数据 |
| 文档型存储 | MongoDB | 查询日志、结构化审计 |
| 对象存储 | 阿里云 OSS / 腾讯云 COS / AWS S3 / 华为云 OBS / 七牛 / 本地 | 多云适配 |
| 配置管理 | Viper + YAML | 支持多环境热加载 |
| 日志 | Zap + lumberjack | 结构化日志与滚动切割 |
graph TB
U[用户浏览器] --> W[Vue3 前端 web]
W -->|/api 代理| S[Gin 后端 server]
S --> MW[中间件: JWT/Casbin/Cors/Logger/Limit]
MW --> R[路由层 router]
R --> API[api/v1]
API --> SVC[service 业务层]
SVC --> MODEL[model 数据模型]
SVC --> UTILS[utils 能力封装]
MODEL --> GORM[GORM]
GORM --> DB[(系统主库: MySQL/PgSQL/MsSQL/Oracle/SQLite)]
SVC --> RC[Redis]
SVC --> MG[MongoDB]
SVC --> TARGET[(被管数据库: MySQL/PostgreSQL/ClickHouse/Mongo/Redis/MsSQL/Oracle)]
SVC --> OSS[对象存储 阿里云/腾讯/华为/七牛/AWS/本地]
SVC --> PROM[Prometheus]
S --> SWAG[Swagger 文档]
S --> TASK[定时任务 cron]
graph TB
MAIN[main.js 入口] --> APP[App.vue]
MAIN --> ROUTER[router/index.js]
MAIN --> PINIA[pinia Store]
MAIN --> DIRECTIVE[directive/auth]
ROUTER --> PERM[permission.js 路由守卫]
PERM --> PINIA
APP --> LAYOUT[view/layout]
LAYOUT --> ASIDE[aside 菜单]
LAYOUT --> HEADER[头部: 搜索/全屏/设置]
LAYOUT --> VIEW[业务视图 view/*]
VIEW --> SQL[SQL 管理: Query/Execute/Workflow/Session/Space/Backup/Instance/Document]
VIEW --> PRIV[权限申请 permission]
VIEW --> ADMIN[superAdmin: 用户/角色/菜单/字典/API/操作记录]
VIEW -->|axios| API[src/api/*]
API --> REQ[utils/request.js]
REQ -->|/api 代理| BACKEND[Gin 后端]
bluedb
├── deploy # 容器化与 K8s 部署资源
│ ├── docker # 一体化 Dockerfile
│ ├── docker-compose # 开发 / 生产 compose 文件
│ └── kubernetes # server / web 的 K8s 部署模板
├── docs # 项目文档与图片(含《提交规范》)
├── server # 后端 Go 服务(gin-vue-admin)
│ ├── api/v1 # HTTP 接口层(example / sql / system)
│ ├── config # 配置结构体定义
│ ├── core # Viper / Zap / HTTP 服务启动
│ ├── docs # Swagger 生成产物
│ ├── global # 全局对象(配置 / DB / 日志)
│ ├── initialize # Gorm / Redis / Mongo / Router / Timer 初始化
│ ├── middleware # JWT / Casbin / 跨域 / 限流 / 日志 / 操作审计
│ ├── model # 数据模型(common / example / sql / system)
│ ├── plugin # 插件(plugin-tool / WebSocket)
│ ├── resource # 自动代码模板、迁移 SQL、静态页面
│ ├── router # 路由注册
│ ├── service # 业务逻辑
│ ├── source # 初始化数据(菜单/角色/用户/字典/casbin 等)
│ ├── task # 定时与后台任务
│ ├── utils # 工具封装(DB 能力、OSS、AST、JWT、Prometheus 等)
│ ├── config.yaml # 本地配置
│ ├── config.docker.yaml # 容器配置
│ ├── Dockerfile # 后端镜像
│ ├── go.mod / go.sum # Go 依赖
│ └── main.go # 程序入口
├── web # 前端 Vue3 项目
│ ├── src
│ │ ├── api # 接口请求(sql / mongo / clickhouse / redis / user / system 等)
│ │ ├── assets # 静态资源(图标、Logo、插画)
│ │ ├── components # 通用组件(Monaco 编辑器、富文本、上传、Office 预览等)
│ │ ├── core # 站点配置与全局注册
│ │ ├── directive # 自定义指令(按钮权限)
│ │ ├── hooks # 组合式 hooks
│ │ ├── pinia # 状态管理(user / router / dictionary)
│ │ ├── router # 路由入口
│ │ ├── style # 全局样式与 Element Plus 覆盖
│ │ ├── utils # axios 封装、字典、异步路由等工具
│ │ ├── view # 业务视图(sqlQuery / sqlExecute / sqlWorkflow / superAdmin...)
│ │ ├── App.vue # 根组件
│ │ ├── main.js # 入口
│ │ └── permission.js # 路由守卫
│ ├── vitePlugin # 自定义 Vite 插件(svg、定位、全量引入)
│ ├── Dockerfile # 前端镜像
│ ├── vite.config.js # Vite 构建配置
│ ├── .env.development # 开发环境变量
│ ├── .env.production # 生产环境变量
│ └── package.json # 依赖与脚本
├── Makefile # 容器 / 本地构建、镜像与插件打包
├── start-dev.ps1 # Windows 一键启动脚本
├── gin-vue-admin.code-workspace # VSCode 工作区
└── README.md
- 用户 / 角色 / 菜单 / 接口 / 按钮权限:基于 Casbin 的多维 RBAC。
- 字典管理:系统字典与字典明细,支撑前端选项枚举。
- 操作审计:自动采集 API 调用日志。
- JWT 黑名单、多点登录控制、验证码与登录限流。
- 字典、菜单、角色、用户、Casbin 等初始化数据位于
server/source/system。
- 实例 CRUD:支持 MySQL / PostgreSQL / Oracle / MsSQL / ClickHouse / MongoDB / Redis。
- 资源组管理:多团队 / 多业务线资源隔离,用户加入资源组后获得对应实例库的访问能力。
- 用户实例库权限申请与审批(
user_apply_instance_database、user_instance_database)。 - 私有 DNS(
sql_private_zone):对接阿里云 PrivateZone 等能力,实现实例与内部域名联动。
- 在线查询:
sqlQuery、mongoQuery、clickhouseQuery、redisQuery,统一提供 Monaco 编辑器、SQL 格式化、结果导出。 - SQL 执行:
sqlExecute、mongoExecute、clickhouseExecute,支持多语句提交与风险拦截。 - 会话管理:
sqlSession、redisSession,查看 / kill 活跃会话。 - 空间分析:
sqlSpace、mongoSpace、clickhouseSpace,库表级空间占用。
- SQL 工单(
sqlWorkflow):提交、审核、执行、回滚闭环。 - 风险核查清单(
sqlRiskChecklist):提交前的规则化校验与风险提示。 - 备份管理(
sqlBackup):执行备份、版本管理、对象存储归档。 - 查询日志(
queryLog):统一记录查询与执行动作,支撑追溯与审计。
- SQL 文档(
sqlDocument):以富文本形式沉淀表结构、业务说明。 - Office 预览(
@vue-office/*):支持 docx / excel / pdf 在线查看。 - 富文本 / Markdown / TinyMCE / WangEditor 多编辑器可选。
- Prometheus 指标对接(
utils/prometheus.go,配置项prometheus.url)。 - Zap 滚动日志,按级别输出到
server/log/目录。 - Cron 定时任务(
task/、initialize/timer.go),可编排周期性清理、同步作业。 - 多云对象存储:
utils/upload封装本地、阿里云、腾讯云、华为云、七牛、AWS。
- 中间件链:
middleware/jwt.go、casbin_rbac.go、cors.go、limit_ip.go、operation.go、error.go。 - 插件机制:
server/plugin/ws内置 WebSocket 插件,make plugin PLUGIN=xxx可将server/plugin/<name>与web/src/plugin/<name>打包分发。 - 自动代码生成:
server/resource/autocode_template提供后端模型 / 路由 / 服务与前端页面模板,通过autocode配置项驱动。
- 前后端分离框架:https://github.com/flipped-aurora/gin-vue-admin
- 数据库管理功能参考:https://github.com/hhyo/Archery
- 提交规范:见
docs/提交规范.md