2016-08-05 19 views
2

In einer Azure-Funktion können Sie einen Blob-Trigger verwenden. Dieser Trigger kann bound to a variety of data structures sein:Für welche C# -Datenstruktur sollten Blob-Inhalte für eine optimale zeilenweise Verarbeitung gebunden sein?

  • Textreader (Eingang)
  • Stream-
  • ICloudBlob
  • CloudBlockBlob
  • CloudPageBlob

Wenn mit Protokolldaten, dh Daten arbeiten Sie bearbeiten möchten Jede Zeile von welcher Struktur sollte verwendet werden, um die Rechenzeit und die Speichernutzung zu minimieren?


Dies ist der aktuelle Prozess, den ich verwende und es fühlt sich nicht sehr elegant an. Möglicherweise nicht relevant, aber die Absicht besteht darin, Daten in JSON zu serialisieren und in eine Warteschlange oder documentDB zu stellen.

+0

Aus meiner Erfahrung gibt es keine Möglichkeit, die Zeilen außer dem Lesen bis zum Ende zu erhalten. Wenn Sie die Computerzeit und die Speichernutzung minimieren möchten, könnten Sie beispielsweise queue oder documentDB versuchen. –

+0

@ Jambor-MSFT ja alle Zeilen müssen gelesen werden, und während sie Tab-getrennt sind, müssen sie verarbeitet werden, so dass sie in eine Warteschlange oder docdb gehen können. Ich versuche, dafür eine effiziente Azure-Funktion zu erstellen. Die Frage ist, ob einer der Objekttypen, an die eine Blob-Eingabe gebunden werden kann, für diesen Anwendungsfall effektiver ist als andere. –

Antwort

3

Von einer Leistungsperspektive wäre die Verwendung eines Streams am besten, da dies den Speicherdruck/die Ladezeit reduzieren würde.

In Bezug auf den algorithmischen Ansatz, werden Sie nicht viel besser tun, als nur einen Puffer zu speichern und die Zeile zu verarbeiten, wenn Sie das Zeichen '\n' sehen. Wenn Sie sich über die Leistung usw. keine Sorgen machen, könnte ich das verwenden, was Sie haben, weil es ganz einfach ist. Funktionen werden ohnehin horizontal skaliert.