Panoramica della libreria dell'executor bulk di Azure Cosmos DB
SI APPLICA A: NoSQL
Azure Cosmos DB è un servizio di database distribuito in modo globale, veloce e flessibile che aumenta in modo elastico il numero di istanze per supportare:
- Elevata velocità effettiva di lettura e scrittura, dell'ordine di milioni di operazioni al secondo.
- Archiviazione di volumi elevati di dati transazionali e operativi, dell'ordine di centinaia di terabyte o anche di più, con una latenza prevedibile al millisecondo.
La libreria di esecuzione bulk consente di usare la velocità effettiva e la capacità di archiviazione eccezionali disponibili. La libreria dell'executor bulk consente anche di eseguire operazioni bulk in Azure Cosmos DB tramite API di importazione e aggiornamento bulk. Altre informazioni sulle funzionalità della libreria dell'executor bulk sono disponibili nelle sezioni seguenti.
Nota
Attualmente, la libreria di esecuzione bulk supporta operazioni di importazione e aggiornamento. L'API Azure Cosmos DB supporta questa libreria solo per gli account NoSQL e Gremlin.
Importante
La libreria di esecuzione bulk non è attualmente supportata in account serverless. In .NET è consigliabile usare il supporto bulk disponibile nella versione V3 dell'SDK.
Caratteristiche principali della libreria dell'executor bulk
L'uso della libreria di esecuzione bulk riduce in modo significativo le risorse di calcolo lato client necessarie per saturare la velocità effettiva allocata a un contenitore. Un'applicazione a thread singolo che scrive i dati usando l'API di importazione bulk ottiene una velocità effettiva di scrittura maggiore di 10 volte rispetto a un'applicazione multithread che scrive i dati in parallelo mentre satura la CPU del computer client.
La libreria di esecuzione bulk evita le tediose attività di scrittura della logica delle applicazioni per gestire la limitazione della frequenza delle richieste, i timeout delle richieste e altre eccezioni temporanee. Queste attività vengono gestite in modo efficiente all'interno della libreria.
È inoltre disponibile un meccanismo semplificato per consentire alle applicazioni di eseguire operazioni bulk per aumentare il numero di istanze. Una singola istanza dell'esecuzione bulk eseguita in una macchina virtuale di Azure può utilizzare più di 500.000 UR/sec. È possibile ottenere una velocità effettiva più elevata aggiungendo altre istanze nelle singole macchine virtuali client.
La libreria di esecuzione bulk può importare in blocco più di un terabyte di dati entro un'ora usando un'architettura con scalabilità orizzontale.
È possibile aggiornare in blocco i dati esistenti nei contenitori di Azure Cosmos DB come patch.
Come funziona l'esecuzione bulk?
Quando un'operazione bulk per importare o aggiornare documenti viene attivata con un batch di entità, queste ultime vengono inizialmente mescolate nei bucket che corrispondono ai relativi intervalli di chiavi di partizione di Azure Cosmos DB. All'interno di ogni bucket corrispondente a un intervallo di chiavi di partizione, le entità vengono suddivise in mini batch.
Ogni mini batch agisce come un payload di cui viene eseguito il commit sul lato server. La libreria di esecuzione bulk dispone di ottimizzazioni predefinite per l'esecuzione simultanea di questi mini batch sia all'interno degli intervalli sia tra gli intervalli delle chiavi di partizione.
Il diagramma seguente illustra come l'esecuzione bulk raggruppa i dati in chiavi di partizione differenti:
La libreria di esecuzione bulk si assicura di utilizzare al massimo la velocità effettiva allocata a una raccolta. Usa un meccanismo di controllo della congestione in stile AIMD per ogni intervallo di chiavi di partizione di Azure Cosmos DB per gestire in modo efficiente la limitazione della frequenza delle richieste e i timeout.
Per altre informazioni sulle applicazioni di esempio che utilizzano la libreria di esecuzione bulk, vedere Usare la libreria di esecuzione bulk .NET per eseguire operazioni bulk in Azure Cosmos DB e Eseguire operazioni bulk sui dati di Azure Cosmos DB.
Per informazioni di riferimento, vedere Libreria di esecuzione bulk .NET e Libreria di esecuzione bulk Java.