Come inserire 20 milioni di record in un database NoSQL

Pubblicato: 2022-11-24

Esistono vari modi per inserire 20 milioni di record in un database NoSQL. Un modo sarebbe utilizzare la funzione di caricamento in blocco del database. Ciò richiederebbe che i dati fossero in un formato specifico comprensibile per il database e sarebbe il modo più efficiente per caricare i dati. Un altro modo sarebbe utilizzare uno script o un'applicazione per inserire i dati un record alla volta. Questo sarebbe un processo più lento ma non richiederebbe che i dati siano in un formato specifico.

MongoDB può gestire milioni di record?

Credito: freecodecamp.org

Per elaborare milioni di record in tempo reale, dovresti utilizzare MongoDB ed ElasticSearch. Sarebbe anche vantaggioso utilizzare queste strutture e concetti in un set di dati di grandi dimensioni .

Ottimizzando i massicci inserimenti di MongoDB, possiamo caricare 50 milioni di record più rapidamente del 33%! La pagina Github Setup è dove troverai il codice per tutti questi programmi. Ho testato il mio Macbook Pro con una velocità di uplink di 25–35 Mbps e una velocità di connessione di 25–35 Mbps. In questo esperimento, è possibile che i risultati differiscano da quelli ottenuti su un EC2 prod-ready. Una piattaforma di test dei dati Kaggle è una scelta eccellente per testare i dati perché ha set di dati preparati. yelp_academic_dataset_review.json, un file da 5 GB, contiene 6,9 ​​milioni di record. Dopo che i nodi hanno letto il file, Mongo ha impiegato 2,5 ore per scrivere 1 milione di record.

Questo strumento è consigliato per generare non più di 2 milioni di punti dati. Un'entità buffer Node.js non può contenere più di 2 GB di file. Ha perfettamente senso che gli stream dovrebbero essere usati qui. Possiamo inserire 100k sequenziali in questo esempio con un leggero ritardo. Ci sono voluti 29 minuti per inserire l'inserto. Poiché EventEmitter viene utilizzato su tutti i flussi, questo è il caso. Questo utilizzo della CPU è aumentato al 40%, il 10% in più rispetto a un inserimento in sequenza di 100k.

Gli IOPS sono quasi raddoppiati da 50 a 100 e le connessioni sono aumentate da 40 a 60. Dovrebbe scorrere ogni cartella, leggere il file e salvare lì il contatore della lunghezza dell'array delle recensioni. Se questo approccio funziona bene in futuro, può essere applicato a successivi inserimenti; prenditi il ​​tuo tempo per vedere come funziona. In questa sezione, abbiamo visto quanto tempo ci vorrebbe per leggere 51936 cartelle e inserire 63 milioni di record. Dobbiamo sapere quante cartelle sono state lette per raggiungere il prossimo milione di record perché l'inserimento dei dati può essere parallelizzato in un secondo momento. Il sistema impiega circa un'ora e mezza per inserire 63 milioni di record. In precedenza avevamo previsto che sarebbe stato il 33% più veloce di così!

Abbiamo caricato quasi 45 GB di dati in un'ora e mezza. Lo IOPS è stato di 125 per l'intero periodo e le connessioni sono rimaste intorno a 100 per la maggior parte del tempo. Ora che i risultati sono arrivati, immagino di poter iniziare a pianificare il futuro. InsertMany ti consente di inserire 1 milione di record in meno di un minuto. Per il caricamento tra 1 e 10 metri, molto probabilmente sarà necessaria l'API Stream per parallelizzare gli inserti. Poiché la CPU e gli IOPS del cluster sono così pesanti, le prestazioni dell'app possono risentirne notevolmente. Eseguire uno script di pianificazione per determinare quante operazioni/processi possono essere eseguiti contemporaneamente.

MongoDB ha una serie di vantaggi rispetto ad altri sistemi di archiviazione di file oltre ad essere una scelta eccellente per file di grandi dimensioni. Per iniziare, i file di grandi dimensioni possono essere facilmente archiviati nel database. Inoltre, il database ha la capacità di elaborare un gran numero di oggetti. Infine, il database è scalabile orizzontalmente, consentendogli di gestire una maggiore quantità di dati senza essere sopraffatto. Se desideri archiviare file di grandi dimensioni in un database, MongoDB è una scelta eccellente. Ci sono numerosi vantaggi nell'usarlo rispetto ad altre opzioni di archiviazione e scalabilità.

Qual è la dimensione massima del documento MongoDB?

Credito: brain-mentors.com

La dimensione massima per un documento MongoDB è di 16 megabyte.

Come inserire milioni di record in MongoDB

Supponendo che tu abbia un server MongoDB in esecuzione e che sia stato creato un database e una raccolta, puoi inserire i record utilizzando il metodo insert(). Questo metodo può accettare un array di documenti o un singolo documento.
Per inserire un singolo documento, utilizzare la seguente sintassi:
db.raccolta.insert(
{
nome: “John Doe”
}
)
Per inserire più documenti, utilizzare la seguente sintassi:
db.raccolta.insert([
{
nome: “John Doe”
},
{
nome: “Jane Doe”
}
])

Hai alcune opzioni. È possibile creare una raccolta separata per ciascun ID dispositivo e quindi interrogare quell'ID separatamente. Se hai molti dispositivi, questo può essere costoso. Se vuoi cercare tutti i documenti in una raccolta, puoi fare la stessa cosa con la stessa raccolta per tutti i dispositivi. Il costo di questo servizio può essere proibitivo se si dispone di un numero elevato di dispositivi. La terza opzione è creare una raccolta frammentata. Il carico verrà distribuito su Mongo, con conseguente elaborazione delle query più rapida . Se desideri creare la raccolta utilizzando l'opzione raccolta sharded, assicurati di impostare l'opzione shards su true.

MongoDB: un sistema di gestione di database Nosql

MongoDB è un sistema di gestione di database NoSQL creato per gestire i documenti. Può gestire un'ampia gamma di file di dati, con un limite predefinito di 100.000 chiavi di indice per documento. La piattaforma MongoDB è quindi in grado di archiviare una grande quantità di dati senza sovraccaricarsi. L'inserimento di massa è una funzione utile in MongoDB. Può essere utile se hai molti dati da aggiungere perché può inserire più documenti contemporaneamente.

Limite di inserimento in blocco di MongoDB

La versione MongoDB 3.6 attualmente produce 100.000.

Un metodo di inserimento in blocco consente di inserire più documenti contemporaneamente in MongoDB. Come parametro, il metodo insert genera un array di documenti. Gli utenti non sono tenuti a includere tutti i campi nella loro query. In questo esempio, utilizziamo la riga di comando per inserire più documenti utilizzando l'inserimento in blocco di MongoDB. L'inserimento di un numero in massa viene eseguito utilizzando il metodo Bulk.insert(). Questo metodo, introdotto dopo la versione 2.6, è simile all'inserimento di massa non ordinato. Creiamo prima una lista ordinata di auto con nome carbulk1, poi inseriamo i documenti eseguendo su di essi il metodo execute. Questo programma Java mostra come eseguire per la prima volta una varietà di operazioni di massa utilizzando i comandi della shell.

MongoDB ha un limite?

MongoDB supporta una profondità nidificata di 100 livelli, quindi i documenti possono avere dimensioni fino a 16 MB. Il database MongoDB può contenere solo un massimo di 20 GB di dati.