数据库对比简介
NineData 数据库对比功能支持对两个数据源之间的内容进行一致性对比,不一致的情况下还支持自动生成变更 SQL,您可以直接复制并在目标端执行,实现数据与结构的一致性。
背景信息
数据库是企业级应用中最为核心的数据存储和管理组件之一,随着业务的发展和数据量的增加,数据库的维护和管理变得越来越复杂,数据库对比功能成为了一个必不可少的工具。NineData 数据库对比功能是一种比较数据库之间差异的工具,它可以用于比较两个数据库之间的数据、结构的不同之处,帮助您追踪数据库的变化、发现问题并快速修复。
功能介绍
- 结构对比:结构对比即元数据(MetaData)的对比,用于对比两个数据库中对象的定义是否一致。例如,对比两个表中的列(column)、索引(index),约束(主键、外键、constraint)等是否一致。
- 数据对比:数据对比即用户数据(UserData)的对比,用于对比两个数据库中的数据是否一致。通常用于备份恢复、数据迁移、数据同步后两端的数据一致性对比。
- 生成变更 SQL:当发现数据或者结构的差异时,NineData 数据库对比功能可以生成相应的变更 SQL,让您可以直接复制并在目标端执行,以修复两端不一致的情况。
产品架构
支持的对比链路
源数据源 | 目标数据源 | 数据对比 | 结构对比 | 增量对比 |
---|---|---|---|---|
MySQL | MySQL | ✔️ | ✔️ | ✔️ |
Oracle | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
TiDB | ✔️ | - | - | |
KingBase | ✔️ | - | ✔️ | |
open_gauss | ✔️ | - | - | |
GaussDB | ✔️ | - | - | |
DWS | ✔️ | - | - | |
ClickHouse | ✔️ | - | - | |
ADB PostgreSQL | - | - | - | |
Greenplum | ✔️ | - | - | |
Redshift | - | - | - | |
Doris | ✔️ | - | - | |
SelectDB | ✔️ | - | - | |
StarRocks | ✔️ | - | - | |
SingleStore | ✔️ | - | - | |
Elasticsearch | - | - | - | |
Kafka | - | - | - | |
Hive | ✔️ | - | - | |
库分组 | ✔️ | - | - | |
datahub | ✔️ | - | - | |
Oracle | Oracle | ✔️ | ✔️ | - |
MySQL | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
TiDB | ✔️ | - | - | |
KingBase | ✔️ | - | ✔️ | |
GaussDB | ✔️ | - | - | |
DWS | ✔️ | - | - | |
ClickHouse | ✔️ | - | - | |
ADB PostgreSQL | ✔️ | - | - | |
OB-Oracle | ✔️ | ✔️ | - | |
Greenplum | ✔️ | - | - | |
Doris | ✔️ | - | - | |
SelectDB | ✔️ | - | - | |
StarRocks | ✔️ | - | - | |
SingleStore | ✔️ | - | - | |
Kafka | - | - | - | |
Hive | ✔️ | - | - | |
datahub | ✔️ | - | - | |
PostgreSQL | PostgreSQL | ✔️ | ✔️ | - |
MySQL | ✔️ | - | - | |
Oracle | ✔️ | - | - | |
TiDB | ✔️ | - | - | |
GaussDB | ✔️ | - | - | |
DWS | ✔️ | - | - | |
ClickHouse | ✔️ | - | - | |
ADB PostgreSQL | ✔️ | - | - | |
Greenplum | ✔️ | - | - | |
Doris | ✔️ | - | - | |
SelectDB | ✔️ | - | - | |
StarRocks | ✔️ | - | - | |
SingleStore | ✔️ | - | - | |
Sybase | ✔️ | - | - | |
Kafka | - | - | - | |
Hive | ✔️ | - | - | |
SQL Server | SQL Server | ✔️ | ✔️ | - |
MySQL | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
Doris | ✔️ | - | - | |
StarRocks | ✔️ | - | - | |
TDSQL MySQL | TDSQL MySQL | ✔️ | - | - |
TiDB | TiDB | ✔️ | - | - |
MySQL | ✔️ | - | - | |
Oracle | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
ClickHouse | ✔️ | - | - | |
ADB PostgreSQL | ✔️ | - | - | |
Greenplum | ✔️ | - | - | |
Hive | ✔️ | - | - | |
达梦 | 达梦 | ✔️ | - | - |
KingBase | KingBase | ✔️ | ✔️ | - |
MySQL | ✔️ | - | - | |
Oracle | ✔️ | - | - | |
PostgreSQL | ✔️ | ✔️ | - | |
open_gauss | open_gauss | ✔️ | - | - |
MySQL | ✔️ | - | - | |
Oracle | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
GaussDB | ✔️ | - | - | |
Doris | ✔️ | - | - | |
SelectDB | ✔️ | - | - | |
StarRocks | ✔️ | - | - | |
GaussDB | GaussDB | ✔️ | - | - |
MySQL | ✔️ | - | - | |
Oracle | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
open_gauss | ✔️ | - | - | |
DWS | ✔️ | - | - | |
Doris | ✔️ | - | - | |
SelectDB | ✔️ | - | - | |
StarRocks | ✔️ | - | - | |
DWS | DWS | ✔️ | - | - |
MySQL | ✔️ | - | - | |
Oracle | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
GaussDB | ✔️ | - | - | |
Doris | ✔️ | - | - | |
SelectDB | ✔️ | - | - | |
StarRocks | ✔️ | - | - | |
ClickHouse | ClickHouse | ✔️ | - | - |
MySQL | ✔️ | - | - | |
Oracle | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
Greenplum | ✔️ | - | - | |
Doris | ✔️ | - | - | |
SelectDB | ✔️ | - | - | |
StarRocks | ✔️ | - | - | |
ADB PostgreSQL | ADB PostgreSQL | ✔️ | - | - |
MySQL | ✔️ | - | - | |
Oracle | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
TiDB | ✔️ | - | - | |
OB-MySQL | OB-MySQL | ✔️ | - | - |
MySQL | ✔️ | - | - | |
StarRocks | ✔️ | - | - | |
OB-Oracle | OB-Oracle | ✔️ | - | - |
StarRocks | ✔️ | - | - | |
Greenplum | Greenplum | ✔️ | - | - |
MySQL | ✔️ | - | - | |
Oracle | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
TiDB | ✔️ | - | - | |
ClickHouse | ✔️ | - | - | |
Doris | ✔️ | - | - | |
SelectDB | ✔️ | - | - | |
StarRocks | ✔️ | - | - | |
SingleStore | ✔️ | - | - | |
Hive | ✔️ | - | - | |
SelectDB | SelectDB | ✔️ | - | - |
MySQL | ✔️ | - | - | |
Oracle | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
ClickHouse | ✔️ | - | - | |
Greenplum | ✔️ | - | - | |
Doris | ✔️ | - | - | |
StarRocks | ✔️ | - | - | |
SingleStore | ✔️ | - | - | |
StarRocks | StarRocks | ✔️ | - | - |
MySQL | ✔️ | - | - | |
Oracle | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
ClickHouse | ✔️ | - | - | |
Greenplum | ✔️ | - | - | |
Doris | ✔️ | - | - | |
SelectDB | ✔️ | - | - | |
SingleStore | ✔️ | - | - | |
SingleStore | SingleStore | ✔️ | - | - |
MySQL | ✔️ | - | - | |
Oracle | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
ClickHouse | ✔️ | - | - | |
Greenplum | ✔️ | - | - | |
Doris | ✔️ | - | - | |
SelectDB | ✔️ | - | - | |
StarRocks | ✔️ | - | - | |
DB2 | DB2 | ✔️ | - | - |
Redis | Redis | ✔️ | - | - |
MongoDB | MongoDB | ✔️ | ✔️ | - |
Sybase | Sybase | ✔️ | - | - |
PostgreSQL | ✔️ | - | - | |
Kafka | Kafka | - | - | - |
MySQL | - | - | - | |
ClickHouse | - | - | - | |
Hive | Hive | - | - | - |
MySQL | ✔️ | - | - | |
Oracle | ✔️ | - | - | |
PostgreSQL | ✔️ | - | - | |
TiDB | ✔️ | - | - | |
Greenplum | ✔️ | - | - | |
库分组 | 库分组 | ✔️ | - | - |
MySQL | ✔️ | - | - |
使用场景
场景 | 说明 |
---|---|
跨部门、跨地域校验数据库架构一致性 | 企业用户在管理多项目或多模块的同类数据库时,由于组织或团队的分散或独立性,数据库结构和对象的变化没有及时同步到所有的数据中心或子项目,应用程序报错后才被发现。 NineData 数据结构对比服务定期对比源端和目标端的元数据,保证整个所有数据库节点的数据结构一致性,并且提供修复建议,避免业务崩溃。 |
跨地域、跨云多活数据校验 | 为实现低延迟就近读写、数据库多活再被能力,企业通常会在不同地域或云平台之间搭建数据复制和同步。然而由于系统架构的局限性等多种因素影响,可能会出现数据不一致的情况,因此周期性的数据校验必不可少。而在数据量庞大的情况下,全量对比是比较昂贵低效的方法。 NineData 数据结构对比服务基于分组混检和快速哈希,提供了高效的数据一致性检查,同时针对不一致的情况,提供 SQL 变更脚本,在目标端执行即可保证两端数据一致。 |
ELT/ETL 过程中数据的完整性 | 经典的 ETL 和云原生时代的 ELT,都要求把多种数据源的数据导入到某个数据仓库中,用来支持 OLAP 和 BI 分析。 然而源端和目标端通常是异构的,数据聚合和架构转换过程中可能会影响数据的一致性。NineData 数据结构对比服务支持同构、异构数据库之间的数据对比,很大程度上降低了在该过程中出现数据不一致的风险。 |