Eu tenho que implementar a sincronização de dados entre dois grandes bancos de dados que possuem estruturas completamente diferentes. Basicamente, preciso extrair alguns dados sobre produtos em tabelas diferentes no primeiro banco de dados e reorganizá-los para outras tabelas no segundo banco de dados.
Criar meus produtos pela primeira vez não é muito complicado. Mas estou procurando uma maneira de atualizar alguns dados específicos - nem todos os dados - sobre cada produto.
Obviamente, existem alguns problemas que tornam isso complicado.
- Não estou autorizado a fazer nada no banco de dados de origem além das consultas selecionadas.
- No banco de dados de destino, eu posso fazer consultas comuns (selecionar, atualizar, inserir, criar), mas não consigo modificar a estrutura / tabelas existentes.
- O banco de dados de destino e de origem tem estruturas completamente diferentes, as tabelas não são as mesmas, portanto os dados realmente precisam ser reorganizados - a comparação de tabelas não funciona.
- O banco de dados de destino usa um servidor MySQL - a origem pode ser o DB2.
- Não há campos de "horário atualizado" em lugar nenhum.
Portanto, todo o processo precisa ser feito em um único script Python (idealmente).
Penso em criar um hash para cada produto, com base nos campos a serem atualizados no banco de dados de destino: md5 (código + descrição + fornecedor + cerca de 10 outros campos). Um novo hash com base nos mesmos dados será criado diariamente a partir do banco de dados de origem. Armazenarei todos os hashes em uma única tabela (código do item, current_hash, old_hash) para fins de desempenho. Em seguida, compare e atualize o produto se o novo hash for diferente do antigo.
Existem cerca de 500 000 produtos, por isso estou um pouco preocupado com o desempenho.
É o bom caminho a percorrer?