Мне нужно экспертное мнение о моем дизайне для ежедневной дополнительной выписки. Я использую SQL 2008 R2, и у меня есть БД приличного размера, около 1 миллиона записей о людях со всеми их атрибутами и отношениями с ролью другого человека.
Я хочу сделать две вещи (по крайней мере сейчас)
- Потребитель хочет получить дамп того, что изменилось (новое/обновления) в плоском файле.
- Другому потребителю нужны новые данные только в плоском файле (другой формат).
Исходя из этих требований, кажется, что общего только одно: они оба хотят «что изменилось сегодня». Итак, вот мой подход:
- Создайте управляющую таблицу с Tablename и LastExtractDateTime в виде двух столбцов.
- Создайте рабочую таблицу практически со всеми полями, которые нужны потребителям.
- У меня есть CreatedDate и LastModifiedDate для всех транзакционных таблиц.
- Каждый день, скажем, в 22:00, заполняйте таблицу stage (специальный пакет SSIS) изменениями. Хранимые процедуры для извлечения всех новых данных (на основе CreatedDate) и всех измененных данных (на основе LastModifiedDate) всех дат, превышающих дату в столбце Control.LastExtractDateTime.
- При успешном извлечении данных этапа обновите Control.LastExtractDateTime, указав текущую дату.
- Запустите другие пакеты SSIS в зависимости от того, удалось ли это или нет (у нас есть собственный планировщик).
Прокомментируйте, пожалуйста. Спасибо.