No utilicé FME, pero tenía una tarea de procesamiento similar que requería usar la salida de un trabajo de procesamiento de 5 horas para identificar tres posibles casos de procesamiento para una base de datos paralela a través de un enlace de red de bajo ancho de banda:
- Nuevas características que se agregarán
- Funciones existentes para actualizar
- Funciones existentes que se eliminarán
Como tenía una garantía de que todas las características retendrían valores de ID únicos entre pases, pude:
- Ejecute un script de procesamiento que generó una tabla de pares {uID, checksum} en las columnas importantes de la tabla actualizada
- Usó los pares {uID, checksum} generados en la iteración anterior para transmitir actualizaciones a la tabla de destino con las filas en la tabla actualizada donde el uID estaba EN una subconsulta donde las sumas de verificación no coincidían
- Transmita inserciones desde la tabla actualizada que una subconsulta de combinación externa indicó que tenía UIDs no coincidentes, y
- Transmitió una lista de UID para eliminar características en la tabla externa que una subconsulta de combinación externa indicó que ya no tenía UID coincidentes en la tabla actual
- Guarde los pares actuales de {uID, checksum} para la operación del día siguiente
En la base de datos externa, solo tenía que insertar las nuevas características, actualizar los deltas, llenar una tabla temporal de uIDs eliminados y eliminar las características en la tabla de eliminación.
Pude automatizar este proceso para propagar cientos de cambios diarios a una tabla de 10 millones de filas con un mínimo impacto en la tabla de producción, utilizando menos de 20 minutos de tiempo de ejecución diario. Funcionó con un costo administrativo mínimo durante varios años sin perder la sincronización.
Si bien es ciertamente posible hacer N comparaciones entre M filas, el uso de un resumen / suma de verificación es una forma muy atractiva de realizar una prueba de "existencia" con un costo mucho menor.