Постоянно передавать данные от партнера - PullRequest
4 голосов
/ 25 августа 2010

Мне было поручено внедрить систему непрерывного получения больших объемов данных от партнера.Схема данных на стороне партнеров отличается от нашей, поэтому при получении и импорте данных в нашу базу данных необходимо провести какое-то преобразование.

Какой наилучший подход для решения этой задачи?

У меня есть некоторый контроль над обеими сторонами уравнения, т. Е. Если мы решили использовать WCF, наш партнер внедрит эту услугу.Но важно максимально ограничить количество программ, которые должны выполняться на стороне партнеров.В идеале они использовали бы некоторые возможности SQL Server для экспорта своих данных, а затем позволили бы нам разобраться с остальными.

Другие важные факторы:

  • SQL Server используется с обеих сторон (2008на нашей стороне, неизвестно для партнера).
  • .NET 4 и / или что-либо, что идет из коробки от Microsoft, никаких сторонних продуктов.
  • Передача является односторонним, то есть изтолько для нас.
  • Объем данных составляет около десятков тысяч обновленных записей / объектов, передаваемых ежедневно.
  • Модель данных довольно сложная, с несколькими таблицами и связями.
  • Решение должно быть терпимым к изменениям со стороны партнеров (мы не знаем, когда и как они меняют свою модель)
  • Ремонтопригодность и надежность важнее производительности, т. Е. Нам не нужно последние данные, но сервис должен легко изменяться, и он не может завершиться сбоем / остановкой.

Я задаю этот вопрос, потому что я перегружен, но количество способов tего можно достичь.Как разработчик .NET, я склоняюсь к реализации WCF или, может быть, даже к некоторому пользовательскому обмену на основе XML.Но я знаю, что Biztalk, вероятно, будет отвечать всем требованиям, и SQL Server, вероятно, имеет некоторые изящные встроенные функции, о которых я не знаю.

Любые указатели, идеи и предложения приветствуются!

Ответы [ 3 ]

2 голосов
/ 25 августа 2010

В дополнение к предложениям Уилла вы можете взглянуть на SSIS (службы интеграции SQL Server). При этом вы можете экспортировать на FTP-сайт, а затем импортировать его на другой стороне.

2 голосов
/ 25 августа 2010

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

Вы можете копировать данные как есть и иметь дело с логикой преобразования на вашей стороне провода.

0 голосов
/ 25 августа 2010

Вероятно, вот как я это сделаю:

  1. Сохранение локальной копии базы данных вашего партнера.Давайте назовем это этапом, потому что вы преобразуете данные здесь.Для этого используйте Data Compare (функция VS 2010, которую вы можете автоматизировать) или репликацию.Я не уверен, что репликация запускает CDC, но сравнение данных обязательно.
  2. Включить изменение сбора данных в промежуточной базе данных.Это дает вам только измененные записи, поэтому вы можете выборочно преобразовывать данные и обновлять базу данных.
  3. Создание и развертывание задания SSIS, которое сканирует таблицы CDC, преобразует данные и загружает в вашу базу данных.

Насколько я знаю, Data Compare хорошо работает при изменении схемы (игнорирует изменения схемы).CDC также работает хорошо, все, что вам нужно сделать, это создать второй экземпляр захвата, если есть изменение схемы, и удалить первый.

...