Cum să inserați 20 de milioane de înregistrări într-o bază de date NoSQL

Publicat: 2022-11-24

Există diferite moduri de a insera 20 de milioane de înregistrări într-o bază de date NoSQL. O modalitate ar fi să utilizați caracteristica de încărcare în vrac a bazei de date. Acest lucru ar necesita ca datele să fie într-un format specific pe care baza de date îl poate înțelege și ar fi cea mai eficientă modalitate de a încărca datele. O altă modalitate ar fi să folosiți un script sau o aplicație pentru a introduce datele câte o înregistrare. Acesta ar fi un proces mai lent, dar nu ar necesita ca datele să fie într-un format specific.

Poate Mongodb să gestioneze milioane de înregistrări?

Credit: freecodecamp.org

Pentru a procesa milioane de înregistrări în timp real, ar trebui să utilizați MongoDB și ElasticSearch. De asemenea, ar fi avantajos să folosim aceste structuri și concepte într-un set mare de date .

Prin optimizarea inserțiilor masive MongoDB, putem încărca 50 de milioane de înregistrări mai rapid cu 33%! Pagina de configurare Github este locul unde veți găsi codul pentru toate aceste programe. Mi-am testat Macbook Pro cu o viteză de uplink de 25–35 Mbps și o viteză de conectare de 25–35 Mbps. În acest experiment, este posibil ca rezultatele să difere de cele obținute pe un EC2 prod-ready. O platformă de testare a datelor Kaggle este o alegere excelentă pentru testarea datelor , deoarece are seturi de date pregătite. yelp_academic_dataset_review.json, un fișier de 5 GB, conține 6,9 ​​milioane de înregistrări. După ce nodurile au citit fișierul, a fost nevoie de 2,5 ore pentru ca Mongo să scrie 1 milion de înregistrări.

Acest instrument este recomandat pentru generarea a nu mai mult de 2 milioane de puncte de date. O entitate tampon Node.js nu poate conține mai mult de 2 GB de fișiere. Este perfect logic ca fluxurile să fie folosite aici. Putem insera 100k secvențial în acest exemplu cu o ușoară întârziere. A durat 29 de minute pentru a introduce insertul. Deoarece EventEmitter este folosit pe toate fluxurile, acesta este cazul. Această utilizare a procesorului a crescut la 40%, cu 10% mai mult decât o inserție secvențială de 100k.

IOPS aproape s-au dublat de la 50 la 100, iar conexiunile au crescut de la 40 la 60. Ar trebui să itereze peste fiecare folder, să citească fișierul și să salveze contorul de lungime a matricei de recenzii acolo. Dacă această abordare funcționează bine în viitor, poate fi aplicată la inserții ulterioare; fă-ți timp să vezi cum funcționează. În această secțiune, ne-am uitat la cât timp ar dura citirea a 51936 de foldere și inserarea a 63 de milioane de înregistrări. Trebuie să știm câte foldere au fost citite pentru a ajunge la următorul milion de înregistrări deoarece inserarea datelor poate fi paralelizată ulterior. Sistemul durează aproximativ o oră și jumătate pentru a introduce 63 de milioane de înregistrări. Am prezis anterior că va fi cu 33% mai rapid decât atât!

Am încărcat aproape 45 GB de date în decurs de o oră și jumătate. IOPS a fost de 125 pentru întreaga perioadă, iar conexiunile au rămas în jur de 100 în cea mai mare parte a timpului. Acum că au ajuns rezultatele, cred că pot începe să planific pentru viitor. InsertMany vă permite să inserați 1 milion de înregistrări în mai puțin de un minut. Pentru încărcarea între 1 și 10 metri, cel mai probabil ar fi necesar Stream API pentru a paraleliza inserțiile. Deoarece procesorul clusterului și IOPS-ul sunt atât de grele, performanța aplicației poate avea de suferit foarte mult. Rulați un script de planificare pentru a determina câte operațiuni/procese pot fi executate simultan.

MongoDB are o serie de avantaje față de alte sisteme de stocare a fișierelor, pe lângă faptul că este o alegere excelentă pentru fișiere mari. Pentru început, fișierele mari pot fi stocate cu ușurință în baza de date. În plus, baza de date are capacitatea de a procesa un număr mare de obiecte. În cele din urmă, baza de date este scalabilă pe orizontală, permițându-i să gestioneze o cantitate mai mare de date fără a fi copleșită. Dacă doriți să stocați fișiere masive într-o bază de date, MongoDB este o alegere excelentă. Există numeroase avantaje în utilizarea acestuia față de alte opțiuni de stocare și scalabilitate.

Care este dimensiunea maximă a documentului Mongodb?

Credit: brain-mentors.com

Dimensiunea maximă pentru un document MongoDB este de 16 megaocteți.

Cum să inserați milioane de înregistrări în Mongodb

Presupunând că aveți un server MongoDB care rulează și aveți o bază de date și o colecție creată, puteți insera înregistrări folosind metoda insert(). Această metodă poate lua fie o serie de documente, fie un singur document.
Pentru a insera un singur document, utilizați următoarea sintaxă:
db.collection.insert(
{
nume: „John Doe”
}
)
Pentru a insera mai multe documente, utilizați următoarea sintaxă:
db.collection.insert([
{
nume: „John Doe”
},
{
nume: „Jane Doe”
}
])

Ai câteva opțiuni. Este posibil să creați o colecție separată pentru fiecare ID de dispozitiv și apoi să interogați acel ID separat. Dacă aveți o mulțime de dispozitive, acest lucru poate fi costisitor. Dacă doriți să căutați toate documentele dintr-o colecție, puteți face același lucru cu aceeași colecție pentru toate dispozitivele. Costul acestui serviciu poate fi prohibitiv de scump dacă aveți un număr mare de dispozitive. A treia opțiune este de a crea o colecție fragmentată. Încărcarea va fi răspândită în Mongo, rezultând o procesare mai rapidă a interogărilor . Dacă doriți să creați colecția utilizând opțiunea de colecție sharded, asigurați-vă că setați opțiunea shards la true.

Mongodb: Un sistem de management al bazelor de date Nosql

MongoDB este un sistem de gestionare a bazelor de date NoSQL construit pentru a gestiona documente. Poate gestiona o gamă largă de fișiere de date, cu o limită implicită de 100.000 de chei de index per document. Platforma MongoDB este astfel capabilă să stocheze o cantitate mare de date fără a deveni supraîncărcată. Inserarea în bloc este o caracteristică convenabilă în MongoDB. Poate fi util dacă aveți multe date de adăugat, deoarece poate insera mai multe documente simultan.

Limită de inserare în vrac Mongodb

Versiunea MongoDB 3.6 produce în prezent 100.000.

O metodă de inserare în bloc permite inserarea simultană a mai multor documente în MongoDB. Ca parametru, metoda de inserare generează o serie de documente. Utilizatorilor nu li se cere să includă toate câmpurile în interogarea lor. În acest exemplu, să folosim linia de comandă pentru a insera mai multe documente folosind inserarea în bloc MongoDB. Inserarea unui număr în bloc se realizează folosind metoda Bulk.insert(). Această metodă, care a fost introdusă după versiunea 2.6, este similară cu inserția în vrac neordonată. Mai întâi creăm o listă ordonată de mașini cu un nume carbulk1, apoi introducem documentele executând metoda execute pe ele. Acest program Java demonstrează cum să rulați o varietate de operațiuni în bloc folosind comenzi shell pentru prima dată.

Mongodb are o limită?

MongoDB acceptă o adâncime imbricată de 100 de niveluri, astfel încât documentele pot avea o dimensiune de până la 16 MB. Baza de date MongoDB poate conține doar maximum 20 GB de date.