Versione corta: è possibile leggere da dozzine o centinaia di partizioni di tabella in modalità multithreading per aumentare le prestazioni di ordini di grandezza?Prestazioni di archiviazione di tabelle di Azure dalla lettura con threading parallelo parallelo
Versione lunga: Stiamo lavorando a un sistema che memorizza milioni di righe nell'archivio della tabella di Azure. Partizioniamo i dati in piccole partizioni, ognuna delle quali contiene circa 500 record, che rappresenta un valore giornaliero di dati per un'unità.
Poiché Azure non dispone di una funzione di "somma", per ricavare un valore di dati di un anno, è necessario utilizzare un pre-caching o sommare i dati da soli in un ruolo Web o di lavoro di Azure.
Assumendo il seguente: - Lettura di una partizione non influisce sulle prestazioni di un altro - La lettura di un partizione ha un collo di bottiglia in base a velocità di rete e il recupero di server
Possiamo quindi prendere una congettura che se volevamo per sommare rapidamente un sacco di dati al volo (1 anno, 365 partizioni), potremmo usare un algoritmo fortemente parallelo e scalerebbe quasi perfettamente al numero di thread. Ad esempio, potremmo utilizzare le estensioni parallele .NET con 50+ thread e ottenere un ENORME incremento delle prestazioni.
Stiamo lavorando alla creazione di alcuni esperimenti, ma volevo vedere se questo è stato fatto prima. Dal momento che il lato .NET è sostanzialmente inattivo in attesa di operazioni a latenza elevata, questo sembra perfetto per il multi-threading.
Avete qualche commento per questo 6 anni dopo? – mayu
Sì, è assolutamente una buona idea, soprattutto perché gli obiettivi di scalabilità sono aumentati nel tempo. Dai un'occhiata a questa pagina per capire i limiti: https://docs.microsoft.com/en-us/azure/storage/storage-scalability-targets –