2009-02-13 3 views
2

Как часть электронной коммерции, мне нужно спроектировать и реализовать черный ящик. Это должно принимать клиентов и заказы из различных внутренних и внешних источников данных (т. Е. Веб-сайт, экстрасеть, магазин yahoo, амазонки xml-каналы и т. Д.) И вставить/обновить бэкэнд-систему. Апи для вставки/обновления данных о клиентах и ​​заказах для веб-сайта и работы хорошо. Теперь нам нужно добавить возможность обрабатывать заказы из других источников данных.Какую модель/модель следует использовать для обработки нескольких источников данных?

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

ответ

1

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

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

EDIT

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

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

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

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

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

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

+0

Я посмотрел на SSIS, поскольку я в среде MSSQL Server, но нашел проблемы с этим подходом: http://ayende.com/Blog/archive/2007/07/15/SSIS-15-Faults. aspx http://ayende.com/Blog/archive/2008/01/15/SSIS-vs.-CSV.aspx Я действительно ищу решение для кода, хотя рассмотрю альтернативы. –

+0

SSIS и ODI являются специфичными для технологии. Я согласен с тем, что SSIS страдает от проблемы Microsoft до версии-3; хотя это несовершенно, это полезно. Informatica не является специфичной для технологии, и это очень хорошо, хотя и дорого. Обновленный ответ включает отправную точку для решения кода. –

0

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

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

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