Как мне передавать большие данные etl между 2 SQL-серверами?

#sql #sql-server #etl

#sql #sql-server #etl

Вопрос:

Мой основной источник данных получает 50 миллионов записей в день. Мне нужна максимальная задержка просмотра записи около 5 минут.

Как у меня есть наилучший способ перенести данные из основного источника данных SQL Server в отчет об источнике данных SQL Server.

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

Комментарии:

1. Может быть, репликация или синхронизация данных?

2. Репликация была бы очевидным выбором. Вы проводили какие-либо собственные исследования?

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

4. Я также ищу метод репликации, но получаю больше проблем с производительностью.

5. Репликация обычно эффективна, если она настроена правильно

Ответ №1:

Наиболее распространенный подход к минимизации нагрузки на ваш исходный сервер — выполнять периодические извлечения с использованием метки времени, то есть простого выбора … WHERE timestamp > previous-max-timestamp-extracted .

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

Да, вы могли бы использовать CDC, но это часто сложнее и обычно добавляет некоторые ограничения.

Приветствую, Кристиан