2016-06-20 3 views
1

Я отвечаю за синхронизацию данных из новой системы со старой системой. Я использую ssis 2012 и задаюсь вопросом, что является лучшим решением. Мне нужна эта синхронизация данных для новых записей, изменений записей и удаленных записей в новой системе. Синхронизация данных является одним из способов и должна быть максимально приближена к реальному времени с помощью ssis. Должен ли я использовать CDC в новой базе данных или в таблице сообщений из исходного приложения, чтобы указать тип изменений, которые вы используете, используйте хранимые процедуры или ssis с отдельными промежуточными таблицами?Синхронизация данных между новой и старой базой данных

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

+0

Являются ли две базы данных на разных серверах? Как долго вы должны их синхронизировать? Это целая схема или только несколько таблиц? Являются ли структуры похожими или у вас есть много поисков для преобразования данных? – Mike

+0

Да на разных серверах. Мне нужно, чтобы они синхронизировались в течение года. Структуры таблиц различаются так много поисков, отображений и преобразований. –

+0

Итак, вы будете делать это уже 3 года! Какой у вас объем изменений? – Mike

ответ

1

Вот некоторые вещи, которые следует учитывать из моего опыта.

  • , если у вас нет их уже добавить последний измененный столбец DATETIME в каждый таблицы. Убедитесь, что он автоматически устанавливает значение getdate(). Этот триггер также может захватывать удаления в локальную таблицу для периодической передачи в таблицу промежуточного назначения. (Если это невозможно, у вас может быть «локальная» таблица с данными за последние X месяцев и сравнить с ней, чтобы обнаружить изменения? Возможно, сохраните первичный ключ и контрольную сумму, которую вы можете сравнить с контрольной суммой в реальном времени)

  • создайте все ваши таблицы преобразования в старой базе данных или в отдельной базе данных, чтобы в один прекрасный день вы могли отключить все. На новом сервере рассмотрит отдельную БД для хранения ваших импорта промежуточных таблиц и хранимые выхлопатывает, которые делают реального импорт

  • рассмотреть модернизацию старой базы данных, чтобы получить лучшую производительность возможности - или оставить старый и медленным, так что вы есть, чтобы уйти в отставку!

  • Я не знаю CDC, поэтому не могу посоветовать, но я делал это несколько раз, поэтому у меня есть шрамы и каждый раз выучились из предыдущего.

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

  • В вашей промежуточной БД, создать sprocs, которые будут делать слияние каждой таблицы

  • надеюсь, у вас есть удалить флаги на таблицы или может стать беспорядочным. Вам могут потребоваться триггеры, чтобы скопировать эти данные до их появления. Затем вы можете пометить его в своих промежуточных таблицах

  • построить систему вытяжки и расписание с соответствующей частотой. Запишите метаданные, чтобы вы могли с легкостью сообщить об этом

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

  • считает сохранение данных промежуточной базы данных, но использование метка времени, чтобы показать, когда применяются импортные/обновленные/удаленные изменения (а также даты и время изменения в исходной системе) в случае, если есть вопросы

    • вы говорите, что это один из способов интерфейса. Я согласен, что теперь вы должны публично говорить. Однако в конце этого проекта может оказаться полезным изменить интерфейс, чтобы старая система была заполнена новой (для кодовых таблиц, чтобы они оставались в очереди или некоторые транзакционные данные).
  • В других случаях вам может понадобиться округлить поездку от старого к новому и обратно в Старый или N> O> N, так что вы можете получить первичные данные ключа из обеих систем, доступных для других экстрактов

  • - база данных назначения, которая еще разрабатывается? Если это связано с разработчиками в ваших планах и с пользователями!

  • убедитесь, что ваши пользователи подписались на всех кодовых таблицах, которые они будут использовать для классификации данных в приложении. Убедитесь, что они понимают, как вы будете сопоставлять старые и новые коды. Это может означать, что если у вас есть несколько новых кодов из старого кода, они должны будут обновить их вручную, к счастью, вы сохранили метаданные, чтобы они могли получать ежедневный отчет, чтобы они знали, что проверить!

Успехов

+0

Cdc - сбор данных изменений. Представлено в sql server 2008. –

+0

На самом деле хорошие советы, как исходные системные таблицы, не имеют последней обновленной даты для каждой таблицы, и мне нужно разработать несколько изменений статуса для некоторых таблиц, а не только последнее изменение статуса для записи. –

+0

Вы можете иметь несколько отдельных систем экспорта и импорта примерно каждые X минут, другие - только ежедневно или после окончания месяца, если вы знаете, что важно, когда. Вы можете пропустить индивидуальные изменения, если система верна после обновления. – Mike

0

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

+0

Для моего наставления репликация адресует их потребность в комментариях «Структуры таблиц разные, поэтому много поисков, сопоставлений и преобразований» – billinkc

+0

Согласен. Не уверен, что это решение будет работать. –

Смежные вопросы