Какую модель / шаблон я должен использовать для обработки нескольких источников данных? - PullRequest
2 голосов
/ 13 февраля 2009

В рамках системы электронной коммерции мне нужно спроектировать и реализовать своего рода черный ящик. Для этого необходимо принимать клиентов и заказы из различных внутренних и внешних источников данных (например, веб-сайт, экстрасеть, Yahoo Store, каналы Amazon Amazon и т. Д.) И вставлять / обновлять бэкэнд-систему. API для вставки / обновления данных о клиентах и ​​заказах имеются для веб-сайта и работают хорошо. Теперь нам нужно добавить возможность обрабатывать заказы из других источников данных.

Я склонялся к модели провайдера (по одному провайдеру для каждого источника данных) и использовал ее для стандартизации данных в таблицах SQL Server, прежде чем вызывать API для фактического добавления клиентов и размещения заказов. Есть ли другие модели или модели, которые я должен рассмотреть? Вы уже сталкивались с этой проблемой раньше и как ее решили? Есть ли какие-либо ресурсы (статьи, книги, проекты и т. Д.), На которые я должен посмотреть?

Ответы [ 2 ]

1 голос
/ 13 февраля 2009

Вы можете найти инструмент ETL (Extract-Transform-Load), который сделает вашу жизнь проще, чем пытаться решить вашу проблему в коде .:

Они разработаны специально для описанного вами типа загрузки данных.

EDIT

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

На базовом уровне у вас должно быть три слоя: слой извлечения, слой преобразования и слой загрузки.

Слой extract должен отвечать за получение данных из источника. Не следует беспокоиться о форме данных на этом этапе. Чтобы сохранить уровень чистым, вы должны реализовывать только тот код, который «получает» данные здесь. Беспокойство о формировании его в слое трансформации.

Слой преобразование должен отвечать за сбор данных, извлеченных из различных источников, и преобразование их в форму назначения. Инструменты ETL делают это очень эффективно, обрабатывая данные как конвейеры. Они могут быть разделены и распараллелены. У вас, вероятно, не будет времени или ресурсов для этого. Альтернативой может быть загрузка данных в промежуточные таблицы (менее нормализованное представление данных).

Слой load берет преобразованные данные (в приведенном выше случае из промежуточных таблиц) и загружает их в конечное местоположение назначения.

Это в достаточной степени разделяет ваши слои, чтобы вы могли защитить себя от будущих изменений. Имейте в виду, однако, что вы действительно просто делаете то, что инструмент ETL сделает для вас из коробки.

0 голосов
/ 13 февраля 2009

Как уже упоминалось, ETL, вероятно, является подходящим вариантом, если только вы не можете стандартизировать способ поступления заказов на первый план, например, EDI или веб-сервисы.

Используйте инструменты ETL для преобразования из источников (электронной почты, файлов FTP и т. Д.) В общий конвейер в SQL Server, а затем создайте отдельный процесс, который обрабатывает ожидающие пакеты в конвейере.

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