Консолидация данных из разных баз данных в одну с минимальной задержкой - PullRequest
3 голосов
/ 29 марта 2010

У меня есть 12 баз данных общим объемом около 1,0 ТБ, каждая на отдельном физическом сервере, на котором работает SQL 2005 Enterprise - все с одной и той же точной схемой. Мне нужно выгрузить эти данные в отдельную базу данных, чтобы мы могли использовать ее для других целей (создание отчетов, веб-сервисы и т. Д.) С максимальной задержкой в ​​1 час.

Следует также отметить, что все эти серверы находятся в одной стойке, соединены гигабитными соединениями и что количество вставок в базы данных минимально (в среднем 2500 записей в час). Текущий метод очень ненадежный: в настоящее время данные реплицируются (транзакционная репликация SQL Server) с каждого из 12 серверов в базу данных на другом сервере (да, 12 разных таблиц сотрудников с 12 разных серверов в одну таблицу сотрудников на другом сервер).

Каждая таблица имеет первичный ключ, и строки уникальны для всех таблиц (в каждой таблице есть FacilityID).

Какие у меня варианты? Должен быть простой способ сделать это.

Ответы [ 3 ]

2 голосов
/ 29 марта 2010

В чем проблема с репликацией транзакций SQL Server, во многих местах она используется? Похоже, что он настроен хорошо, с FacilityID в каждой базе данных?

1 голос
/ 30 марта 2010

В зависимости от количества таблиц, с которыми вы имеете дело, может быть проще настроить некоторые пакеты служб SSIS ETL, которые перемещают данные из каждой из таблиц. Если вы настроили конфигурации пакетов, а схема одинакова, вы сможете использовать один и тот же набор пакетов для всех баз данных. Если у вас более 10-20 таблиц, я, вероятно, либо не буду делать пакеты ETL, либо буду следить за тем, чтобы их создание было каким-то образом автоматизировано.

0 голосов
/ 29 марта 2010

Поскольку у вас есть Enterprise Edition и с размерами данных, такими же схемами, которые вы упомянули, одним из подходов может быть использование разделенных таблиц, 1 для каждого из различных источников на целевом сервере. Пример, который вы можете использовать для ключа раздела [ FacilityID], о котором вы упоминали, предполагая, что это не является обязательным для каждого источника, затем просто следуя обычным операциям перемещения данных, которые используются для перемещения данных между разделами, это даст вам консолидированную таблицу (разделенную), с которой вы будете звучать так же, как и вы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...