Отражающие удаления / добавления записей между двумя наборами данных
В настоящее время у меня есть таблица из 3-х записей, которую нужно обновлять каждую ночь. Данные, которые заполняют эту таблицу, поступают из ~100 API, которые все нормализуются в одну гигантскую таблицу.
Проблема: как отразить добавление новых записей и удаление записей в источнике?
Факты: я не могу обрезать таблицу каждую ночь и заново вставлять. Каждый API предоставляет постоянный идентификатор для каждой записи (поэтому я могу отслеживать, что к чему). Некоторые поля будут обновляться каждую ночь.
Решения: Новые записи просты, я просто добавляю их в свою таблицу с датой "Доступно". Обновления также просты: для каждой записи я проверяю, существует ли она и изменились ли данные (производительность будет плохой).
Удаленные записи - вот где я застрял. API просто выдают мне кучу данных, как мне узнать, выпала ли запись?
Я думаю, что это какой-то обменный стол - есть идеи?
1 ответ
Если единственный способ определить, была ли удалена запись, - это проверить, доставляет ли ее API больше, не зная, какую именно запись вы ищете, вам нужно будет отслеживать iports. Если вы всегда делаете полный импорт:
Решение 1:
установите флаг для каждой строки в базе данных, затем выполните импорт и обновите флаг для каждой полученной строки, затем удалите все, что не было обновлено.
Решение 2. Установите идентификатор импорта (привязанный к дате?) Для каждого импорта и запишите его в записи базы данных. так что вы знаете, какая строка происходит из какого импорта. Переопределение существующих данных с помощью идентификатора импорта из последнего импорта. Тогда вы можете работать только с данными из последнего импорта.
но если вы всегда делаете полный импорт, отбрасывание всего раньше должно быть быстрее, не так ли?