2016-03-22 10 views
2

Ich muß erhält einen Dienst auf dem Azure-Konto einzurichten, die XML-Daten empfangen werden und in eine Azure SQL-Datenbank importieren. Ich möchte in der Lage sein, von einem Remote-Server (wo die XML-Daten erstellt werden) eine Verbindung zu Azure herzustellen und die Daten dort hochzuladen, wo sie automatisch analysiert und in die SQL-Datenbank eingefügt werden. Die XML-Daten werden alle mit den gleichen Spalteneinstellungen und Datentypen formatiert, so dass das Parsen nicht schwierig sein sollte. Wo ich feststecke, versuche ich herauszufinden, wie man einen einfachen Dienst einrichtet, der die Daten empfängt und analysiert. Ich möchte das nicht über einen Import/Export-Assistenten, ein Website-Frontend oder ähnliches tun. Es muss automatisiert werden, so dass es, wenn es die Daten empfängt, zur Arbeit geht.Azure Service-XML-Daten und der Import in SQL-Datenbank

Bitte beachten Sie, ich bin nicht wirklich für Code zu fragen, mein Problem zu lösen. Mir geht es gut, selbst zu lernen, aber ich kann nicht anfangen, ohne die Gesamtheit von nicht weniger als 3 neuen Sprachen zu lernen ... Irgendwelche Hilfe bei der Suche, um zu helfen, oder wo ich anfangen soll?

EDIT: Dies ist das nächste, was ich bis jetzt finden kann. http://www.freshconsulting.com/building-data-import-tool-azure-webjobs/ Das einzige Problem dabei ist, dass ich möglicherweise keinen Zugriff auf ein SMTP - Relay habe, um Dateien zu senden. Daher müsste ich nur POST - Daten (oder REST - Daten ...?) Senden und die Daten entweder in ein XML- oder CSV-Datei, wenn sie Azure erreicht oder sie dynamisch in Echtzeit eingelesen hat. Die erste Option scheint am plausibelsten. Hat jemand Vorschläge?

Antwort

1

Eine Möglichkeit, diese Art von Lösung zu implementieren wäre webjob zu verwenden und löst die xml Update auf jede xml neue Nachricht auf dem Azure-Speicher (Queue oder Blob) auf SQL.

das WebJob SDK verwenden Sie das Attribut 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/

Dies ist die empfohlene Methode (Schnelligkeit, Zuverlässigkeit) verwenden.

Sie auch schreiben die WebJob SDK mit dem BlobTrigger verwenden

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/

Die WebJobs SDK Scans Log-Dateien für neue oder geänderte Blobs zu beobachten. Dieser Prozess ist nicht Echtzeit; Eine Funktion wird möglicherweise erst einige Minuten oder länger nach der Erstellung des Blobs ausgelöst. Darüber hinaus werden Speicherprotokolle auf "Best-Effort" -Basis erstellt. es gibt keine Garantie, dass alle Ereignisse

this helps Mit freundlichen Grüßen Stéphane

+0

Sehr hilfreich! Danke, @ Stephgou. Ich finde jedoch keine klare Erklärung für die Arbeit mit Queues on Azure. Worüber du sprichst, wäre Folgendes: Lade eine XML-Datei in den Azure-Blobspeicher hoch und verwende dann einen WebJob mit QueueTrigger, um diese Datei abzufangen und den Inhalt in Azure SQL zu laden. Richtig? –

+0

@Doc Hoss. Genau davon rede ich. Warteschlangen auf Azure wurden häufig während der ersten Azure-Schritte verwendet. Seitdem hat Service Bus das Angebot abgeschlossen, aber Warteschlangen sind immer noch da. Eine vollständige Beispielbeschreibung dieser Art der Verwendung (Web Job + Queue) finden Sie hier -> https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-get- gestartet - Ich hoffe, dass diese Informationen Ihr Verständnis meiner ersten Antwort vervollständigen werden - Mit freundlichen Grüßen - Stéphane – stephgou

1

Sie haben ein paar Optionen bekommen gefangen werden.

Sie können den gesamten Code selbst schreiben. Es gibt nichts, was Sie davon abhält, ein einfaches HTTP-Frontend aufzustellen und dort Ihre XML-Daten zu posten. Dies wäre (sagt sie) ein einfacher Web-API als Azure Web App gehostet, die Ihre XML und zerfetzt es in der SQL-Datenbank Dies hat den Vorteil, dass sie einfach

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

nimmt mit Entity Framework usw. , aber mit dem potenziellen Nachteil von Ineffizienz, wenn Ihr XML-Code sehr groß ist oder wenn Sie häufig hochladen (Vorsicht beim Puffern usw.).

Wie stephgou erwähnt, können Sie einen WebJob verwenden, um auf eine Warteschlange oder einen Blob-Container zu warten und Shredding und SQL-Einfügungen auf neue Objekte auszulösen, die im Queue/Blob-Container angezeigt werden. Sie werden immer noch einen Weg brauchen, um die Daten dorthin zu bekommen. Das könnte ein HTTP-API, die Sie schreiben, oder vielleicht könnten Sie manuelle Uploads machen ein Drittes Werkzeug:

http://storagetools.azurewebsites.net/

... oder Powershell:

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

Es gibt auch eine Funktion namens Azure Data Factory, die in gewisser Weise "SQL Server Integration Services in der Cloud" ist ... Sie erstellen ETL-Pipelines, um Daten in Azure zu übertragen, zu shredden und nach Bedarf zu transformieren und dann zu verarbeiten (in Ihrem Fall ist "Verarbeitung" einfach) Schreiben in SQL):

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

Eine andere Sache, die man beachten sollte, sind die Kosten. Ein dediziertes HTTP-Front-End für unregelmäßige Uploads bereitzustellen, ist möglicherweise nicht die effektivste Verwendung Ihres Geldes. Dienste wie Data Factory haben den Vorteil, dass sie pro Nutzung abgerechnet werden (mehr oder weniger, siehe Details hier ... https://azure.microsoft.com/en-us/pricing/details/data-factory/). Ihr Kilometerstand kann und wird variieren, der Punkt ist, dass Sie über die Ressourcen nachdenken müssen, die Sie verbrauchen, wie lange und wie oft, um die Kosten im Zeitverlauf zu berücksichtigen.

Viel Glück!

+0

Fantastische Informationen! Danke, @JoshL. Ich mag die Idee, PowerShell zu verwenden, um Daten vom Server zu Azure zu bekommen, und ich denke, dass es mit meinen Sicherheitsbeschränkungen einhergehen wird. Data Factory sieht wirklich cool aus, aber ich denke, es ist wahrscheinlich zu viel Pferdestärke für diese Instanz. Sobald ich in größere Projekte komme, werde ich es wieder besuchen. Danke für deine Hilfe! –