Skip to main content

Database comparison overview

NineData database comparison checks consistency between two data sources. Compare schemas, compare table data, and generate SQL changes to fix inconsistencies on the target side.

Features

  • Schema comparison: Compares metadata and object definitions between two databases, such as columns, indexes, primary keys, foreign keys, and constraints.

  • Data comparison: Compares user data between two databases. Use it to validate data consistency after backup and recovery, migration, synchronization, or replication workflows.

  • Generate change SQL: When data or schema differences are detected, NineData can generate SQL change statements. Review and execute these statements on the target side to resolve inconsistencies.

Documentation map

TaskRecommended documentation
Compare table data consistencyData comparison
Compare tables, indexes, constraints, views, functions, stored procedures, and other object definitionsSchema comparison
Validate replication, migration, backup, or restore resultsStart with Schema comparison, then run Data comparison
Generate and execute repair SQL based on differencesData comparison or Schema comparison

Supported data sources

Source DatabaseTarget DatabaseData Comp.Schema Comp.Incre Comp.
MySQLMySQL✔️✔️✔️
SQL Server✔️--
PostgreSQL✔️-✔️
Oracle✔️-✔️
OceanBase Oracle✔️--
OceanBase MySQL✔️--
TDSQL MySQL✔️--
Db2✔️--
Doris✔️--
SelectDB✔️--
ClickHouse✔️--
Elasticsearch---
Kafka---
DaMeng✔️--
DWS✔️--
Greenplum✔️--
Redshift---
StarRocks✔️--
SingleStore✔️--
TiDB✔️-✔️
Hive✔️--
AnalyticDB PostgreSQL---
GaussDB✔️--
openGauss✔️--
Database Group✔️--
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---
DaMeng✔️--
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---
DaMeng✔️--
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---
DaMeng✔️--
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✔️--
DaMeng✔️--
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✔️--
DaMeng✔️--
StarRocks✔️--
openGauss✔️--
SelectDBMySQL✔️--
PostgreSQL✔️--
Oracle✔️--
TDSQL MySQL✔️--
Doris✔️--
SelectDB✔️--
ClickHouse✔️--
Greenplum✔️--
StarRocks✔️--
SingleStore✔️--
ClickHouseMySQL✔️--
SQL Server✔️--
PostgreSQL✔️--
Oracle✔️--
TDSQL MySQL✔️--
Db2✔️--
Doris✔️--
SelectDB✔️--
ClickHouse✔️--
DaMeng✔️--
Greenplum✔️--
StarRocks✔️--
openGauss✔️--
KafkaMySQL---
ClickHouse---
Kafka---
DaMengMySQL✔️--
SQL Server✔️--
PostgreSQL✔️--
Oracle✔️--
Db2✔️--
Doris✔️--
ClickHouse✔️--
DaMeng✔️✔️✔️
StarRocks✔️--
openGauss✔️--
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✔️--
DaMeng✔️--
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✔️--
DaMeng✔️--
StarRocks✔️--
GaussDB✔️--
openGauss✔️--
DataHub✔️--
Database GroupMySQL✔️--
Database Group✔️--
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✔️--

Use cases

Use caseDescription
Database schema consistency across departments and regionsWhen teams manage multiple projects or databases of the same type, schema changes may not be synchronized to every data center or project on time. NineData Schema Comparison can compare metadata between source and target instances and provide repair suggestions before inconsistencies affect applications.
Cross-region and cross-cloud data verificationEnterprises often replicate or synchronize data across regions or cloud platforms. System architecture limits, network behavior, or operational changes can still cause inconsistencies. NineData Data Comparison and Schema Comparison help verify consistency and generate SQL changes for target-side repair.
Data integrity during ELT or ETL workflowsETL and ELT workflows move data from multiple sources into data warehouses for OLAP or BI analysis. When sources and targets are heterogeneous, data aggregation or schema transformation can introduce inconsistencies. NineData comparison helps validate the result across homogeneous and heterogeneous databases.