Я должен реализовать синхронизацию данных между двумя большими базами данных, которые имеют совершенно разные структуры. По сути, мне нужно собрать некоторые данные о продуктах в разных таблицах в первой базе данных и перегруппировать их для других таблиц во второй базе данных.
Создание моих продуктов с первого раза не очень сложно. Но я ищу способ обновить некоторые конкретные данные - не все данные - о каждом продукте.
Очевидно, есть несколько проблем, которые делают это сложно.
- Мне не разрешено ничего делать с исходной базой данных, кроме запросов выбора.
- В целевой базе данных я могу выполнять обычные запросы (выбрать, обновить, вставить, создать), но не могу изменить существующую структуру / таблицы.
- Target и source db имеют совершенно разные структуры, таблицы совсем не одинаковы, поэтому данные действительно нужно переставлять - сравнение таблиц не будет работать.
- Целевая база данных использует сервер MySQL - источником может быть DB2.
- Поля "обновленного времени" нигде нет.
Таким образом, весь процесс должен быть выполнен в одном скрипте Python (в идеале).
Я думаю о создании хэша для каждого продукта на основе полей, которые необходимо обновить в целевой базе данных: md5 (код + описание + поставщик + около 10 других полей). Новый хэш, основанный на тех же данных, будет создаваться ежедневно из исходной базы данных. Я буду хранить все хэши в одной таблице (код элемента, current_hash, old_hash) для целей производительности. Затем сравните и обновите продукт, если новый хеш отличается от старого.
Есть около 500 000 продуктов, так что я немного беспокоюсь о производительности.
Это хороший путь?