# DDV **Repository Path**: datac/ddv ## Basic Information - **Project Name**: DDV - **Description**: Database Diff & Version Manager - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-28 - **Last Updated**: 2026-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DDV - Database Diff & Version [English](README.en.md) | 中文 ## 简介 DDV (Database Diff & Version) 是一款数据库Schema差异比较与版本管理工具。支持多种主流和国产数据库,提供完整的快照版本链管理、智能表分类、结构+数据差异对比,并自动生成增量SQL脚本。 ## 功能特性 - **多数据库支持**: MySQL、Oracle、PostgreSQL、TiDB、OpenGauss、达梦(DM)、金仓(Kingbase),支持自定义JDBC类型 - **快照管理**: 完整保存数据库Schema快照,支持版本链追溯 - **差异对比**: 精确检测表结构、列、索引、约束变更,以及DICT/CONFIG/PARAM表的数据行级差异 - **智能分类**: 自动识别配置表(CONFIG)、参数表(PARAM)、字典表(DICT)、业务表(BUSINESS)、系统表(SYSTEM) - **SQL生成**: 自动生成增量迁移(migrate)、回滚(rollback)、备份(backup)脚本 - **多界面**: CLI命令行工具 + Electron桌面客户端(免安装JDK,内置JRE) - **跨平台打包**: Windows便携版exe、Linux AppImage、macOS dmg ## 项目结构 ``` ddv/ ├── ddv-core/ # 核心引擎(Kotlin/JVM) │ ├── api/ # Javalin HTTP API │ ├── classifier/ # 表分类器 │ ├── collector/ # 元数据采集器 │ │ └── dialect/ # 数据库方言(7种内置 + GenericDialect) │ ├── diff/ # 差异对比引擎(结构 + 数据) │ ├── generator/ # SQL生成器 + FreeMarker模板 │ ├── model/ # 数据模型 │ ├── snapshot/ # 快照存储(SQLite) │ └── util/ # DdvPaths等工具 ├── ddv-cli/ # 命令行工具(Picocli) ├── ddv-ui/ # Electron桌面客户端(Vue 3 + Element Plus) ├── scripts/ # 构建脚本(jlink、release) └── config/ # 默认配置文件 ``` ## 快速开始 ### 环境要求 - JDK 17+(运行CLI需要;桌面客户端内置JRE无需安装) - Node.js 18+(仅开发前端需要) ### 构建项目 ```bash ./gradlew shadowJar ``` ### 运行CLI ```bash # 添加数据库连接 bin/ddv conn add --name mydb --type mysql --host localhost --port 3306 --database testdb --username root --password secret # 创建快照 bin/ddv snap create -c mydb --tag v1.0 # 对比两个快照 bin/ddv diff --source --target # 生成迁移SQL bin/ddv gen --source --target --type migrate --dialect mysql ``` ### 运行桌面客户端 ```bash cd ddv-ui npm install npm run electron:dev ``` ### 构建便携版EXE ```bash # Windows一键构建 scripts\build-release.ps1 # Linux/macOS scripts/build-release.sh linux ``` 构建产物位于 `ddv-ui/release/`,运行后数据文件(db/config/drivers)在exe同级目录自动创建。 ### 连接管理 桌面客户端支持添加、编辑、删除数据库连接。添加时需先测试连接成功才能保存。类型支持预设7种数据库和自定义输入(需自行放入对应JDBC驱动到`drivers/`目录)。 ## 数据流 ``` classify auto → snapshot create → diff → generate ↓ ↓ ↓ ↓ table_tags tables_json DiffResult SQL scripts ``` ## 技术栈 | 层 | 技术 | |---|------| | 后端 | Kotlin 1.9, JDK 17, Javalin 6, HikariCP, FreeMarker, SQLite | | 前端 | Vue 3, Element Plus, Monaco Editor, Pinia | | 桌面 | Electron 28, electron-builder | | 构建 | Gradle 8, shadow plugin, jlink | ## License See [LICENSE](LICENSE)