# 大数据树形结构 demo **Repository Path**: zhoujianjun/big-data-tree ## Basic Information - **Project Name**: 大数据树形结构 demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-26 - **Last Updated**: 2026-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Tree Demo Go + Gin + PostgreSQL 后端与 Vue + Vite 前端的树形结构全栈 Demo。 ## 项目结构 ``` . ├── server/ # Go 后端(Gin + GORM + PostgreSQL) ├── web/ # Vue 3 前端(BigTree 组件) ├── package.json # 根目录脚本,一键启动前后端 ├── .env.example # 后端环境变量示例 └── README.md ``` ## 前置条件 - Go 1.21+ - Node.js 18+ - PostgreSQL 14+ ### Go 国内镜像(推荐) 已在本机写入 Go 全局配置。其他机器或新环境可执行: ```bash npm run setup:go # 或 bash server/scripts/setup-goproxy.sh ``` 等价命令: ```bash go env -w GOPROXY=https://goproxy.cn,direct go env -w GOSUMDB=sum.golang.google.cn ``` 验证: ```bash go env GOPROXY GOSUMDB ``` ## 快速开始 ### 1. 创建数据库 ```bash createdb tree_demo # 或 psql -U postgres -c "CREATE DATABASE tree_demo;" ``` 若之前跑过旧 seed,需先重置: ```sql DROP DATABASE tree_demo; CREATE DATABASE tree_demo; ``` ### 2. 配置环境变量 ```bash cp .env.example .env ``` 按本地 PostgreSQL 修改 `.env` 中的用户名、密码等。 ### 数据库一键建表 + 灌数 配置好 `.env` 后: ```bash # 建表 + 默认 demo-1k 测试数据 npm run db:init # 仅建表 npm run db:init:migrate # 仅灌数(表需已存在) npm run db:init:seed # 小规模示例树(不 truncate,表有数据则跳过) npm run db:seed:basic ``` 可选环境变量: ```bash PRESET=demo-100 bash server/scripts/init-remote-db.sh CREATE_DB=true bash server/scripts/init-remote-db.sh # 需 psql 客户端 + 建库权限 ``` 若账号无建库权限,请先在 PostgreSQL 中执行 `server/scripts/sql/01-create-database.sql`。 ### 3. 安装依赖 ```bash # 根目录(并发启动工具) npm install # 前端 npm run install:web # 或使用 pnpm:pnpm install --dir web # 后端 cd server && go mod tidy ``` ### 4. 启动开发环境 **一键启动前后端:** ```bash npm run dev ``` - 前端:http://localhost:5173(Vite 开发服务器,/api 代理到后端) - 后端:http://localhost:8080 **分别启动:** ```bash npm run dev:server # 仅后端 npm run dev:web # 仅前端 ``` ### 5. 生产构建(可选) ```bash npm run build # 构建前端到 web/dist cd server && go run . ``` 构建完成后,后端会自动托管 `web/dist` 静态资源,访问 http://localhost:8080 即可。 ## 千万级测试数据 数据命名规则与前端 mock 一致,例如: - 根节点:`L1 分组 1(10,000,000 子目录)` - 子目录:`L2 #1-1(10,000,000 子目录)` - 内容节点:`L4 节点 #1-1-1-1` ### 预设 | 预设 | 说明 | 约节点数 | 约叶子数 | |------|------|----------|----------| | `mock-1m` | 快速验证 | 11 万 | 100 万 | | `mock-10m` | 默认千万级 | 1010 万 | 1000 万 | | `mock-10m-with-elements` | 含内容元素 | 1010 万 + 1000 万元素 | 1000 万 | 默认 `mock-10m` 结构:`10` 个根 × `100 × 100 × 100` 四层展开。 ### 导入步骤 ```bash # 建议重置数据库后重新创建 tree_demo cd server go mod tidy # 千万级目录(约 1010 万节点,耗时取决于机器,可能 10~30 分钟) go run ./cmd/seedbulk -preset=mock-10m # 或从项目根目录 npm run seed:bulk:10m ``` ### 自定义规模 ```bash go run ./cmd/seedbulk \ -roots=100 \ -fanout=100,100,10 \ -elements-per-leaf=0 \ -clear=true ``` - `-roots`:根节点数量 - `-fanout`:每层分支数,例如 `100,100,10` 表示 3 层子目录 - `-elements-per-leaf`:每个叶子目录下的内容数(`1` 约增加 1000 万 elements 记录) - `-clear=false`:不清空已有数据(一般不建议) 导入完成后启动服务即可测试分页加载: ```bash npm run dev ``` ## 主要 API | 方法 | 路径 | 说明 | |------|------|------| | GET | `/health` | 健康检查 | | GET | `/api/big-tree/roots` | 分页根节点 | | GET | `/api/big-tree/nodes/:id/children` | 分页子节点 | | POST | `/api/big-tree/nodes` | 创建目录 | | PUT | `/api/big-tree/nodes/:id` | 重命名 | | DELETE | `/api/big-tree/nodes/:id` | 级联删除 | | GET | `/api/big-tree/content` | 内容分页 | 完整 API 见 `server/handler/` 目录。