отражающие удаления / добавления записей между двумя наборами данных

0

В настоящее время у меня есть таблица из 3-х записей, которая нуждается в обновлении в ночное время. Данные, которые заполняют эту таблицу, поступают от ~ 100 API, которые все нормализуются в одну таблицу jumbo.

Проблема: Как отразить новые записи, добавленные и удаляемые записи в источнике?

Факты: Я не могу урезать стол каждую ночь и снова вставлять. Каждый API предоставляет постоянный идентификатор для каждой записи (поэтому я могу отслеживать, что именно). Некоторые поля будут обновляться каждую ночь.

Решения: Новые записи просты, я просто добавляю их в свой стол с датой AvailableFrom. Обновления также просты, для каждой записи я проверяю, существует ли она, и если данные изменились (производительность будет сосать).

Удаленные записи - это то место, где я застрял. API просто сбрасывают мне нагрузку данных, как я могу сказать, что запись "выпала"?

Я думаю о какой-то своп-таблице - любые идеи?

Теги:
differential-execution

1 ответ

0
Лучший ответ

Если единственный способ определить, была ли удалена запись, это проверить, не поместит ли api ее, не зная, какую запись именно вы ищете, вам нужно будет отслеживать iports. Если вы всегда делаете полный импорт:

Решение 1:

установить флаг для каждой строки в базе данных, затем выполнить импорт и обновить флаг для каждой строки, которую вы получите, а затем удалить все, что не было обновлено.

Решение 2: Установить идентификатор импорта (привязанный к дате?) Для каждого импорта и записать его в записи базы данных. поэтому вы знаете, какая строка исходит из импорта. Переопределение существующих данных с идентификатором импорта из последнего импорта. Затем вы можете работать только с данными из последнего импорта.

но если вы всегда делаете полный импорт, все, что нужно, должно быть быстрее, не нужно?

  • 0
    Спасибо, я пошел за 1-е решение. Решение 2, вероятно, более подходящее (я мог бы создавать объекты импорта со статистикой и т. Д.), Но вместо этого я добавил столбец LastUpdated. Затем отдельный процесс удаляет старые строки. Полный импорт уничтожил бы идентификаторы таблиц, на которые есть ссылки в другом месте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню