Software

MongoDB, un database per la gestione di grandi set di dati

Si tratta di un database NoSQL che vanta ormai un’esperienza ultradecennale e che si sta imponendo laddove esistono grandi dataset. Esiste sia in versione gratuita sia a pagamento, è multipiattaforma ed è uno strumento molto valido laddove i database non possono avere schemi predefiniti

Pubblicato il 31 Lug 2023

Cohort (coorte): che cos’è e come si usa nel marketing

La prima versione di MongoDB risale al 2009, epoca in cui i Big data richiedevano meno risorse e meno metodi analitici specifici rispetto a oggi. Con il passare degli anni MongoDB si è guadagnato una fetta di mercato tanto che è il quinto Database Management System (DBMS) per diffusione.

MongoDB è un database NoSQL (ossia “not only SQL” oppure “non solo SQL”) e, in quanto tale, memorizza i dati diversamente rispetto a quanto fanno i database relazionali. Questo non vuole dire che non siano validi nella memorizzazione di dati secondo i principi delle tabelle relazionali, vuole dire che sono in grado di seguire anche altre logiche di archiviazione delle informazioni.

I principali vantaggi sono la flessibilità e la scalabilità e ciò li rende particolarmente adatti ai Big data.

A cosa serve MongoDB

Poiché rientra nella famiglia dei database NoSQL, è in grado di lavorare con dati strutturati, semi-strutturati e non strutturati. A differenza dei database SQL è orientato ai documenti e a un linguaggio di query non strutturato, ossia lo Structured Query Language che dà origine all’acronimo SQL.

Con il termine documenti (ereditato dall’inglese document) si intende un’entità che contiene dati i quali, nel caso di MongoDB, sono organizzati in collection. In altre parole, l’organizzazione dei dati in un database MongoDB è meno rigida rispetto alle soluzioni SQL e questo, insieme al sistema di query e ad altre peculiarità che vedremo avanti, ne fa uno strumento ideale per lavorare con i Big data.

Come utilizzare MongoDB per gestire grandi dataset delle aziende

Ci sono condizioni in cui la scelta di MongoDB è pressoché obbligatoria ma questo non significa che sia sempre opportuno farvi ricorso.

MongoDB dà il meglio di sé con i dati non strutturati, ovvero si presta bene alle aziende confrontate con i Big data e si tratta di un’affermazione vera ma incompleta. Ci sono diversi contesti dai quali partire e di cui occorre tenere conto, tra questi:

  • l’apertura aziendale al Cloud: MongoDB è lo strumento più indicato per la distribuzione di dati su più server, peculiarità questa interdetta ai database di tipo SQL
  • la necessità di accedere facilmente ai dati e di elaborarli in modo veloce
  • l’impossibilità di organizzare i dati secondo schemi predefiniti

Non da ultimo, MongoDB non richiede molta manutenzione e questo è un elemento in favore delle organizzazioni più piccole tra i cui effettivi manca la figura di un database administrator.

Anche nei contesti aziendali nei quali vigono una o più delle condizioni elencate sopra, è utile fare i conti con i limiti di MongoDB. Tra le difficoltà principali merita un approfondimento l’aspetto delle stored procedure, ossia procedure contenute in un database e che possono essere richiamate da un’applicazione. Offrono prestazioni ottimizzate perché non gravano in modo eccessivo sulla rete e possono essere riutilizzate. MongoDB permette di fare qualcosa di simile scrivendo codice in Javascript e questo può essere sinonimo di un maggiore livello di difficoltà.

Ci sono altri limiti che vanno considerati e, tra questi, spicca anche la necessità della conformità ACID, che sta per Atomicity, Consistency, Isolation e Durability. MongoDB non dispone di tale conformità ed esclude tutte le applicazioni che vi fanno ricorso e che necessitano di svolgere transazioni al livello del database, cosa per esempio tipica del comparto bancario o finanziario.

Come sempre accade quando si parla di tecnologie e metodi relativi ai dati, è proprio a partire dal dato che questi vanno presi in considerazione e adottati. Il presupposto, nel caso specifico, è da ricondurre alla necessità di elaborazioni rapide e alla presenza dei dati non strutturati che possono essere inseriti in Documenti a prescindere dalla loro forma e natura. La scalabilità orizzontale, ossia la possibilità di aggiungere server laddove necessario, è prerogativa dei database NoSQL i quali, inoltre, dispongono di funzionalità che rendono più snelle le attività degli sviluppatori. MongoDB rimane un’ottima soluzione laddove il traffico di dati assume un peso specifico, così come assume un ruolo preponderante la possibilità di ridimensionare i database con una certa regolarità.

MongoDB

Come MongoDB migliora l’esperienza del cliente

È un argomento teorico che può essere illustrato meglio con un esempio. Tra le aziende che fanno uso di MongoDB figura eBay. La piattaforma, oltre a dovere archiviare e rendere disponibili grosse moli di dati, deve fornire anche funzioni di ricerca e di suggerimento di prodotti affini alle necessità palesate dagli utenti.

Oltre a ciò, sempre rimanendo nel contesto della collaborazione tra MongoDB ed eBay, si punta sulla categorizzazione del merchandising, alla gestione del cloud e all’archiviazione dei metadati.

Si tratta di un esempio che non deve fuorviare: eBay ha un mercato di riferimento di vasta scala ma l’uso che fa di MongoDB non è precluso a realtà aziendali più piccole, laddove la disponibilità di dati immediata è cruciale tanto per le analisi dei dati quanto per le decisioni che queste possono suggerire.

I dati non strutturati rendono più articolata e complessa una qualsiasi ricerca di informazioni, MongoDB garantisce un’alta reattività anche con flussi di dati ingenti.

MongoDB a confronto con i database relazionali

È un argomento ampio che può essere riassunto in quattro punti chiave i quali, a loro volta, meriterebbero ulteriori sviluppi. Le principali differenze tra i database di tipo SQL e NoSQL sono:

  • i database SQL usano tabelle, mentre quelli NoSQL possono essere Document database, Key-value, Column-family database e Graph database. Logiche che riguardano la comprensione dei dati, la loro archiviazione, la loro analisi e la connessione tra i dati stessi
  • mentre i database SQL richiedono un’architettura fissa e definita in precedenza, i database NoSQL sono flessibili nella struttura dei dati
  • i database SQL mettono la coerenza davanti a ogni altra cosa, sul fronte dei NoSQL in cima alla piramide delle priorità figurano la velocità e la scalabilità, anche a costo di sacrificare in parte l’idea di coerenza
  • la scalabilità dei database SQL è verticale e, laddove i dati necessitino di maggiori risorse hardware, queste vanno necessariamente potenziate. Nel caso dei database NoSQL si parla invece di scalabilità orizzontale, ovvero i dati possono essere distribuiti su più server.

Non da ultimo, l’indicizzazione degli attributi è molto più elastica nel dominio dei database NoSQL.

Come implementare MongoDB in azienda: strumenti e risorse per iniziare

MongoDB prevede istallazioni on-premise e in Cloud, mediante un servizio chiamato MongoDB Atlas.

Nel primo caso si può prelevare il pacchetto server, che contiene anche il client, dall’apposita area. Essendo multipiattaforma può essere istallato su macchine con a bordo Windows, macOS, Linux e Solaris in modo semplice e intuitivo.

Per i sistemi Linux ci sono diversi tool grafici che permettono la creazione e l’amministrazione di database senza avere conoscenze di programmazione. Ne esistono di gratuiti e altri a pagamento, per lo più orientati al mondo Windows.

Guardando al Cloud, MongoDB Atlas prevede anche l’uso completamente gestito, configurabile mediante una procedura guidata. I prezzi variano a seconda della versione e dal pacchetto scelto.

Atlas rende più semplice la gestione di database che si interfacciano ad AWS, Azure e Google Cloud e senza che l’utente sia particolarmente ferrato in materia e, non da ultimo, consente una più immediata e intuitiva visualizzazione dei dati, grazie a strumenti preconfezionati.

Sicurezza e affidabilità in MongoDB

L’aspetto della sicurezza è cruciale e, poiché MongoDB è uno strumento pensato per i Big data, rimane costantemente al centro delle mire dell’azienda che lo produce, ossia MongoDB Inc.

Prevede sistemi di autenticazione e di autorizzazione degli accessi basati su regole. A ciò si aggiungono tecniche di encryption dei dati e il traffico di rete è protetto dai protocolli TLS/SSL.

I principi di sicurezza, che comprendono anche il protocollo LDAP, variano a seconda della versione installata ma vertono tutti sulla protezione e sul criptaggio del dato. Facendo ricorso alla versione Atlas è l’azienda stessa che si fa carico di parte della questione sicurezza, ciò però non esenta le aziende dall’attuare delle politiche di accesso e di regole.

Anche l’affidabilità, comunque sempre di alto livello, va esaminata a seconda della versione usata. Va detto che MongoDB permette di fare dei backup pure senza il dismount del database. Ci sono tool nativi come mongodump che permettono di esportare i dati mantenendo la piena operatività.

Se ci si sposta sulla versione Cloud, le cose diventano ancora più semplici perché – essendo per sua natura gestita – la piattaforma prevede l’uso di cluster, ossia un insieme di server (nodi) che lavorano in concerto e, laddove un nodo dovesse avere problemi, subentra un altro server a dare continuità.

MongoDB segue la filosofia dell’elevata disponibilità dei dati, fornendo un ripristino istantaneo e automatico in caso di necessità.

MongoDB

Come usare MongoDB per migliorare l’efficienza operativa

Il discorso verte soprattutto sulla versione Atlas, interamente gestita da un pool di tecnici al soldo di MongoDB Inc.

In questo caso, la distribuzione dell’infrastruttura necessaria (tipicamente i client), il provisioning e la configurazione sono automatizzati. Anche interfacciarsi con altri database è molto facile, grazie sia alle procedure guidate sia all’abbondanza di API che consentono l’integrazione con altri sistemi e software.

Il vantaggio è una maggiore facilità di accesso ai dati a beneficio dei reparti aziendali che ne hanno necessità e, non da ultimo, un sostegno pratico a chi sviluppa applicazioni per l’uso interno all’azienda ma anche per l’uso esterno.

Le caratteristiche di MongoDB sono orientate alla replica dei database e alla disponibilità dei dati. La scalabilità e la condivisione avvengono sia su reti LAN sia su reti WAN e il linguaggio nativo, chiamato MQL, consente query complesse e ci sono molte librerie per linguaggi di programmazione diffusi come, per esempio, C++, C#, Java, Node.JS, Python o Ruby.

Gli stessi risultati possono essere raggiunti anche da chi usa versioni on-premise di MongoDB ma con uno sforzo da parte dei sistemisti e dei database administrator.

I vantaggi di MongoDB per le aziende

Sono persino notevoli per quelle imprese che fanno uso di Big data e, al di là dell’ormai scontata necessità di estrarne valore in modo rapido e affidabile, MongoDB permette di accedere a diversi set di dati da una sola applicazione, facilitando così la vita degli sviluppatori ma anche dei collaboratori dell’azienda.

Offre vantaggi anche dal punto di vista della gestione del catalogo dei dati e dei contenuti, facilità le analisi dei dati in tempo reale e, oltre a garantire un’elevata personalizzazione, si adatta con disinvoltura alle applicazioni per dispositivi mobili e all’IoT.

La vocazione all’integrazione consente agli utenti di estrarre, trasformare e manipolare dati anche avvalendosi di tool di terze parti, consentendo così a tutti i collaboratori dell’azienda di partecipare in modo attivo alla digitalizzazione.

Tendenze future di MongoDB

Con l’aumento della cultura digitale e con il crescere della diffusione dei Big data, il futuro di MongoDB si profilerà sempre di più sulla gestione dei dati e sugli strumenti di analisi, benché non sia nato con quest’ultima vocazione, ancora oggi spesso demandata a tool di terze parti.

C’è da attendersi anche un fervente lavoro che conduca verso quelli che vengono chiamati NewSQL, ossia database relazionali che includono i sistemi NoSQL per le transazioni online garantendo le funzioni ACID tipiche.

Sul fronte dei database SQL si sta imponendo il supporto ai file JSON, formato che è una caratteristica essenziale per MongoDB e che facilita lo scambio di informazioni tra client e server. Questo suggerisce che sarà necessaria un maggiore lavoro per l’integrazione con altri DBMS.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati