在数据库迁移、逻辑复制或双活架构场景中,数据一致性是核心诉求 —— 一旦出现数据偏差,可能引发业务故障、财务损失等严重问题。传统数据对比工具往往存在性能瓶颈、跨库支持有限、操作复杂等痛点,尤其面对异构数据库(如 Oracle 转 PostgreSQL、MySQL 转 Postgres)时,校验效率和准确性难以兼顾。
今天给大家推荐一款开源异构数据库对比平台 dataCompare,它基于 SpringBoot3+JDK21+Vue3+TS 构建,核心采用 MD5 Hash 对比机制,以 PostgreSQL 作为存储库,专为跨数据库场景的数据一致性校验设计,完美解决迁移 / 复制后的数据校验难题。
一、项目核心信息
1. 基础定位
- 本质:Java 开发的跨数据库数据一致性校验工具
- 核心目标:简化异构数据库间数据迁移 / 复制后的一致性验证
- 许可证:Apache-2.0(开源免费,可商用)
- 代码仓库:github.com/WJX20/dataC…
2. 技术栈选型
后端
- 框架:SpringBoot 3(已升级至稳定版本)
- 开发语言:Java(需 JDK 17+)
- ORM:MybatisPlus(优化 Mapper 包扫描逻辑)
- 存储库:PostgreSQL 15+(存储对比配置、Hash 值等元数据)
- 构建工具:Maven 3.8+
- 核心依赖:JDBC 驱动(支持 Oracle/PostgreSQL/MySQL 等主流数据库)
前端
- 框架:Vue 3 + TypeScript
- 构建工具:Vite 5
- UI 组件库:NaiveUI
- 样式方案:UnoCSS
- 包管理:pnpm 9+(需 Node 20+)
二、核心特性:高效、通用、易用
1. 多数据库兼容,覆盖主流场景
已稳定支持:Oracle、MySQL、PostgreSQL
开发中支持(全球排名前十主流数据库):MariaDB、DB2、SQL Server、Snowflake
适配场景:异构数据库迁移(如 Oracle→Postgres)、同构数据库复制、跨平台逻辑复制等
2. Hash 对比机制,兼顾性能与精度
核心原理:通过 MD5 哈希算法计算表数据的 Hash 值,仅存储主键和列 Hash 值到 PostgreSQL 存储库,大幅减少存储开销和网络传输量。 优势:相比全量数据对比,Hash 校验速度提升 10 倍以上,尤其适合千万级数据量场景。
3. 并行 + 批量处理,性能可控
- 并行对比:多线程并行处理表数据 Hash 计算与对比,充分利用硬件资源
- 批量配置:支持自定义批量参数(如batch-fetch-size默认 2000、batch-compare-size默认 2000),可根据数据库性能动态调优
- 进度可视化:实时展示对比进度、耗时、差异数量,无需等待全量完成
4. 可视化 Web 界面,操作零门槛
前端采用 Vue3+NaiveUI 构建,提供直观的可视化操作:
- 数据源管理:添加 / 编辑 / 测试不同数据库连接(支持 JDBC URL 配置)
- 对比任务管理:新建对比任务、配置源端 / 目标端数据库、选择校验表
- 校验配置:自定义 Hash 算法、排序规则、日志级别等系统参数(共 43 项可配置参数)
- 差异详情:精确展示不一致数据的主键、差异列(如部门字段从 “人事部” 变为 “财务部”、薪资字段数值偏差)
5. 灵活配置,适配复杂场景
支持多对比项目配置存储、日志输出自定义(stdout / 文件)、数据分页对比(batch-offset-size跳过前 N 条数据),满足不同业务场景需求:
- 大型表分批次对比(如仅对比 1001-2000 条数据)
- 定期增量校验(配合定时任务实现双活架构数据巡检)
- 跨平台布尔类型适配(需手动配置字段大小写保留规则)
三、核心原理:Hash 校验如何保障数据一致性?
dataCompare 的核心逻辑围绕 “Hash 值一致性” 展开,流程如下:
- 配置源端 / 目标端数据库连接与校验表;
- 系统自动读取表结构,以主键为基准,分别计算源端和目标端表数据的主键的Hash值和其他列 Hash 值
- 将 Hash 值存储到 PostgreSQL 存储库(避免重复计算);
- 对比源端与目标端的 Hash 值,快速定位不一致数据;
- 输出差异详情(主键、差异列、源端 / 目标端数值)
四、典型应用场景
1. 数据库迁移后校验
场景:将 Oracle 数据库迁移到 PostgreSQL 后,验证数据是否完整、无偏差。
操作:新建对比任务,选择源端 Oracle、目标端 PostgreSQL,勾选需要校验的业务表(如employees、students),执行后即可查看差异数据。
2. 逻辑复制数据校验
场景:MySQL 主从复制(或跨平台逻辑复制)后,定期校验从库数据是否与主库一致。
优势:相比传统的 “count 对比”,Hash 校验能定位到具体不一致行,且开销更低。
3. 双活架构数据巡检
场景:Active-Active 双活复制配置中,定期(如每小时)执行数据一致性校验,提前发现复制延迟或数据偏差,降低业务风险。
五、快速上手:3 分钟部署运行
1. 环境准备
- 后端:JDK 17+/Maven 3.8+/PostgreSQL 15+
- 前端:Node 20+/pnpm 9+
- 依赖:对应数据库的 JDBC 驱动(项目已内置主流驱动)
2. 部署步骤
(1)克隆代码仓库
git clone git@github.com:WJX20/dataCompare.git
cd dataCompare
(2)后端构建与启动
- 配置数据库连接:修改application.yml,填写 Redis 密码、PostgreSQL 存储库密码;
- 初始化存储库:执行doc/datacompare.sql脚本(创建对比配置表、Hash 存储表等);
- 构建打包:mvn clean install -U
- 启动后端:运行DataCompareApplication(启动类仅负责启动,Mapper 扫描交给 MybatisPlus 配置类)。
mvn clean install -U
(3)前端启动
# 进入前端目录
cd dataCompareUI
# 安装依赖
pnpm install
# 开发环境启动
pnpm dev
(4)访问使用
- 访问地址:http://localhost:9725
- 默认账号:admin,默认密码:123456
- 核心操作流程:新增数据源→新建对比任务→配置校验参数→执行对比→查看差异详情
界面展示
六、未来规划
- 完善数据库支持:尽快上线 MariaDB、DB2、SQL Server、Snowflake 的稳定支持;
- 功能增强:支持增量对比、自动修复差异数据、定时任务调度;
- 性能优化:支持更大数据量(亿级)对比、分布式对比;
- 体验提升:新增数据差异导出、对比报告生成功能。
结语:开源协作,共建高效工具
dataCompare 作为一款开源异构数据库对比工具,旨在解决开发者和 DBA 在数据迁移 / 复制中的核心痛点 —— 高效、准确、易用。目前项目已发布 V1.0.0 正式版本,有 5 位贡献者参与开发,欢迎大家:
- Fork + Star 仓库:github.com/WJX20/dataC…
- 提交 Issue:反馈 bug 或需求
- 参与开发:通过 PR 贡献代码
无论你是需要数据迁移校验的 DBA,还是寻找开源项目实践的开发者,dataCompare 都值得一试。让我们一起完善这款工具,让异构数据库数据一致性校验更简单!