Verificación posterior a la migración (número de filas/checksum)
Oracle
-- Compare row counts on source and target
SELECT 'customer' table_name, COUNT(*) row_count FROM customer;
-- To find content differences at object level, DBMS_COMPARISON (via db link)
BEGIN DBMS_COMPARISON.CREATE_COMPARISON(
comparison_name => 'COMPARE_CUSTOMER',
schema_name => 'SHOP', object_name => 'CUSTOMER',
dblink_name => 'TARGET_DB'); END;
/
-- SELECT DBMS_COMPARISON.COMPARE('COMPARE_CUSTOMER', scan_info) FROM dual;La comprobación más rápida es comparar COUNT(*) por tabla en ambos lados. Para encontrar diferencias reales de contenido a nivel de fila, use el paquete DBMS_COMPARISON: compara las tablas de origen y destino fila a fila a través de un database link y puede informar/converger las diferencias. Para checksums, se puede obtener un digest de columnas con ORA_HASH o STANDARD_HASH.
PostgreSQL
-- Row count
SELECT count(*) FROM customer;
-- Ordered digest (checksum) of the whole table content — compare on both sides
SELECT md5(string_agg(t.row_md5, '' ORDER BY t.row_md5)) AS digest
FROM (SELECT md5(customer::text) AS row_md5 FROM customer) t;El primer paso es comparar count(*) en cada tabla. Para verificar el contenido, aplique md5 a la representación de texto de cada fila, concaténelas en orden y vuelva a calcular el hash; así se obtiene un checksum independiente del orden en ambos lados. Para grandes volúmenes, calcule el digest solo sobre las columnas mutables/clave; ordenar por PK es importante para la repetibilidad.
MySQL
-- Built-in table checksum (run on both servers and compare)
CHECKSUM TABLE customer;
-- Row count
SELECT COUNT(*) FROM customer;
-- Preferred tool for live/large environments (compares row chunks online):
-- pt-table-checksum h=source,D=shop (Percona Toolkit)En MySQL, CHECKSUM TABLE da un único checksum del contenido de la tabla; ejecútelo en origen y destino y compare (el engine/versión debe ser el mismo). Use COUNT(*) para el número de filas. En producción en vivo y para la consistencia de la replicación, el estándar del sector es pt-table-checksum de Percona Toolkit; compara por chunks, en línea y con bajo impacto.
SQL Server
-- Full row-level comparison (official tool that produces differences)
tablediff -sourceserver S1 -sourcedatabase shop -sourcetable customer \
-destinationserver S2 -destinationdatabase shop -destinationtable customer
-- Quick aggregate checksum (single query, compare on both sides):
SELECT COUNT_BIG(*) row_count, CHECKSUM_AGG(BINARY_CHECKSUM(*)) digest FROM dbo.customer;En SQL Server, la herramienta oficial de línea de comandos que encuentra diferencias a nivel de fila es tablediff (informa qué filas se añadieron/cambiaron y, con la opción -f, escribe un script de corrección). Para una comprobación global rápida, CHECKSUM_AGG(BINARY_CHECKSUM(*)) da un único digest de la tabla; compare ambos lados junto con COUNT_BIG(*) (independiente del orden de las filas).
MongoDB
// Compare document counts (on source and target)
db.customer.countDocuments({});
// For a content checksum, dbHash (md5 digest at collection/DB level):
db.runCommand({ dbHash: 1, collections: ["customer"] });
// -> compare the md5 field across both environments.La primera comprobación es comparar el número de documentos en ambos lados con countDocuments() (estimatedDocumentCount es rápido pero se basa en metadatos; use countDocuments para un recuento exacto). Para verificar el contenido, el comando dbHash genera un digest md5 a nivel de colección/base de datos; compare los hashes de ambos entornos. Revise los índices por separado con getIndexes().
Redis
# Compare key counts (on source and target)
redis-cli DBSIZE
# For a memory/data summary and key distribution:
redis-cli INFO keyspace # db0:keys=... information
# For full content verification: DUMP each key and compare with the target
# (e.g. redis-cli --scan | xargs -I{} redis-cli DUMP {})En Redis, la verificación básica es comparar el número total de claves con DBSIZE; INFO keyspace muestra la distribución por base de datos. Redis no tiene un checksum de tabla integrado; si se necesita una verificación exacta del contenido, obtenga la serialización DUMP por clave y compare ambos lados (tenga en cuenta las diferencias de TTL). También se puede usar la herramienta riot compare.
Elasticsearch
# Compare document counts (on source and target clusters)
GET customer/_count
# Details: for health/segment/storage comparison
GET _cat/indices/customer?v&h=index,docs.count,store.size
# Content by sampling: compare GET customer/_doc/<id> for the same _idsEn Elasticsearch, la verificación básica es comparar el número de documentos en ambos clústeres con GET <index>/_count (docs.count de _cat/indices también da un resumen rápido). Base la comparación en _count: docs.count de _cat/indices cuenta a nivel de Lucene (incluidos los subdocumentos nested; p. ej., un documento con dos elementos nested cuenta como 3), por lo que puede diferir de _count. Para verificar el contenido, compare tomando una muestra de documentos sobre el mismo conjunto de _id o mediante un campo hash.