2010-10-10 5 views
0

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

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

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

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

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

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

ответ

0

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

Решение 1:

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

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

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

+0

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