Skip to content

RankRao/BlueDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

1. 基本介绍

BlueDB 是一个面向多数据库的审核与运维管理平台,围绕实例纳管、SQL 查询 / 执行、工单审核、备份、权限申请、会话治理等场景提供一站式能力。平台采用前后端分离架构:

  • 前后端分离基于 gin-vue-admin v2.6.1 版本构建,提供用户 / 菜单 / 角色 / 字典 / Casbin RBAC 等通用能力。
  • 数据库管理能力参考 Archery 的设计实现,适配多种数据库的查询和执行等。

1.1 项目介绍

1.2 主要特性

  • 多数据库纳管:支持 MySQL、ClickHouse、MongoDB、Redis 等常见数据库的实例管理与操作。
  • SQL 查询与执行:提供在线查询、执行、会话查看、空间分析、备份管理等能力,集成 Monaco 编辑器与 SQL 格式化。
  • 工单审核工作流:支持 SQL 工单提交、风险核查、审核、执行与回滚的全流程闭环。
  • 权限体系:基于 JWT + Casbin RBAC,提供菜单、按钮、接口三级权限,叠加资源组与实例库级授权。
  • 监控与告警:集成 Prometheus 指标、操作审计日志、慢查询 / 会话诊断。
  • 私有 DNS / 资源编排:对接阿里云 PrivateZone 等云服务,支持 DNS 与实例资源联动。

1.3 技术栈

后端(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)

2. 使用说明

- Node 版本 > v16.8.3(推荐使用 node 16 / 18 LTS)
- Go 版本 >= v1.22(go.mod 中指定 go 1.22)

2.1 快速启动(Windows)

仓库根目录已提供 start-dev.ps1,双击或执行以下命令可同时启动前后端:

pwsh -File .\start-dev.ps1

该脚本会分别在两个窗口中执行:

  1. 构建并运行 server/server.exe
  2. 运行 webnpm run serve

2.2 server 项目

# 进入 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 / Mongo
  • mysql / 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 审核引擎地址

2.3 web 项目

# 进入 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 到后端。

2.4 Swagger 自动化 API 文档

2.4.1 安装 swag

go install github.com/swaggo/swag/cmd/swag@latest

2.4.2 生成 API 文档

cd server
swag init

执行后 server/docs 目录下的 docs.goswagger.jsonswagger.yaml 会被更新,启动后端后访问 http://localhost:8888/swagger/index.html 查看。

2.5 VSCode 工作区

2.5.1 开发

使用 VSCode 打开根目录下的工作区文件 gin-vue-admin.code-workspace,侧栏会出现三个虚拟目录:backendfrontendroot

2.5.2 运行 / 调试

"运行和调试" 面板提供三个 task:

  • Backend:启动后端
  • Frontend:启动前端
  • Both (Backend & Frontend):复合任务,同时启动前后端

2.5.3 settings

工作区已内置 go.toolsEnvVars,默认将 GOPROXY 配置为 https://goproxy.cn,direct。多 Go 版本环境可通过 go.gopathgo.goroot 指定版本:

"go.gopath": null,
"go.goroot": null,

2.6 Docker / Kubernetes 部署

仓库 deploy/ 目录下提供了容器化编排模板:

  • deploy/docker/Dockerfileentrypoint.sh:一体化镜像构建。
  • deploy/docker-compose/docker-compose.yaml:生产编排。
  • deploy/docker-compose/docker-compose-dev.yaml:开发编排。
  • deploy/kubernetes/serverdeploy/kubernetes/web:K8s 部署资源(Deployment / Service 等)。

容器构建入口也可使用根目录 Makefile

make build              # 容器内构建前后端
make build-local        # 本机构建前后端
make build-web          # 仅构建前端
make build-server       # 仅构建后端
make image              # 构建前后端二合一镜像
make plugin PLUGIN=xxx  # 打包指定插件

3. 技术选型

领域 选型 说明
后端框架 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 结构化日志与滚动切割

4. 项目架构

4.1 系统架构图

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]
Loading

4.2 前端详细设计图

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 后端]
Loading

4.3 目录结构

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

5. 主要功能

5.1 系统管理(server/*/system

  • 用户 / 角色 / 菜单 / 接口 / 按钮权限:基于 Casbin 的多维 RBAC。
  • 字典管理:系统字典与字典明细,支撑前端选项枚举。
  • 操作审计:自动采集 API 调用日志。
  • JWT 黑名单、多点登录控制、验证码与登录限流。
  • 字典、菜单、角色、用户、Casbin 等初始化数据位于 server/source/system

5.2 实例与资源(sqlInstance / resourceGroup

  • 实例 CRUD:支持 MySQL / PostgreSQL / Oracle / MsSQL / ClickHouse / MongoDB / Redis。
  • 资源组管理:多团队 / 多业务线资源隔离,用户加入资源组后获得对应实例库的访问能力。
  • 用户实例库权限申请与审批(user_apply_instance_databaseuser_instance_database)。
  • 私有 DNS(sql_private_zone):对接阿里云 PrivateZone 等能力,实现实例与内部域名联动。

5.3 SQL 查询与执行

  • 在线查询:sqlQuerymongoQueryclickhouseQueryredisQuery,统一提供 Monaco 编辑器、SQL 格式化、结果导出。
  • SQL 执行:sqlExecutemongoExecuteclickhouseExecute,支持多语句提交与风险拦截。
  • 会话管理:sqlSessionredisSession,查看 / kill 活跃会话。
  • 空间分析:sqlSpacemongoSpaceclickhouseSpace,库表级空间占用。

5.4 工单与审核

  • SQL 工单(sqlWorkflow):提交、审核、执行、回滚闭环。
  • 风险核查清单(sqlRiskChecklist):提交前的规则化校验与风险提示。
  • 备份管理(sqlBackup):执行备份、版本管理、对象存储归档。
  • 查询日志(queryLog):统一记录查询与执行动作,支撑追溯与审计。

5.5 文档与协作

  • SQL 文档(sqlDocument):以富文本形式沉淀表结构、业务说明。
  • Office 预览(@vue-office/*):支持 docx / excel / pdf 在线查看。
  • 富文本 / Markdown / TinyMCE / WangEditor 多编辑器可选。

5.6 监控与运维

  • Prometheus 指标对接(utils/prometheus.go,配置项 prometheus.url)。
  • Zap 滚动日志,按级别输出到 server/log/ 目录。
  • Cron 定时任务(task/initialize/timer.go),可编排周期性清理、同步作业。
  • 多云对象存储:utils/upload 封装本地、阿里云、腾讯云、华为云、七牛、AWS。

5.7 安全与扩展

  • 中间件链:middleware/jwt.gocasbin_rbac.gocors.golimit_ip.gooperation.goerror.go
  • 插件机制:server/plugin/ws 内置 WebSocket 插件,make plugin PLUGIN=xxx 可将 server/plugin/<name>web/src/plugin/<name> 打包分发。
  • 自动代码生成:server/resource/autocode_template 提供后端模型 / 路由 / 服务与前端页面模板,通过 autocode 配置项驱动。

6. 参考

About

面向多数据库的审核与运维管理平台,围绕实例纳管、SQL 查询 / 执行、工单审核、备份、权限申请、会话治理等场景提供一站式能力。平台采用前后端分离架构

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors