Tengo que implementar la sincronización de datos entre dos grandes bases de datos que tienen estructuras completamente diferentes. Básicamente, necesito recopilar algunos datos sobre productos en diferentes tablas en la primera base de datos y reorganizarlos para otras tablas en la segunda base de datos.
Crear mis productos por primera vez no es muy complicado. Pero estoy buscando una manera de actualizar algunos datos específicos, no todos, sobre cada producto.
Obviamente, hay algunos problemas que hacen que esto sea complicado.
- No se me permite hacer nada en la base de datos de origen, aparte de las consultas de selección.
- En la base de datos de destino, puedo hacer consultas habituales (seleccionar, actualizar, insertar, crear) pero no puedo modificar la estructura / tablas existentes.
- La base de datos de destino y fuente tienen estructuras completamente diferentes, las tablas no son iguales, por lo tanto, los datos realmente tienen que reorganizarse: la comparación de tablas no funcionará.
- La base de datos de destino utiliza un servidor MySQL; la fuente puede ser DB2.
- No hay campos de "hora actualizada" en ninguna parte.
Por lo tanto, todo el proceso debe hacerse en un solo script de Python (idealmente).
Pienso en crear un hash para cada producto, basado en los campos para actualizar en la base de datos de destino: md5 (código + descripción + proveedor + alrededor de otros 10 campos). A partir de la base de datos de origen se creará diariamente un nuevo hash basado en los mismos datos. Almacenaré todos los hashes en una sola tabla (código de artículo, current_hash, old_hash) para fines de rendimiento. Luego compare y actualice el producto si el nuevo hash es diferente del anterior.
Hay alrededor de 500 000 productos, así que estoy un poco preocupado por las actuaciones.
¿Es el buen camino a seguir?