Che cos'è la MongoDB? Introduzione, Archiarchitettura, caratteristiche ed esempio

Che cos'è la MongoDB?

MongoDB è un database NoSQL orientato ai documenti utilizzato per l'archiviazione di dati ad alto volume. Invece di utilizzare tabelle e righe come nei tradizionali database relazionali, MongoDB si avvale di collezioni e documenti. I documenti sono costituiti da coppie chiave-valore che costituiscono l'unità di dati di base MongoDB. Le raccolte contengono insiemi di documenti e funzioni che equivalgono alle tabelle di database relazionali. MongoDB è un database venuto alla luce intorno alla metà degli anni 2000.

MongoDB Caratteristiche

  1. Ogni database contiene raccolte che a loro volta contengono documenti. Ogni documento può essere diverso con un numero variabile di campi. Le dimensioni e il contenuto di ciascun documento possono essere diversi l'uno dall'altro.
  2. La struttura del documento è più in linea con il modo in cui gli sviluppatori costruiscono le loro classi e oggetti nei rispettivi linguaggi di programmazione. Gli sviluppatori spesso dicono che le loro classi non sono righe e colonne ma hanno una struttura chiara con coppie chiave-valore.
  3. Le righe (o documenti come richiamati in MongoDB) non è necessario che sia definito in anticipo uno schema. Invece, i campi possono essere creati al volo.
  4. Il modello di dati disponibile all'interno MongoDB consente di rappresentare relazioni gerarchiche, di memorizzare array e altre strutture più complesse più facilmente.
  5. Scalabilità – Il MongoDB gli ambienti sono molto scalabili. Le aziende di tutto il mondo hanno definito cluster, alcuni dei quali gestiscono oltre 100 nodi con circa milioni di documenti all'interno del database

MongoDB Esempio

L'esempio seguente mostra come è possibile modellare un documento MongoDB.

  1. Il campo _id viene aggiunto da MongoDB per identificare in modo univoco il documento nella raccolta.
  2. Ciò che puoi notare è che i dati dell'ordine (IDOrdine, Prodotto e Quantità) che in RDBMS verranno normalmente archiviati in una tabella separata, mentre in MongoDB viene effettivamente archiviato come documento incorporato nella raccolta stessa. Questa è una delle differenze principali nel modo in cui vengono modellati i dati MongoDB.

MongoDB Esempio

Componenti chiave di MongoDB Architectura

Di seguito sono riportati alcuni dei termini comuni utilizzati in MongoDB

  1. _ID – Questo è un campo obbligatorio in ogni MongoDB documento. Il campo _id rappresenta un valore univoco nel file MongoDB documento. Il campo _id è come la chiave primaria del documento. Se crei un nuovo documento senza un campo _id, MongoDB creerà automaticamente il campo. Quindi, ad esempio, se vediamo l'esempio della tabella clienti sopra, Mongo DB aggiungerà un identificatore univoco di 24 cifre a ciascun documento nella raccolta.
_Id Identificativo del cliente Nome del cliente ID ordine
563479cc8a8a4246bd27d784 11 Guru99 111
563479cc7a8a4246bd47d784 22 Trevor Smith 222
563479cc9a8a4246bd57d784 33 Nicole 333
  1. Collezione – Questo è un raggruppamento di MongoDB documenti. Una raccolta è l'equivalente di una tabella creata in qualsiasi altro RDMS come Oracle o MSSQL. Esiste una raccolta all'interno di un singolo database. Come visto dall'introduzione, le raccolte non impongono alcun tipo di struttura.
  2. Cursore – Questo è un puntatore al set di risultati di una query. I client possono scorrere un cursore per recuperare i risultati.
  3. Banca Dati – Questo è un contenitore per raccolte come in RDMS in cui è un contenitore per tabelle. Ogni database ottiene il proprio set di file nel file system. UN MongoDB il server può memorizzare più database.
  4. funzionalità di – Un record in a MongoDB la raccolta è fondamentalmente chiamata documento. Il documento, a sua volta, sarà composto dal nome e dai valori del campo.
  5. Settore – Una coppia nome-valore in un documento. Un documento ha zero o più campi. I campi sono analoghi alle colonne nei database relazionali. Il diagramma seguente mostra un esempio di campi con coppie chiave-valore. Quindi nell'esempio seguente CustomerID e 11 è una delle coppie chiave-valore definite nel documento.

Componenti chiave di MongoDB Architectura

  1. JSON – Questo è noto come JavaCopione Notazione degli oggetti. Si tratta di un formato di testo semplice e leggibile dall'uomo per esprimere dati strutturati. JSON è attualmente supportato in molti linguaggi di programmazione.

Solo una breve nota sulla differenza fondamentale tra il campo _id e un normale campo di raccolta. Il campo _id viene utilizzato per identificare in modo univoco i documenti in una raccolta e viene aggiunto automaticamente da MongoDB quando viene creata la raccolta.

Perché usare MongoDB?

Di seguito sono riportati alcuni dei motivi per cui si dovrebbe iniziare a utilizzare MongoDB

  1. Orientato ai documenti – Dal MongoDB è un NoSQL database di tipo, invece di avere i dati in un formato di tipo relazionale, memorizza i dati in documenti. Questo fa MongoDB molto flessibile e adattabile alla situazione e ai requisiti reali del mondo degli affari.
  2. Query ad hoc – MongoDB supporta la ricerca per campo, query di intervallo e ricerche di espressioni regolari. Le query possono essere eseguite per restituire campi specifici all'interno dei documenti.
  3. Indicizzazione – È possibile creare indici per migliorare le prestazioni delle ricerche all'interno MongoDB. Qualsiasi campo in a MongoDB il documento può essere indicizzato.
  4. Replica – MongoDB può fornire elevata disponibilità con set di repliche. Un set di repliche è costituito da due o più istanze database mongo. Ciascun membro del set di repliche può agire nel ruolo di replica primaria o secondaria in qualsiasi momento. La replica primaria è il server principale che interagisce con il client ed esegue tutte le operazioni di lettura/scrittura. Le repliche secondarie mantengono una copia dei dati della replica primaria utilizzando la replica integrata. Quando una replica primaria fallisce, il set di repliche passa automaticamente al server secondario e diventa quindi il server primario.
  5. Bilancio del carico - MongoDB utilizza il concetto di sharding per ridimensionare orizzontalmente suddividendo i dati su più elementi MongoDB le istanze. MongoDB può essere eseguito su più server, bilanciando il carico e/o duplicando i dati per mantenere il sistema attivo e funzionante in caso di guasto hardware.

Modellazione dei dati in MongoDB

Come abbiamo visto dalla sezione Introduzione, i dati in MongoDB ha uno schema flessibile. A differenza di SQL database, dove è necessario dichiarare lo schema di una tabella prima di inserire i dati, MongoDBLe raccolte di non impongono la struttura del documento. Questo tipo di flessibilità è ciò che rende MongoDB così potente.

Quando si modellano i dati in Mongo, tenere a mente le seguenti cose

  1. Quali sono le esigenze dell'applicazione: esamina le esigenze aziendali dell'applicazione e scopri quali dati e il tipo di dati necessari per l'applicazione. Sulla base di ciò, assicurarsi che la struttura del documento sia decisa di conseguenza.
  2. Cosa sono i modelli di recupero dei dati: se prevedi un utilizzo intenso delle query, considera l'uso degli indici nel tuo modello dati per migliorare l'efficienza delle query.
  3. Nel database si verificano inserimenti, aggiornamenti e rimozioni frequenti? Riconsiderare l'uso degli indici o incorporare lo sharding, se necessario, nella progettazione della modellazione dei dati per migliorare l'efficienza complessiva MongoDB ambiente.

Differenza fra MongoDB & RDBMS

Di seguito sono riportate alcune delle differenze tra i termini chiave MongoDB e RDBMS

RDBMS MongoDB Synhydrid
Table Collezione In RDBMS, la tabella contiene le colonne e le righe utilizzate per archiviare i dati mentre, in MongoDB, questa stessa struttura è nota come raccolta. La raccolta contiene documenti che a loro volta contengono campi, che a loro volta sono coppie chiave-valore.
Riga funzionalità di In RDBMS, la riga rappresenta un singolo elemento di dati strutturato implicitamente in una tabella. In MongoDB, i dati vengono archiviati nei documenti.
Colonna Settore In RDBMS, la colonna denota un insieme di valori di dati. Questi dentro MongoDB sono conosciuti come Campi.
Entra a far parte Documenti incorporati In RDBMS, i dati vengono talvolta distribuiti su varie tabelle e per mostrare una visione completa di tutti i dati, a volte viene formato un join tra le tabelle per ottenere i dati. In MongoDB, i dati vengono normalmente archiviati in un'unica raccolta, ma separati utilizzando documenti incorporati. Quindi non esiste il concetto di join MongoDB.

Oltre alle differenze tra i termini, alcune altre differenze sono mostrate di seguito

  1. I database relazionali sono noti per garantire l'integrità dei dati. Questo non è un requisito esplicito in MongoDB.
  2. RDBMS richiede che i dati siano normalizzato in primo luogo in modo da poter prevenire record orfani e duplicati. La normalizzazione dei dati richiede quindi più tabelle, che si tradurranno in più unioni di tabelle, richiedendo quindi più chiavi e indici. Man mano che i database iniziano a crescere, le prestazioni possono iniziare a diventare un problema. Anche in questo caso questo non è un requisito esplicito MongoDB. MongoDB è flessibile e non necessita che i dati vengano prima normalizzati.