Дифференцирующее обновление записей (объектов бизнес-логики) - PullRequest
2 голосов
/ 01 сентября 2010

Ситуация, с которой я сталкиваюсь, выглядит следующим образом:

Существует большое количество «плоских» файлов, из которых данные извлекаются приложением C # для создания записей, которые в свою очередь записываются в базу данных (сервер MS SQL). Полный выпуск базы данных содержит около 97 миллионов записей на 220 ГБ.

Задача состоит в том, чтобы создать дифференциальное обновление данных в базе данных, проанализировав новый полный выпуск и выяснив, какие из существующих записей были обновлены. Запись считается обновленной, если какое-либо из ее свойств было изменено.
[ОБНОВЛЕНИЕ] Каждая запись имеет уникальный идентификатор.

Проблема в том, что поставщик данных не предоставляет никаких указаний на изменение записи (номер версии или дату последней модификации) - только полные версии.

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

Итак, есть ли лучшее решение, чем это?

Любая помощь с делом будет принята с благодарностью!

Всего наилучшего, Борислав

1 Ответ

0 голосов
/ 09 сентября 2010

Есть ли ключ, который вы можете использовать для уникальной идентификации записи?

Если нет, вы можете найти только те, которые идентичны.Затем вам нужно будет удалить все существующие записи, которые не совпадают в новом выпуске, и добавить все записи из выпуска, которые не соответствуют записи в существующем выпуске.

Наличие ключа значительно упростит задачу.

...