Skip to content

基于Spring Boot + Vue3的数据压缩系统,支持CSV/TSV/TBL格式转Parquet和ZSTD压缩,提供可视化界面

Notifications You must be signed in to change notification settings

huaiziqing/data-compression-system

Repository files navigation

数据压缩系统 (Data Compression System)

基于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

安装步骤

1. 后端安装

cd backend

# 安装依赖并编译
mvn clean install

# 运行后端服务
mvn spring-boot:run

后端服务将在 http://localhost:8080 启动

2. 前端安装

cd frontend

# 安装依赖
npm install

# 启动开发服务器
npm run dev

前端服务将在 http://localhost:5173 启动

使用方法

  1. 上传文件

    • 打开浏览器访问 http://localhost:5173
    • 拖拽或选择.tbl/.csv/.txt文件上传
    • 点击"上传文件"按钮
  2. 执行压缩

    • 点击"开始压缩"按钮
    • 系统自动转换为Parquet格式并使用ZSTD压缩
    • 查看实时压缩统计和可视化图表
  3. 执行解压

    • 点击"开始解压"按钮
    • 系统自动解压并还原为原始格式
    • 文件保存在decompress目录

API接口文档

文件上传

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>

配置说明

后端配置 (application.yml)

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)

前端配置 (vite.config.js)

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版本对比

功能 Python版本 Java Web版本
运行方式 命令行 Web界面
可视化 ECharts图表
并发处理 单线程 多线程
用户体验 命令行操作 拖拽上传
实时监控 实时统计

开发团队

Data Compression Team

许可证

MIT License

更新日志

v1.0.0 (2025-01-22)

  • ✨ 完成Python到Java Web的重构
  • ✨ 实现Spring Boot后端架构
  • ✨ 实现Vue3前端界面
  • ✨ 添加ECharts数据可视化
  • ✨ 支持拖拽上传和批量处理
  • ✨ 添加实时压缩统计

联系方式

如有问题或建议,欢迎提交Issue或Pull Request。

About

基于Spring Boot + Vue3的数据压缩系统,支持CSV/TSV/TBL格式转Parquet和ZSTD压缩,提供可视化界面

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published