Best practice per il caricamento collettivo dei dati

caricamento collettivo dei dati su 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 di Cloud Firestore presenta alcune caratteristiche importanti e uniche rispetto ad altri database di documenti, che è importante tenere presente durante la modellazione dei dati.

La natura distribuita di Cloud Firestore può richiedere la modifica di alcune scelte di progettazione, in particolare per i workload ottimizzati per i database in cui la replica principale è il collo di bottiglia per il throughput di scrittura.

Best practice

I workload che elaborano grandi quantità di dati in un client single-thread possono creare un collo di bottiglia. I client potrebbero essere in grado di utilizzare il single threading per il caricamento collettivo dei dati, poiché il throughput del client e del server è simile. Un database Cloud Firestore può gestire un parallelismo significativamente maggiore, ma ciò richiede la configurazione dei client per l'invio di richieste in parallelo.

mongoimport

Quando utilizzi 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 flag --numInsertionWorkers. L'impostazione corretta potrebbe richiedere una messa a punto 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 flag --numInsertionWorkersPerCollection e il numero di raccolte parallele con il flag --numParallelCollections. Le impostazioni corrette potrebbero richiedere una messa a punto 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 un pooling o un accodamento complesso quando effettui chiamate al database. Ogni flusso di richieste può utilizzare connessioni indipendenti ed eseguire le chiamate al database in parallelo.
  • Utilizza offerte di computing parallelizzato: utilizzando servizi come Cloud Run, il tuo 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 problemi di rete o conflitti su un documento.

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