Репликация SQL Server (запросы и ограничения между базами данных)
Мы хотим реплицировать данные из одной базы данных в несколько других (на другом сервере). Имеет ли смысл реплицировать эти таблицы в общую базу данных на другом сервере и сделать так, чтобы наши перекрестные запросы ссылались на общую базу данных... или было бы более целесообразно выполнять репликацию в каждую отдельную базу данных на другом сервере? Могут ли объединения между базами данных повлиять на производительность? Будут ли ограничения между базами данных работать так, как ожидалось?
Однократная репликация в общую базу данных поможет повысить производительность репликации... Я пытаюсь оценить, будет ли стоить снижение производительности в результате запросов или ограничений между базами данных.
Изменить: Похоже, что кросс-базы данных невозможны на сервере SQL? Если это правда, то мы должны были бы копировать в каждую базу данных
1 ответ
Кросс-запросы к базе данных несколько медленнее, чем внутри одной и той же БД. Внешние ключи работают только внутри одной БД. Обычный подход состоит в том, чтобы создать отдельную схему в каждой БД (например, ETL) и затем реплицировать эти таблицы в эту схему. Этот подход на самом деле часто используется при репликации таблиц измерений между витринами данных.
При использовании подхода кросс-БД, используйте триггеры для реализации ограничений - может быть медленным и сложным. В зависимости от вашего приложения вы можете реализовать внешние ключи как "только логические" и периодически выполнять запросы "искать сирот", чтобы справиться с ссылочной целостностью.