Architettura MongoDB: struttura, terminologia, requisiti e vantaggi
Pubblicato: 2020-12-28Sommario
Panoramica
Non c'è dubbio che Internet sia la spina dorsale dell'economia mondiale moderna. Oggi, quasi 4,7 miliardi di persone nel mondo utilizzano la piattaforma virtuale ogni giorno, utilizzando applicazioni basate su Internet per le notizie, acquistare vestiti, ordinare cibo, ascoltare musica, spostarsi da e verso l'ufficio e altro ancora.
Con una quantità così grande di utenti che forniscono contributi digitali ogni giorno, non c'è da stupirsi che nel cyberspazio vengano generate enormi quantità di dati non strutturati ogni singolo giorno. Ulteriori informazioni sull'ambito futuro di MongoDB.
Ciò ha dato origine all'urgente necessità di un nuovo paradigma di database in grado di archiviare, servire e supportare le applicazioni "Big Data" (come sono state conosciute) 24 ore su 24, 7 giorni su 7, senza interruzioni.
Immettere NoSQL.
L'ascesa dei database NoSQL
NoSQL, vagamente noto come "Non solo SQL", è un'alternativa ai database SQL vincolati dai loro schemi di tabelle fisse. Essendo altamente flessibile, NoSQL supera questo inconveniente strutturale dei database SQL ed è attrezzato per scalare orizzontalmente. I database NoSQL sono stati progettati per aumentare la produttività degli sviluppatori, dotandoli di un modello di dati semplice ed elegante per complesse operazioni di elaborazione e gestione dei dati.
In generale, questi modelli di archiviazione dei dati erano di 4 tipi: documento, valore chiave, colonna ampia e grafico. Ci concentreremo sui database dei documenti e sull'architettura MongoDB in questo blog (il principale database NoSQL)

La struttura MongoDB

Fonte: documentazione MongoDB
L'architettura MongoDB segue un modello di dati flessibile. A differenza di RDBMS, che impone una dichiarazione dello schema prima di inserire i dati, MongoDB non impone una struttura del documento fissa.
Terminologie
Campi
Coppia chiave-valore in un documento, è la controparte di una colonna nei database relazionali
Documento
Questo è l'equivalente di un record in RDBMS
Collezioni
Un gruppo di documenti è chiamato raccolta. Questo è analogo a una tabella RDBMS
Differenze tra l'architettura RDBMS e MongoDB
Si unisce
In RDBMS, i dati possono essere distribuiti tra più tabelle e uniti per accedervi in un'unica vista. Tale operazione JOIN non è possibile in MongoDB. Invece, tutti i dati vengono archiviati in un'unica raccolta ma possono essere separati tramite nidificazione o documenti incorporati
Normalizzazione
RDBMS garantisce la normalizzazione dei dati per evitare duplicati e record orfani. La flessibilità di MongoDB elimina la necessità di normalizzazione
Struttura
RDBS è utilizzato principalmente nel settore bancario, dove l'esatta struttura del database è nota a priori. MongoDB supporta enormi volumi di dati non strutturati ed è estensibile su applicazioni cloud, mobili, Web e Big Data.
La necessità e i vantaggi dell'architettura MongoDB
L'architettura MongoDB è in grado di gestire al volo le modifiche strutturali, che è la necessità del momento. Questo è perfetto per gli scenari in cui non hai visibilità sulla struttura del tuo database in anticipo.
Di seguito sono riportati alcuni dei suoi principali vantaggi
Basato su documenti
Può accogliere le modifiche del flusso di dati in modo dinamico, adattandosi ai mutevoli requisiti aziendali in tempo reale

Query ad hoc : potente linguaggio di query in grado di restituire campi specificati. Consente inoltre funzionalità di ricerca altamente granulari. (espressioni comuni a livello di campo, a livello di intervallo e altro)
Indicizzazione
Puoi indicizzare qualsiasi campo in un documento per velocizzare il processo di recupero dei dati.
Diamo ora un'analisi approfondita dell'architettura MongoDB .
Ma prima di farlo, dobbiamo capire il teorema della PAC.
Il teorema della CAP
CAP indica la tripletta di coerenza, disponibilità e tolleranza di partizione.
Diamo un'occhiata a cosa significa ogni termine in questo contesto
Consistenza
Se scrivi dati in un database distribuito, dovresti essere in grado di accedere agli stessi dati da qualsiasi nodo del sistema in qualsiasi momento. Si tratta di preservare l'integrità dei dati scritti.
Disponibilità
Si tratta di ridurre al minimo i tempi di fermo di un sistema. Le operazioni di lettura/scrittura dovrebbero essere eseguite su qualsiasi macchina nel cluster, senza errori.
Tolleranza di partizione o tolleranza ai guasti
indica la capacità di un sistema di continuare a funzionare senza intoppi anche nel caso di una partizione di rete, ovvero, diverse parti del cluster dovrebbero essere in grado di dialogare tra loro e sincronizzarsi in modo efficace.
Il teorema CAP afferma che un sistema distribuito DEVE essere Partition Tolerant. Qualsiasi partizione di rete non può causare l'arresto anomalo dell'intero sistema.
In altre parole, in un sistema distribuito è possibile garantire solo un parametro tra "Coerenza" e "Disponibilità", l'altro è la tolleranza della partizione.
Questo dà origine a un triangolo come questo:

Fonte: Data Science Pedia
MongoDB sceglie sempre la coerenza rispetto alla disponibilità ogni volta che è presente una partizione nel sistema (CP). Blocca tutte le operazioni di scrittura finché non può garantire l'esecuzione accurata di tali scritture.
Architettura MongoDB
MongoDB utilizza l'architettura a master singolo, il che significa che c'è una macchina principale che si occupa di tutte le operazioni di scrittura lato client. Tutte le altre istanze aggiunte successivamente al cluster costituiscono i nodi secondari, che comunemente gestiscono tutte le operazioni di lettura.
Si tratta fondamentalmente di copie di backup del server primario come protezione dai guasti primari.
Tutti questi server sono raggruppati in set di repliche. È possibile avere più set di repliche, ciascuno con i propri server primari e secondari.

Fonte: documentazione MongoDB
In caso di guasto del primario, il sistema sceglie un nuovo primario da tutti i nodi secondari. Ma questo accade arbitrariamente, a seconda di dove riceve le risposte ping più veloci da tutti i sistemi. Devi avere un numero dispari di server nel tuo cluster (minimo 3) in modo che un primario possa essere eletto con la maggioranza.
Se non vuoi spendere soldi per tre server, puoi nominare un nodo "Arbitro" il cui unico compito è votare per eleggere il primario.
Frammentazione
Lo sharding in MongoDB ti consente di distribuire i tuoi Big Data su diversi database.


Fonte: documentazione MongoDB
Hai un'applicazione con milioni di utenti. Il partizionamento orizzontale consente di partizionare questi utenti (in base a un indice univoco come un ID utente) in diversi set di repliche. Utilizzando un processo chiamato mongoS, l'Application Server dialoga con i Config Server (precisamente 3) per capire quale 'Shard' contiene i dati che sta cercando. mongoS esegue un processo di bilanciamento del carico in background per distribuire automaticamente il carico (in questo caso, il numero di utenti) in modo uniforme tra tutti gli shard.
Conclusione
Se vuoi saperne di più su MongoDB e sulle operazioni di database, dai un'occhiata alle idee di progetto MongoDB. Puoi esplorare il Diploma PG in Data Science da upGrad. Un corso di 12 mesi progettato per i professionisti che lavorano, ottieni una consulenza professionale completa e opportunità di lavoro, insieme al prestigioso status di Alumni IIIT Bangalore.
Ci auguriamo che questo articolo ti abbia aiutato a capire come funziona l' architettura MongoDB e come funziona il sistema. Per saperne di più, dai un'occhiata ai nostri altri blog.
Impara i corsi di sviluppo software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

