基于Spring Boot + Vue3的高效数据压缩与管理平台,支持CSV/TSV/TBL等文本格式文件的Parquet转换和ZSTD压缩。
本项目是对原Python数据压缩工具的完整重构,采用现代化的Web架构:
- 后端: Spring Boot 3.1.5 + Java 17
- 前端: Vue 3 + Element Plus + ECharts
- 压缩技术: Apache Parquet + ZSTD算法
- ✅ 支持CSV、TSV、TBL等多种文本格式
- ✅ 自动检测文件分隔符和列数
- ✅ 分块读取,避免内存溢出
- ✅ Parquet列式存储优化
- ✅ ZSTD高效压缩(压缩级别18)
- ✅ 流式压缩/解压
- ✅ 支持多线程加速
- ✅ 实时压缩率统计
- ✅ 文件拖拽上传
- ✅ 批量文件处理
- ✅ 实时压缩统计
- ✅ ECharts数据可视化
- ✅ 压缩率对比图表
- ✅ 存储空间节省分析
.
├── backend/ # Spring Boot后端
│ ├── src/main/java/com/compression/
│ │ ├── Application.java # 主应用程序
│ │ ├── config/ # 配置类
│ │ ├── controller/ # REST控制器
│ │ ├── service/ # 业务逻辑层
│ │ ├── entity/ # 实体类
│ │ └── dto/ # 数据传输对象
│ ├── src/main/resources/
│ │ └── application.yml # 应用配置
│ └── pom.xml # Maven依赖
│
├── frontend/ # Vue3前端
│ ├── src/
│ │ ├── api/ # API接口
│ │ ├── components/ # 可视化组件
│ │ ├── views/ # 页面视图
│ │ ├── router/ # 路由配置
│ │ ├── App.vue # 根组件
│ │ └── main.js # 入口文件
│ ├── index.html
│ ├── vite.config.js
│ └── package.json
│
├── data/ # 数据目录(存放待压缩文件)
├── compress/ # 压缩输出目录
├── decompress/ # 解压输出目录
└── README.md
后端
- JDK 17+
- Maven 3.6+
前端
- Node.js 16+
- npm 或 yarn
cd backend
# 安装依赖并编译
mvn clean install
# 运行后端服务
mvn spring-boot:run后端服务将在 http://localhost:8080 启动
cd frontend
# 安装依赖
npm install
# 启动开发服务器
npm run dev前端服务将在 http://localhost:5173 启动
-
上传文件
- 打开浏览器访问 http://localhost:5173
- 拖拽或选择.tbl/.csv/.txt文件上传
- 点击"上传文件"按钮
-
执行压缩
- 点击"开始压缩"按钮
- 系统自动转换为Parquet格式并使用ZSTD压缩
- 查看实时压缩统计和可视化图表
-
执行解压
- 点击"开始解压"按钮
- 系统自动解压并还原为原始格式
- 文件保存在decompress目录
POST /api/compression/upload
Content-Type: multipart/form-data
参数: file (文件)
POST /api/compression/upload-batch
Content-Type: multipart/form-data
参数: files (文件数组)
POST /api/compression/compress
返回: CompressionSummaryDTO
POST /api/compression/decompress
返回: CompressionSummaryDTO
GET /api/compression/files
返回: List<String>
GET /api/compression/health
返回: ApiResponse<String>
server:
port: 8080
compression:
data-dir: data # 数据目录
compress-dir: compress # 压缩输出目录
decompress-dir: decompress # 解压输出目录
chunk-size: 50000 # 分块大小
zstd-level: 18 # ZSTD压缩级别(1-22)
buffer-size: 4194304 # 缓冲区大小(4MB)server: {
port: 5173,
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true
}
}
}- Spring Boot 3.1.5: Web框架
- Apache Parquet 1.13.1: 列式存储格式
- Apache Hadoop 3.3.6: Parquet支持
- ZSTD-JNI 1.5.5: ZSTD压缩库
- Apache Commons CSV 1.10: CSV处理
- Lombok: 简化Java代码
- Vue 3: 渐进式JavaScript框架
- Element Plus: UI组件库
- ECharts 5: 数据可视化
- Axios: HTTP客户端
- Vue Router: 路由管理
- Vite: 构建工具
- 高压缩率: ZSTD算法平均压缩率60-80%
- 低内存占用: 分块处理机制,支持GB级大文件
- 快速处理: 多线程压缩加速
- 列式存储: Parquet格式优化存储效率
- 磁盘空间: 建议至少为数据文件3倍大小
- 内存: 建议4GB以上
- CPU: 支持多核并行压缩
后端日志文件位置: logs/compression.log
Q: 上传大文件失败? A: 检查application.yml中的max-file-size配置,默认1GB
Q: 压缩很慢? A: 可以降低zstd-level(默认18),或调整chunk-size
Q: 前端连接后端失败? A: 检查后端服务是否启动,以及CORS配置
| 功能 | Python版本 | Java Web版本 |
|---|---|---|
| 运行方式 | 命令行 | Web界面 |
| 可视化 | 无 | ECharts图表 |
| 并发处理 | 单线程 | 多线程 |
| 用户体验 | 命令行操作 | 拖拽上传 |
| 实时监控 | 无 | 实时统计 |
Data Compression Team
MIT License
- ✨ 完成Python到Java Web的重构
- ✨ 实现Spring Boot后端架构
- ✨ 实现Vue3前端界面
- ✨ 添加ECharts数据可视化
- ✨ 支持拖拽上传和批量处理
- ✨ 添加实时压缩统计
如有问题或建议,欢迎提交Issue或Pull Request。