Архитектура: сложная задача конвейера данных - PullRequest
0 голосов
/ 22 апреля 2009

Я работаю над веб-приложением, управляемым базой данных (ASP.NET, SQL 2008), которое получает структурированные данные XML из различных источников. Данные напоминают набор и часто нуждаются в «очистке», поэтому они передаются через базу данных в виде XML и превращаются в набор результатов для отображения.

Я хотел бы получить полученные «чистые» результаты и отправить их в архивную базу данных, чтобы сохранить их на диске.

Варианты, которые я рассмотрел до сих пор:

  • Сериализует весь «чистый» набор результатов в объект (сериализованный в XML / .NET) и отправляет его обратно в архивную базу данных

    • PRO: легко повторяется - может профилировать / захватывать вызовы базы данных на компьютере архива и повторно запускать их для выявления любых проблем
    • CON: управление версиями может быть сложным
  • Сохранять очищенные результаты в таблице и периодически копировать свежие записи в этой таблице на компьютер архива

    • PRO: Простота сборки - быстрое запланированное задание
    • CON: сложнее воспроизводить вызовы на компьютере архива; нужно будет держать содержимое входной таблицы около

Есть ли другие варианты, и кто-нибудь имел опыт работы с подобными ситуациями?

1 Ответ

1 голос
/ 22 апреля 2009

Я успешно использовал оба случая, и то, что я делаю, зависит от системы.

Сохранение необработанного XML:

Я склонен сохранять Raw Xml, когда я имею дело с неструктурированными данными или когда мы имеем дело с системой обмена сообщениями, и мы хотим отслеживать сообщения. Например, в приложении, над которым я работал, собирали сообщения от развернутых клиентов Windows, мы помещали сообщения в реляционную структуру, а затем переносили их на склад. Когда я взял на себя управление проектом, мы начали хранить исходный xml, потому что он позволял нам воспроизводимость и возможность точно видеть, что поступает в систему.

Реляционные данные

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

Сохранение бинарного объекта

Последнее, что я сделал, это сохранил весь сериализованный двоичный объект. Я нахожу это удобным, когда граф объектов довольно сложен, и отношения между объектами важны. У этого есть огромный недостаток, который является версионированием; тем не менее, я справился с этим достаточно успешно, даже с изменениями пространства имен, изменениями иерархии объектов и т. д. Если вам нужен доступ к данным в SQL, это не тот путь.

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