Cos'è MongoDB? Introduzione, architettura, funzionalità e Esempio

Sommario:

Anonim

Cos'è 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 database relazionali tradizionali, MongoDB fa uso di raccolte e documenti. I documenti sono costituiti da coppie chiave-valore che sono l'unità di base dei dati in MongoDB. Le raccolte contengono set di documenti e funzioni equivalenti alle tabelle del database relazionale. MongoDB è un database che è venuto alla luce intorno alla metà degli anni 2000.

In questo tutorial imparerai-

  • Caratteristiche di MongoDB
  • Esempio di MongoDB
  • Componenti chiave dell'architettura MongoDB
  • Perché utilizzare MongoDB
  • Modellazione dei dati in MongoDB
  • Differenza tra MongoDB e RDBMS

Caratteristiche di MongoDB

    1. Ogni database contiene raccolte che a loro volta contengono documenti. Ogni documento può essere diverso con un numero variabile di campi. La dimensione e il contenuto di ogni 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 diranno spesso che le loro classi non sono righe e colonne ma hanno una struttura chiara con coppie chiave-valore.
    3. Le righe (o documenti come chiamati in MongoDB) non devono avere uno schema definito in anticipo. Invece, i campi possono essere creati al volo.
    4. Il modello di dati disponibile in MongoDB consente di rappresentare relazioni gerarchiche, memorizzare più facilmente array e altre strutture più complesse.
  1. Scalabilità: gli ambienti MongoDB sono molto scalabili. Le aziende di tutto il mondo hanno definito cluster, alcuni dei quali eseguono più di 100 nodi con circa milioni di documenti all'interno del database

Esempio di MongoDB

L'esempio seguente mostra come un documento può essere modellato in MongoDB.

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

Componenti chiave dell'architettura MongoDB

Di seguito sono riportati alcuni dei termini comuni utilizzati in MongoDB

  1. _id - Questo è un campo obbligatorio in ogni documento MongoDB. Il campo _id rappresenta un valore univoco nel documento MongoDB. 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 dei clienti sopra, Mongo DB aggiungerà un identificatore univoco a 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. Raccolta : questo è un raggruppamento di documenti MongoDB. Una raccolta è l'equivalente di una tabella creata in qualsiasi altro RDMS come Oracle o MS SQL. Esiste una raccolta all'interno di un singolo database. Come si è visto dalle raccolte introduttive non impongono alcun tipo di struttura.
  2. Cursore : puntatore al set di risultati di una query. I client possono scorrere un cursore per recuperare i risultati.
  3. Database : questo è un contenitore per le raccolte come in RDMS in cui è un contenitore per le tabelle. Ogni database ottiene il proprio set di file sul file system. Un server MongoDB può memorizzare più database.
  4. Documento : un record in una raccolta MongoDB è fondamentalmente chiamato documento. Il documento, a sua volta, sarà composto dal nome del campo e dai valori.
  5. Campo : 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 di valori chiave. Quindi, nell'esempio sotto CustomerID e 11 è una delle coppie chiave-valore definite nel documento.

  1. JSON - Questo è noto come JavaScript Object Notation. Si tratta di un formato di testo normale 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 la raccolta viene creata.

Perché utilizzare MongoDB?

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

  1. Orientato ai documenti: poiché MongoDB è un database di tipo NoSQL, invece di avere i dati in un formato di tipo relazionale, memorizza i dati nei documenti. Ciò rende MongoDB molto flessibile e adattabile alla situazione e ai requisiti del mondo degli affari reali.
  2. Query ad hoc: MongoDB supporta la ricerca per campo, query di intervallo e ricerche di espressioni regolari. È possibile effettuare query per restituire campi specifici all'interno dei documenti.
  3. Indicizzazione: è possibile creare indici per migliorare le prestazioni delle ricerche all'interno di MongoDB. Qualsiasi campo in un documento MongoDB può essere indicizzato.
  4. Replica: MongoDB può fornire un'elevata disponibilità con i set di repliche. Un set di repliche è costituito da due o più istanze database mongo. Ogni membro della serie 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 conservano una copia dei dati del primario utilizzando la replica incorporata. Quando una replica primaria ha esito negativo, il set di repliche passa automaticamente al secondario e quindi diventa il server primario.
  5. Bilanciamento del carico: MongoDB utilizza il concetto di partizionamento orizzontale per scalare orizzontalmente suddividendo i dati su più istanze di MongoDB. 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 hanno uno schema flessibile. A differenza dei database SQL, in cui è necessario dichiarare lo schema di una tabella prima di inserire i dati, le raccolte di MongoDB non applicano la struttura del documento. Questo tipo di flessibilità è ciò che rende MongoDB così potente.

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

  1. Quali sono le esigenze dell'applicazione: esaminare le esigenze aziendali dell'applicazione e vedere quali dati e il tipo di dati sono 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'utilizzo degli indici nel tuo modello di dati per migliorare l'efficienza delle query.
  3. Sono frequenti inserimenti, aggiornamenti e rimozioni nel database? Riconsiderare l'uso degli indici o incorporare lo sharding, se necessario, nella progettazione della modellazione dei dati per migliorare l'efficienza dell'ambiente MongoDB complessivo.

Differenza tra MongoDB e RDBMS

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

RDBMS MongoDB Differenza
tavolo Collezione In RDBMS, la tabella contiene le colonne e le righe utilizzate per memorizzare 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 Documento In RDBMS, la riga rappresenta un singolo elemento di dati strutturato in modo implicito in una tabella. In MongoDB, i dati vengono archiviati nei documenti.
Colonna Campo In RDBMS, la colonna indica un insieme di valori di dati. Questi in MongoDB sono noti come Fields.
Si unisce Documenti incorporati In RDBMS, i dati a volte vengono distribuiti su varie tabelle e per mostrare una vista 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 una singola raccolta, ma separati utilizzando documenti incorporati. Quindi non esiste il concetto di join in MongoDB.

Oltre alle differenze dei termini, di seguito sono riportate alcune altre differenze

  1. I database relazionali sono noti per rafforzare l'integrità dei dati. Questo non è un requisito esplicito in MongoDB.
  2. RDBMS richiede che i dati siano prima normalizzati in modo che possa prevenire record orfani e duplicati La normalizzazione dei dati ha quindi il requisito di più tabelle, che risulteranno quindi in più join di tabella, 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 in MongoDB. MongoDB è flessibile e non necessita prima di normalizzare i dati.