Традиционный способ построения хранилища данных - следовать первому варианту.
- Извлечение реплики данных из исходной системы.
- Локальная обработка данных в промежуточных таблицах.
- Помещение оптимизированных данных в уровень хранилища для потребления. .
Есть несколько причин придерживаться шаблона. Например, когда вы выполняете манипуляции одновременно с извлечением, вы обычно загружаете исходную систему, что является одной из тех вещей, от которых вы пытались уйти, когда создавали хранилище данных для начала. Кроме того, практически каждый инструмент ETL, с которым я столкнулся, обрабатывает манипуляции с данными в памяти на сервере ETL, что почти всегда менее эффективно, чем обработка манипуляций с запросами или хранимыми процедурами на компьютере SQL Server. Иногда разрушительно медленнее. Конечно, есть и другие причины, но это те, которые укусили меня, когда я отличался от стандартной практики в прошлом.
На вашем месте я бы проверил эффективность создания реплики таблицы от запроса ваших связанных серверных таблиц по сравнению с передачей их непосредственно с сервера на сервер с SSIS. Для такого плоского перемещения данных SSIS может быть очень эффективным, тогда как для массовых перемещений данных связанные серверы могут быть меньше.
При этом вам не нужно отказываться от дополнительных нагрузок только потому, что ваш источник В системе нет отслеживания изменений.
Вы можете грипп sh и заполнять свои таблицы реплик каждый день, но когда вы это сделаете, у вас есть возможность ввести свое собственное отслеживание изменений. Наиболее распространенный шаблон для , который - это введение хэширования строк при импорте вместе с таблицами, которые отслеживают, какие записи вы уже загрузили. Разобраться в деталях всего, что выходит за рамки этого вопроса, но есть больше информации об этом в этих двух вопросах. В любом случае, достаточно для того, чтобы заправить свой собственный Google.
Эффективное выявление различий
Только SSIS извлекает изменения Delta