2016-03-22 2 views
2

Мне нужно настроить службу на моей учетной записи Azure, которая будет получать данные XML и импортировать ее в базу данных Azure SQL. Я хочу иметь возможность подключиться к Azure с удаленного сервера (где будут созданы XML-данные) и загрузить данные, где он будет автоматически анализироваться и вставлен в SQL db. Данные XML будут отформатированы с одинаковыми настройками столбцов и типами данных, поэтому анализ не должен быть сложным. Где я застрял, просто пытаюсь выяснить, как настроить простой сервис, который получает и анализирует данные. Я не хочу делать это с помощью мастера импорта/экспорта, интерфейса веб-сайта или чего-то подобного. Он должен быть автоматизирован, чтобы при получении данных он работал.Служба Azure для получения данных XML и импорта в базу данных SQL

Обратите внимание, что я не прошу код для решения моей проблемы. Я в порядке с обучением, как это сделать сам, но я не могу начать работать, не изучая всего не менее 3 новых языков ... Любая помощь в поиске, чтобы помочь или с чего начать?

EDIT: Это самая близкая вещь, которую я могу найти до сих пор. http://www.freshconsulting.com/building-data-import-tool-azure-webjobs/ Единственная проблема заключается в том, что у меня может не быть доступа к SMTP-ретрансляции для отправки файлов, поэтому мне нужно будет просто отправлять данные POST (или данные REST ...?) И иметь данные, XML или CSV-файл, когда он добирается до Azure, или читать в динамическом режиме в реальном времени. Первый вариант кажется наиболее правдоподобным. У кого-нибудь есть предложения?

ответ

1

Одним из способов реализации такого решения было бы использовать webjob и запускать обновление xml в sql на каждое новое сообщение xml на лазурном хранилище (Queue or Blob).

Использование WebJob SDK вы можете использовать QueueTrigger атрибут

public static void HandleXMLdataFromQueueStorage([QueueTrigger("logqueue")] string logMessage, TextWriter logger) 
{ 
    logger.WriteLine(logMessage); 
} 

https://azure.microsoft.com/en-gb/documentation/articles/websites-dotnet-webjobs-sdk-storage-queues-how-to/

Это рекомендуемый метод (скорость, надежность).

Вы также можете использовать WebJob SDK с BlobTrigger атрибут

public static void HandleXMLdataFromBlobStorage([BlobTrigger("input/{name}")] TextReader input) 
{ 
// update SQL 
} 

https://azure.microsoft.com/en-gb/documentation/articles/websites-dotnet-webjobs-sdk-storage-blobs-how-to/

В WebJobs SDK сканирует файлы журналов, чтобы наблюдать за новые или измененные сгустки. Этот процесс не в режиме реального времени; функция может не срабатывать до нескольких минут или дольше после создания блоба. Кроме того, журналы хранения создаются с «наилучшими усилиями»; нет никакой гарантии, что все события будут захвачены

Надеются, что это помогает С наилучших пожеланиями Stephane

+0

Очень полезно! Спасибо, @stephgou. Однако я не нахожу четкого объяснения работы с очередями на Azure. То, о чем вы говорите, будет следующим: Загрузите XML-файл в хранилище Azure blob, затем используйте WebJob с QueueTrigger, чтобы поймать этот файл и получить его содержимое в Azure SQL. Верный? –

+0

@Doc Hoss. Это именно то, о чем я говорю. Очереди на Azure, которые часто используются во время первых шагов Azure. С тех пор Service Bus завершил предложение, но очереди все еще существуют. Здесь вы найдете полное описание этого вида использования (Web Job + Queue) -> https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-get- начал - надеюсь, эта информация завершит ваше понимание моего первоначального ответа - С наилучшими пожеланиями - Stéphane – stephgou

1

У вас есть несколько вариантов.

Вы можете написать весь код самостоятельно. Ничто не мешает вам встать на простой HTTP-интерфейс и POSTing вашего XML. Это было бы (скажем) простой Web API организовано как Azure Web App, который принимает ваш XML и обрывки его в вашу базу данных SQL с помощью Entity Framework и т.д.

https://azure.microsoft.com/en-us/services/app-service/web/

Это имеет преимущество в простоте , но с потенциальным недостатком неэффективности, если ваш XML очень большой или вы часто загружаетесь (будьте осторожны при буферизации и т. д.).

Как и в случае с stephgou, вы можете использовать WebJob для прослушивания в контейнере очереди или blob, а также для измельчения триггеров и вставки SQL в новые элементы, отображаемые в контейнере queue/blob. Вам по-прежнему нужен способ получить данные там, в первую очередь. Это может быть HTTP API вы пишете или, возможно, вы могли бы сделать вручную с помощью добавления стороннего инструмента:

http://storagetools.azurewebsites.net/

... или Powershell:

https://azure.microsoft.com/en-us/documentation/articles/storage-powershell-guide-full/

Там также функция под названием Azure Data Factory, который в некотором смысле является «Службы интеграции SQL Server в облаке» ... вы создаете конвейеры ETL для передачи данных в Azure, клонируете и трансформируете их по мере необходимости, а затем обрабатываете их (в вашем случае «обработка» - это просто записывая его в SQL):

https://azure.microsoft.com/en-us/services/data-factory/

Еще одна вещь, чтобы рассмотреть стоимость. Постоянный выделенный HTTP-интерфейс для выполнения нечастых загрузок может оказаться не самым эффективным использованием ваших денег. Такие услуги, как Data Factory, имеют преимущество при выставлении счета за использование (более или менее, см. Подробности здесь ... https://azure.microsoft.com/en-us/pricing/details/data-factory/). Ваш пробег может и будет меняться, дело в том, что вам нужно подумать о ресурсах, которые вы будете потреблять, о том, как долго, и как часто, чтобы повлиять на стоимость с течением времени.

Удачи!

+0

Фантастическая информация! Спасибо, @JoshL. Мне нравится идея использования PowerShell для получения данных с сервера на Azure, и я думаю, что это будет связано с моими ограничениями безопасности. Data Factory выглядит действительно круто, но я думаю, что это, вероятно, слишком много лошадиных сил для этого экземпляра. Как только я займусь некоторыми крупными проектами, я перейду к нему. Спасибо за вашу помощь! –

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