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