Accesso casuale GROB BLU

2

Ho un'applicazione desktop WPF standalone che raccoglie dati da schede convertitore digitali-analogiche, calcola, analizza questi dati e crea quindi file binari (formato proprietario) con il risultato. C'è un ritmo di un record (fondamentalmente un dizionario con i dati ottenuti) aggiunto ogni secondo nel file di archiviazione finale.

Inoltre, questi dati in tempo reale devono essere disponibili per un'applicazione Web (che visualizza grafici in tempo reale) ospitati nel cloud di Azure. Quindi, forse, ovviamente, verrà utilizzata una memoria Azure Blob in cui verranno archiviati i file di archiviazione finali.

Lo scenario ideale è quello di aggiornare, appena possibile, l'applicazione web con il nuovo record calcolato su una macchina su cui è in esecuzione l'app standalone. Ciò significa che l'app standalone deve caricare un singolo record di dati contemporaneamente e non un intero file ogni secondo. L'app Web deve essere in grado di leggere il nuovo record e non solo l'intero file. Quindi i BLOB ospitati nello storage BLOB di Azure devono essere letti in modo simile agli stream locali, utilizzando API come Stream.Seek(int) e Stream.ReadBytes(int) .

Ci sono possibilità di farlo usando un controllo granuloso su un blob ospitato in un account di archiviazione di Azure?

In caso contrario, quali altri scenari possono essere utili? Un'applicazione ASP Web Api 2 esiste per altri scopi, quindi forse può essere sfruttata come intermedia tra l'app standalone e l'app web. Forse qualcosa come una coda?

Modifica successiva

Ci sono due tipi di utilizzo dei dati calcolati. Il primo è descritto sopra, i dati calcolati devono essere visualizzati in tempo reale su un'applicazione web. Il secondo enfatizza la necessità di file binari e blob: i file vengono scaricati e modificati offline. Quindi è obbligatorio avere i file generati e archiviati in una memoria BLOB.

    
posta tomab 14.09.2015 - 18:08
fonte

2 risposte

1

Perché vuoi utilizzare BLOB invece di archiviazione basata su record?

Il modello tipico per una soluzione di raccolta e analisi dei dati è

Raccogli dati non elaborati - > Trasforma i dati - > Memorizza i dati - > Analizza - > Visualizzazione

Azure ha una serie di servizi specificamente progettati per gestire questi passaggi in modo molto efficiente (come migliaia di transazioni al secondo):

Hub eventi - > Data Factory - > DocumentDB o DB SQL - > HDInsights - > PowerBI o app Web

Per le applicazioni di volume inferiore è possibile utilizzare i servizi generici che sarebbe probabilmente più semplice da configurare:

API Web o coda di archiviazione - > Lavoro Web - > DocumentDB / SQL DB / Storage tabella - > App Web

    
risposta data 14.09.2015 - 22:48
fonte
0

Sì, puoi farlo usando appendBlobs che ti permette di aggiungere byte a un blob già esistente. Comunque non penso che sia quello che vuoi, aggiungere blob sono limitati a 50 000 appendi e dopo non funzioneranno più. Quindi, nel caso di usare un appendblob, è necessario assicurarsi che i BLOB abbiano vita breve. Ti suggerisco di usare i suggerimenti di BenV se vuoi fare questo il "modo azzurro".

Altri suggerimenti è utilizzare una macchina virtuale e implementare il proprio servizio "blobStorage" su di essa. (sembra complesso, in realtà non lo è). Recentemente ho provato questo problema con un problema simile e ho ottenuto ottimi risultati. Una macchina virtuale in azzurro può avere un blobStorage come back-end ma è ottimizzata in modo che tu possa accedervi in modo più efficiente.

    
risposta data 13.03.2016 - 12:48
fonte

Leggi altre domande sui tag