Best practice per il caricamento collettivo dei dati

Caricare in blocco i dati in Cloud Firestore con strumenti come mongoimport e mongorestore.

Cloud Firestore è un sistema altamente distribuito che offre la scalabilità automatica per soddisfare le esigenze della tua attività. Cloud Firestore suddivide e combina dinamicamente i dati in base al carico ricevuto dal sistema.

La suddivisione basata sul carico avviene automaticamente senza alcuna preconfigurazione richiesta. Il sistema di suddivisione basato sul carico Cloud Firestore presenta alcune caratteristiche importanti e uniche rispetto ad altri database di documenti, che è importante tenere presente quando modelli i dati.

La natura distribuita di Cloud Firestore potrebbe richiedere la modifica di alcune scelte di progettazione in particolare per i carichi di lavoro ottimizzati per i database in cui la replica primaria è il collo di bottiglia per la velocità effettiva di scrittura.

Best practice

I carichi di lavoro che elaborano grandi quantità di dati in un client a thread singolo possono creare un collo di bottiglia. I client potrebbero essere in grado di utilizzare un singolo thread per caricare i dati in blocco, poiché la velocità effettiva del client e del server sono simili. Un Cloud Firestore database può gestire un parallelismo significativamente maggiore, ma ciò richiede la configurazione dei client per l'invio di richieste in parallelo.

mongoimport

Quando si utilizza lo strumento mongoimport, le richieste vengono effettuate in sequenza per impostazione predefinita. Per migliorare il tempo di caricamento in Cloud Firestore, imposta il numero di worker con il --numInsertionWorkers flag. L'impostazione corretta potrebbe richiedere l'ottimizzazione in base alle dimensioni del client.

mongorestore

Quando utilizzi lo strumento mongorestore, rimuovi il parametro retryWrites=false dalla stringa di connessione per migliorare la resilienza agli errori temporanei.

.

Per migliorare il tempo di caricamento in Cloud Firestore, puoi anche aumentare il numero di worker di inserimento per raccolta con il --numInsertionWorkersPerCollection flag e il numero di raccolte parallele con il --numParallelCollections flag. Le impostazioni corrette potrebbero richiedere l'ottimizzazione in base alle dimensioni del client.

Programmazione asincrona

Quando sviluppi il tuo software utilizzando operazioni compatibili con MongoDB, puoi migliorare il parallelismo nei seguenti modi:

  • Framework asincroni: l'utilizzo di framework asincroni consente di elaborare e rispondere alle richieste in parallelo. Non è necessario sviluppare pool o code complessi quando si effettuano chiamate al database. Ogni flusso di richieste può utilizzare connessioni indipendenti ed effettuare chiamate al database in parallelo.
  • Utilizzare offerte di calcolo parallelizzate: utilizzando servizi come Cloud Run, il sistema può scalare il numero di worker di calcolo necessari per elaborare i dati.

Errori temporanei

Quando lavori con un sistema distribuito di grandi dimensioni come Cloud Firestore, potresti riscontrare errori temporanei come interruzioni di rete o conflitti su un documento.

Quando carichi in blocco grandi quantità di informazioni, è importante mantenere una strategia di ripetizione per le scritture non riuscite senza che l'operazione di caricamento in blocco più grande non vada a buon fine.