2010-08-25 2 views
4

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

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

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

Другие соответствующие факторы:

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

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

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

+1

Что такое большие объемы данных? 100GB/час? Как быстро должна быть репликация. Предполагается, что это какая-то запланированная массовая нагрузка или больше событий на основе записи? –

+0

Извините, «большой» я имел в виду «десятки тысяч записей дня», что потребует некоторых процессов, но вряд ли сильно повлияет на нашу пропускную способность. Массовое или управляемое событиями также зависит от нашего предлагаемого решения. Это может быть ночная работа или просто непрерывный поток отдельных обновленных записей/объектов. –

ответ

2

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

2

Если вы хотите получить полную копию своей базы данных, то log shipping - это хороший вариант, в противном случае проверьте replication, который дает вам более тонкий контроль над тем, что скопировано.

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

+0

Я думаю, что более ориентированная на обслуживание архитектура - это то, что мы ищем: если мы будем хранить полную копию своей базы данных, это также означает, что нам придется вносить изменения, когда они вносят изменения в свою модель. Должен быть какой-то средний контракт, который определяет данные и их структуру. –

+0

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

+0

Да, но тогда у нас будет база данных, которая «волшебным образом» меняется за одну ночь, возможно, нарушая наш код импорта/преобразования. :) –

0

Наверное, вот как я бы это сделать:

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

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

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