跳到主要内容

数据库对比简介

NineData 数据库对比功能支持对两个数据源之间的内容进行一致性对比,不一致的情况下还支持自动生成变更 SQL,您可以直接复制并在目标端执行,实现数据与结构的一致性。

背景信息

数据库是企业级应用中最为核心的数据存储和管理组件之一,随着业务的发展和数据量的增加,数据库的维护和管理变得越来越复杂,数据库对比功能成为了一个必不可少的工具。NineData 数据库对比功能是一种比较数据库之间差异的工具,它可以用于比较两个数据库之间的数据、结构的不同之处,帮助您追踪数据库的变化、发现问题并快速修复。

功能介绍

  • 结构对比:结构对比即元数据(MetaData)的对比,用于对比两个数据库中对象的定义是否一致。例如,对比两个表中的列(column)、索引(index),约束(主键、外键、constraint)等是否一致。
  • 数据对比:数据对比即用户数据(UserData)的对比,用于对比两个数据库中的数据是否一致。通常用于备份恢复、数据迁移、数据同步后两端的数据一致性对比。
  • 生成变更 SQL:当发现数据或者结构的差异时,NineData 数据库对比功能可以生成相应的变更 SQL,让您可以直接复制并在目标端执行,以修复两端不一致的情况。

产品架构

structure

支持的对比链路

源数据源目标数据源数据对比结构对比增量对比
MySQLMySQL✔️✔️✔️
SQL Server✔️--
PostgreSQL✔️-✔️
Oracle✔️-✔️
OceanBase Oracle✔️--
OceanBase MySQL✔️--
TDSQL MySQL✔️--
Db2✔️--
Doris✔️--
SelectDB✔️--
ClickHouse✔️--
Elasticsearch---
Kafka---
DWS✔️--
Greenplum✔️--
Redshift---
StarRocks✔️--
SingleStore✔️--
TiDB✔️-✔️
Hive✔️--
AnalyticDB PostgreSQL---
GaussDB✔️--
openGauss✔️--
DataHub✔️--
KingbaseES✔️-✔️
KingbaseES for Oracle✔️--
PolarDB for Oracle✔️-✔️
PolarDB-X✔️--
Vastbase✔️--
库分组✔️--
达梦✔️--
SQL ServerMySQL✔️--
SQL Server✔️✔️-
PostgreSQL✔️--
Oracle✔️--
OceanBase Oracle✔️--
OceanBase MySQL✔️--
Db2✔️--
Doris✔️--
SelectDB✔️--
ClickHouse✔️--
Kafka---
DWS✔️--
Greenplum✔️--
StarRocks✔️--
TiDB✔️--
AnalyticDB PostgreSQL✔️--
GaussDB✔️--
openGauss✔️--
KingbaseES✔️--
KingbaseES for Oracle✔️--
PolarDB for Oracle✔️--
Azure SQL Database✔️--
Vastbase✔️--
达梦✔️--
PostgreSQLMySQL✔️-✔️
SQL Server✔️--
PostgreSQL✔️✔️✔️
Oracle✔️-✔️
OceanBase Oracle✔️-✔️
OceanBase MySQL✔️--
TDSQL MySQL✔️--
Db2✔️--
Doris✔️--
SelectDB✔️--
ClickHouse✔️--
Kafka---
DWS✔️--
Greenplum✔️--
StarRocks✔️--
SingleStore✔️--
TiDB✔️-✔️
Hive✔️--
AnalyticDB PostgreSQL✔️--
Sybase✔️--
GaussDB✔️--
openGauss✔️--
KingbaseES✔️--
KingbaseES for Oracle✔️--
PolarDB for Oracle✔️--
Vastbase✔️--
达梦✔️--
OracleMySQL✔️-✔️
SQL Server✔️--
PostgreSQL✔️-✔️
Oracle✔️✔️✔️
OceanBase Oracle✔️-✔️
OceanBase MySQL✔️-✔️
TDSQL MySQL✔️--
Db2✔️--
Doris✔️--
SelectDB✔️--
ClickHouse✔️--
Kafka---
DWS✔️--
Greenplum✔️--
StarRocks✔️--
SingleStore✔️--
TiDB✔️-✔️
Hive✔️--
AnalyticDB PostgreSQL✔️--
GaussDB✔️-✔️
openGauss✔️--
DataHub✔️--
KingbaseES✔️-✔️
PolarDB for Oracle✔️--
PolarDB-X✔️--
Vastbase✔️--
GoldenDB✔️--
达梦✔️--
OceanBase OracleMySQL✔️--
PostgreSQL✔️-✔️
Oracle✔️-✔️
OceanBase Oracle✔️✔️✔️
OceanBase MySQL✔️-✔️
TDSQL MySQL✔️--
Kafka---
StarRocks✔️--
TiDB✔️-✔️
DataHub✔️--
OceanBase MySQLMySQL✔️--
PostgreSQL✔️-✔️
OceanBase MySQL✔️✔️✔️
Kafka---
StarRocks✔️--
DataHub✔️--
PolarDB-X✔️--
TDSQL MySQLMySQL✔️--
OceanBase MySQL✔️--
TDSQL MySQL✔️✔️-
Db2✔️--
Doris✔️--
Kafka---
TiDB✔️--
GaussDB✔️--
openGauss✔️--
KingbaseES✔️--
KingbaseES for Oracle✔️--
PolarDB-X✔️--
Db2MySQL✔️--
SQL Server✔️--
PostgreSQL✔️--
Oracle✔️--
OceanBase MySQL✔️--
TDSQL MySQL✔️--
Db2✔️--
Doris✔️--
SelectDB✔️--
ClickHouse✔️--
Greenplum✔️--
Redshift✔️--
StarRocks✔️--
TiDB✔️--
AnalyticDB PostgreSQL✔️--
Sybase✔️--
GaussDB✔️--
openGauss✔️--
KingbaseES✔️--
KingbaseES for Oracle✔️--
PolarDB for Oracle✔️--
GoldenDB✔️--
达梦✔️--
MongoDBMongoDB✔️✔️-
RedisRedis✔️--
DorisMySQL✔️--
SQL Server✔️--
PostgreSQL✔️--
Oracle✔️--
TDSQL MySQL✔️--
Db2✔️--
Doris✔️--
ClickHouse✔️--
StarRocks✔️--
openGauss✔️--
达梦✔️--
SelectDBMySQL✔️--
PostgreSQL✔️--
Oracle✔️--
TDSQL MySQL✔️--
Doris✔️--
SelectDB✔️--
ClickHouse✔️--
Greenplum✔️--
StarRocks✔️--
SingleStore✔️--
ClickHouseMySQL✔️--
SQL Server✔️--
PostgreSQL✔️--
Oracle✔️--
TDSQL MySQL✔️--
Db2✔️--
Doris✔️--
SelectDB✔️--
ClickHouse✔️--
Greenplum✔️--
StarRocks✔️--
openGauss✔️--
达梦✔️--
KafkaMySQL---
ClickHouse---
Kafka---
DWSDWS✔️--
StarRocks✔️--
GaussDB✔️--
DataHub✔️--
GreenplumMySQL✔️--
PostgreSQL✔️--
Oracle✔️--
TDSQL MySQL✔️--
Doris✔️--
SelectDB✔️--
ClickHouse✔️--
Greenplum✔️--
StarRocks✔️--
SingleStore✔️--
TiDB✔️--
Hive✔️--
StarRocksMySQL✔️--
SQL Server✔️--
PostgreSQL✔️--
Oracle✔️--
TDSQL MySQL✔️--
Db2✔️--
Doris✔️--
SelectDB✔️--
ClickHouse✔️--
Greenplum✔️--
StarRocks✔️--
SingleStore✔️--
openGauss✔️--
达梦✔️--
SingleStoreMySQL✔️--
PostgreSQL✔️--
Oracle✔️--
Doris✔️--
SelectDB✔️--
ClickHouse✔️--
Greenplum✔️--
StarRocks✔️--
SingleStore✔️--
TiDBMySQL✔️-✔️
PostgreSQL✔️-✔️
Oracle✔️-✔️
Doris✔️--
ClickHouse✔️--
Greenplum✔️--
TiDB✔️✔️✔️
Hive✔️--
AnalyticDB PostgreSQL✔️--
PolarDB-X✔️--
HiveMySQL✔️--
PostgreSQL✔️--
Oracle✔️--
Greenplum✔️--
TiDB✔️--
Hive---
AnalyticDB PostgreSQLMySQL✔️--
PostgreSQL✔️--
Oracle✔️--
TiDB✔️--
AnalyticDB PostgreSQL✔️--
SybasePostgreSQL✔️--
GaussDBMySQL✔️--
PostgreSQL✔️--
Oracle✔️-✔️
Doris✔️--
SelectDB✔️--
DWS✔️--
StarRocks✔️--
GaussDB✔️-✔️
openGauss✔️--
DataHub✔️--
openGaussMySQL✔️--
SQL Server✔️--
PostgreSQL✔️--
Oracle✔️--
Db2✔️--
Doris✔️--
ClickHouse✔️--
StarRocks✔️--
GaussDB✔️--
openGauss✔️--
DataHub✔️--
达梦✔️--
KingbaseESMySQL✔️--
PostgreSQL✔️--
Oracle✔️--
Doris✔️--
KingbaseES✔️✔️-
KingbaseES for Oracle✔️--
KingbaseES for OracleMySQL✔️--
PostgreSQL✔️--
Oracle✔️--
KingbaseES✔️--
PolarDB for OraclePostgreSQL✔️--
Oracle✔️--
PolarDB for Oracle✔️✔️✔️
PolarDB-XPolarDB-X✔️--
Azure SQL DatabaseMySQL✔️--
SQL Server✔️--
PostgreSQL✔️--
Azure SQL Database✔️✔️-
VastbaseVastbase✔️✔️✔️
GoldenDBOracle✔️--
Db2✔️--
GoldenDB✔️--
库分组MySQL✔️--
库分组✔️--
达梦MySQL✔️--
SQL Server✔️--
PostgreSQL✔️--
Oracle✔️--
Db2✔️--
Doris✔️--
ClickHouse✔️--
StarRocks✔️--
openGauss✔️--
达梦✔️✔️✔️

使用场景

场景说明
跨部门、跨地域校验数据库架构一致性企业用户在管理多项目或多模块的同类数据库时,由于组织或团队的分散或独立性,数据库结构和对象的变化没有及时同步到所有的数据中心或子项目,应用程序报错后才被发现。
NineData 数据结构对比服务定期对比源端和目标端的元数据,保证整个所有数据库节点的数据结构一致性,并且提供修复建议,避免业务崩溃。
跨地域、跨云多活数据校验为实现低延迟就近读写、数据库多活再被能力,企业通常会在不同地域或云平台之间搭建数据复制和同步。然而由于系统架构的局限性等多种因素影响,可能会出现数据不一致的情况,因此周期性的数据校验必不可少。而在数据量庞大的情况下,全量对比是比较昂贵低效的方法。
NineData 数据结构对比服务基于分组混检快速哈希,提供了高效的数据一致性检查,同时针对不一致的情况,提供 SQL 变更脚本,在目标端执行即可保证两端数据一致。
ELT/ETL 过程中数据的完整性经典的 ETL 和云原生时代的 ELT,都要求把多种数据源的数据导入到某个数据仓库中,用来支持 OLAP 和 BI 分析。
然而源端和目标端通常是异构的,数据聚合和架构转换过程中可能会影响数据的一致性。NineData 数据结构对比服务支持同构、异构数据库之间的数据对比,很大程度上降低了在该过程中出现数据不一致的风险。

相关文档