AnnuncioTi presentiamo MongoDB 8.0, il MongoDB più veloce di sempre! Leggi >
AnnuncioVoyage AI si unisce a MongoDB per potenziare applicazioni AI più accurate e affidabili su Atlas. Scopra di più >

Che cos'è NoSQL?

Crea un cluster NoSQL gratuito
Prova un database NoSQL con Atlas

Che cos'è NoSQL?

I database NoSQL (noti anche come “non solo SQL”) memorizzano i dati in modo diverso rispetto alle tabelle relazionali. I database NoSQL sono disponibili in una varietà di tipologie in base al loro modello di dati. I tipi principali sono documento, chiave-valore, colonne larghe e grafo, e forniscono schemi flessibili e facilmente scalabili con grandi quantità di big data e carichi utente elevati.

In questo articolo scoprirai cos'è un database NoSQL, perché (e quando) dovresti usarne uno e come iniziare.

Sommario

Che cos'è un database NoSQL?

Quando le persone usano il termine “database NoSQL”, in genere fanno riferimento a qualsiasi database non relazionale. Alcuni dicono che il termine “NoSQL” stia per “non-SQL” mentre altri ritengono che sia un'abbreviazione di “non solo SQL”. In ogni caso, la maggior parte concorda sul fatto che i database NoSQL memorizzano i dati in modo più naturale e flessibile. NoSQL, a differenza di SQL, è un approccio alla gestione dei database, mentre SQL è solo un linguaggio di query, simile a quelli dei database NoSQL.

Tipi di database: NoSQL

Nel tempo, sono emersi quattro tipi principali di database NoSQL: i database di gestione dei documenti, i database chiave-valore, gli archivi a colonne larghe e i database a grafo. Al giorno d'oggi, anche i database multimodello stanno diventando molto popolari.

Database di gestione dei documenti

I database di gestione dei documenti memorizzano i dati in documenti simili agli oggetti JSON (JavaScript Object Notation). Ciascun documento contiene coppie di campi e valori. I valori possono essere di vari tipi, inclusi elementi come stringhe, numeri, booleani, array o anche altri oggetti. I database di documenti offrono un modello di dati flessibile, particolarmente adatto per set di dati semi-strutturati e tipicamente non strutturati. Supportano inoltre strutture annidate, semplificando la rappresentazione di relazioni complesse o dati gerarchici.

Alcuni esempi di database di documenti sono MongoDB e Couchbase. Un documento tipico avrà questo aspetto:

 

 

Database chiave-valore

Un archivio chiave-valore è un tipo di database più semplice in cui ogni elemento contiene chiavi e valori. Ogni chiave è univoca e associata a un singolo valore. Sono utilizzati per la memorizzazione nella cache e la gestione delle sessioni e forniscono prestazioni elevate in lettura e scrittura perché tendono a memorizzare le cose in memoria. Alcuni esempi sono Amazon DynamoDB e Redis. Di seguito è riportata una semplice panoramica dei dati memorizzati in un database chiave-valore:

 

 

Archivi a colonne larghe

Gli archivi a colonne larghe memorizzano i dati in tabelle, righe e colonne dinamiche. I dati vengono memorizzati in tabelle. Tuttavia, a differenza dei database SQL tradizionali, gli archivi a colonne larghe sono flessibili, in quanto le diverse righe possono avere set di colonne differenti. Questi database possono impiegare tecniche di compressione delle colonne per ridurre lo spazio di archiviazione e migliorare le prestazioni. Le righe e le colonne larghe consentono di recuperare in modo efficiente i dati sparsi e ampi. Alcuni esempi di archivi a colonne larghe sono Apache Cassandra e HBase. Un esempio tipico di come i dati vengono memorizzati in una colonna larga è il seguente:

 

name id email dobcity
Foo bar12345 foo@bar.com Some city
Carn Yale34521bar@foo.com 12-05-1972

 

Database a grafo

I database a grafo memorizzano i dati sotto forma di nodi e edge. I nodi in genere archiviano informazioni su persone, luoghi e cose (come i nomi) mentre gli edge memorizzano dettagli sulle relazioni tra i nodi. Sono particolarmente indicati per dati molto connessi, in cui le relazioni o i modelli potrebbero non essere molto evidenti all'inizio. Esempi di database a grafo sono Neo4J e Amazon Neptune. MongoDB fornisce anche funzionalità a grafo trasversali utilizzando la fase $graphLookup della pipeline di aggregazione. Di seguito è riportato un esempio di come vengono memorizzati i dati:

Database multimodello

I database multimodello supportano più di un tipo di modello di dati NoSQL in modo che gli sviluppatori possano scegliere in base ai requisiti dell'applicazione. Questi database dispongono di un motore di database unificato in grado di gestire più modelli di dati all'interno di un'istanza di database. Esempi sono CosmosDB e ArangoDB.

Confronto rapido fra i tipi di database: NoSQL

Ogni database NoSQL offre funzionalità diverse. Ad esempio, i database a grafo potrebbero essere più adatti per l'analisi di relazioni e modelli complessi tra entità, mentre i database di gestione dei documenti forniscono un modo più flessibile e naturale per archiviare e recuperare grandi volumi di dati di tipi simili a quelli dei documenti. La scelta del database dipende dal caso d'uso che si desidera sviluppare.

Per saperne di più, leggi Informazioni sui diversi tipi di database NoSQL.

Breve storia dei database NoSQL

I database NoSQL sono apparsi alla fine degli anni 2000, quando il costo dello spazio di archiviazione è calato drasticamente. Non c'era più bisogno di creare modelli di dati complicati e difficili da gestire per evitare la duplicazione dei dati. I database NoSQL sono stati ottimizzati per la produttività degli sviluppatori.

Poiché i costi di archiviazione sono diminuiti rapidamente, la quantità di applicazioni dati necessarie per archiviazione e query è aumentata. Questi dati sono disponibili in tutte le forme e dimensioni (strutturati, semi-strutturati e non strutturati), e definire lo schema in anticipo è diventato quasi impossibile. I database NoSQL consentono agli sviluppatori di archiviare enormi quantità di dati non strutturati usufruendo di molta flessibilità.

All'inizio degli anni 2000, un articolo pubblicato da Google su BigTable, il database a colonne larghe, ha esplorato l'ampia gamma di possibilità offerte da un sistema di archiviazione distribuito. Il 2009 ha visto un forte aumento dei database NoSQL, con l'entrata in scena di due importanti database orientati ai documenti, MongoDB e CouchDB.

Negli anni 2010 sono emersi diversi tipi di database NoSQL e l'accettazione di NoSQL si è diffusa, con le aziende che sono diventate sempre più orientate ai dati.

Inoltre, il Manifesto Agile stava diventando sempre più popolare e gli ingegneri software stavano ripensando il modo in cui sviluppavano il software. Dovevano adattarsi rapidamente ai requisiti in evoluzione, iterare rapidamente e apportare modifiche all'intero stack software, fino al database. I database NoSQL hanno dato loro questa flessibilità.

Anche il cloud computing è aumentato in popolarità e gli sviluppatori hanno iniziato a utilizzare i cloud pubblici per ospitare le loro applicazioni e dati. Volevano la possibilità di distribuire i dati su più server e aree geografiche per rendere le applicazioni resilienti, scalabili orizzontalmente anziché verticalmente e per collocare i dati geolocalizzati in modo intelligente. Alcuni database NoSQL, come MongoDB Atlas, hanno fornito queste funzionalità.

A causa della crescita esponenziale della digitalizzazione, le aziende ora raccolgono il maggior numero possibile di dati non strutturati. Per analizzare e ottenere insight fruibili in tempo reale su questi big data, le aziende necessitano di soluzioni moderne che vadano oltre il semplice storage di dati. Hanno bisogno di una piattaforma che sia in grado di scalare, trasformare e visualizzare i dati, di creare dashboard, report e grafici e di lavorare con l'AI e con strumenti di intelligence aziendale per accelerare la produttività. Grazie alla loro natura flessibile e distribuita, i database NoSQL (come MongoDB) eccellono in questi compiti.

Funzionalità dei database NoSQL

I database NoSQL sono flessibili, scalabili e distribuiti. I diversi tipi di database NoSQL presentano caratteristiche specifiche.

A livello generale, i database NoSQL presentano in genere le seguenti caratteristiche:

Conformità BASE

I database NoSQL sono conformi allo standard BASE, cioè basic availability soft state eventual consistency. Basic availability (disponibilità di base) si riferisce alla capacità del sistema di tollerare un guasto parziale, come la perdita di un nodo. Il soft state (stato instabile) si riferisce al fatto che il sistema ammette incongruenze temporanee prima di raggiungere automaticamente la coerenza nel tempo. La conformità allo standard BASE garantisce un'elevata disponibilità, un'elaborazione dei dati più rapida, scalabilità e flessibilità. Tuttavia, MongoDB può essere configurato anche per offrire conformità ACID multi-documento.

Scopri di più sui vantaggi dei database NoSQL.

Esempio di confronto tra database relazionale e database NoSQL

Consideriamo un esempio di archiviazione di informazioni relativo a un utente e ai suoi hobby. Dobbiamo archiviare il nome, il cognome, il numero di cellulare, la città e gli hobby dell'utente.

In un sistema di gestione di database relazionali (RDBMS), probabilmente creeremmo due tabelle: una per gli Utenti e una per gli Hobby.

Per recuperare tutte le informazioni su un utente e i suoi hobby, sarà necessario unire le informazioni della tabella Utenti e della tabella Hobby.

Il modello di dati che progettiamo per un database NoSQL dipenderà dal tipo di database NoSQL che scegliamo. Consideriamo come archiviare le stesse informazioni relative a un utente e ai suoi hobby in un database di documenti come MongoDB.

Per recuperare tutte le informazioni relative a un utente e ai suoi hobby, è possibile recuperare un unico documento dal database. Non sono necessarie unioni, con conseguente aumento della velocità delle query.

Per una versione più dettagliata di questo esempio di modellazione dei dati, leggi Termini e concetti sulla mappatura da SQL a MongoDB.

Differenze fra RDBMS e database NoSQL

Esistono diverse differenze tra i sistemi di gestione dei database relazionali e i database non relazionali. Una delle differenze principali è il modo in cui i dati vengono modellati nel database. Alcune differenze chiave di ciascuna funzionalità sono elencate di seguito:

Creazione di modelli di dati

NoSQL: i modelli di dati variano a seconda del tipo di database NoSQL utilizzato (come chiave-valore, documenti, a grafo e a colonne larghe), rendendo il modello adatto sia per i dati semi-strutturati che per quelli non strutturati.

RDBMS: RDBMS utilizza una struttura dati tabulare, con dati rappresentati come un insieme di righe e colonne, rendendo il modello adatto ai dati strutturati.

Schema

NoSQL: fornisce uno schema flessibile in cui ogni set di documenti/riga-colonna/coppie chiave-valore può contenere diversi tipi di dati. È più facile modificare lo schema, se necessario, grazie alla flessibilità.

RDBMS: si tratta di uno schema fisso in cui ogni riga deve contenere gli stessi tipi di colonne predefiniti. È difficile modificare lo schema una volta archiviati i dati.

Linguaggio di query

NoSQL: varia in base al tipo di database NoSQL utilizzato. Per esempio, MongoDB ha MQL, e Neo4J utilizza Cypher.

RDBMS: utilizza un linguaggio di query strutturato (SQL).

Scalabilità

NoSQL: NoSQL è progettato per la scalabilità verticale e orizzontale.

RDBMS: RDBMS è progettato per la scalabilità verticale. Tuttavia, può estendere le capacità limitate della scalabilità orizzontale.

Relazioni tra i dati

NoSQL: le relazioni possono essere annidate, esplicite o implicite.

RDBMS: le relazioni sono definite tramite chiavi esterne e si accede tramite join.

Tipo di transazione

NoSQL: le transazioni sono conformi ad ACID o a BASE.

RDBMS: le transazioni sono conformi ad ACID.

Prestazioni

NoSQL: NoSQL è adatto per l'elaborazione in tempo reale, l'analisi dei big data e gli ambienti distribuiti.

RDBMS: RDBMS è adatto per carichi di lavoro ad alta intensità di lettura e transazionali.

Coerenza dei dati

NoSQL: nella maggior parte dei casi, garantisce coerenza finale.

RDBMS: offre un'elevata coerenza dei dati.

Elaborazione distribuita

NoSQL: uno dei motivi principali per l'introduzione di NoSQL era l'elaborazione distribuita, e i database NoSQL supportano l'archiviazione distribuita dei dati, il ridimensionamento verticale e orizzontale tramite sharding, replica e clustering.

RDBMS: RDBMS supporta il calcolo distribuito tramite clustering e replica. Tuttavia, è meno scalabile e flessibile in quanto non è tradizionalmente progettato per supportare l'architettura distribuita.

Tolleranza ai guasti

NoSQL: NoSQL ha una tolleranza ai guasti integrata e un'elevata disponibilità grazie alla replica dei dati.

RDBMS: RDBMS utilizza meccanismi di replica, backup e ripristino. Tuttavia, poiché sono progettati per questi scopi, potrebbe essere necessario implementare misure aggiuntive come meccanismi di disaster recovery durante lo sviluppo delle applicazioni.

Partizionamento dei dati

NoSQL: viene effettuato tramite partizionamento orizzontale e replica.

RDBMS: supporta il partizionamento e l'eliminazione delle partizioni basati su tabelle.

Scopri di più sul partizionamento dei dati qui.

Mappatura dei dati agli oggetti

NoSQL: NoSQL memorizza i dati in vari modi, ad esempio come documenti JSON, archivi a colonne larghe o coppie chiave-valore. Fornisce astrazione attraverso i framework ODM (mappatura oggetto-dati) per lavorare con i dati NoSQL in modo orientato agli oggetti.

RDBMS: RDBMS si basa maggiormente sulla mappatura dati-oggetto, in modo che vi sia una perfetta integrazione tra le colonne del database e il codice dell'applicazione orientata agli oggetti.

Per saperne di più sulle differenze tra database relazionali e database NoSQL, leggi Database NoSQL vs. database SQL.

Casi d'uso di NoSQL

I sistemi di database NoSQL sono utilizzati in quasi tutti i settori per finalità di analisi in tempo reale, gestione dei contenuti, applicazioni IoT, sistemi di suggerimento, rilevamento delle frodi, gestione dei cataloghi di prodotti e molto altro. I casi d'uso spaziano da quelli altamente critici (ad esempio, l'archiviazione di dati finanziari e cartelle cliniche) a quelli più divertenti e frivoli (come l'archiviazione delle letture IoT di una lettiera automatica per gatti).

Quando utilizzare NoSQL?

Quando devono decidere quale database utilizzare, i responsabili delle decisioni individuano solitamente uno o più dei seguenti fattori che li portano a scegliere un database NoSQL:

  • Sviluppo agile molto rapido
  • Archiviazione di dati strutturati e semi-strutturati
  • Enormi volumi di dati
  • Requisiti per la scalabilità dell'architettura
  • Paradigmi di applicazione moderni, come microservizi e streaming in tempo reale

Consulta Quando utilizzare i database NoSQL ed Esempi di database NoSQL per informazioni più dettagliate sui motivi elencati in precedenza.

Falsi miti su NoSQL

Nel corso degli anni, all'interno della community degli sviluppatori si sono diffusi numerosi falsi miti sui database NoSQL. In questa sezione, discuteremo due degli equivoci più comuni.

Falso mito: i dati di relazioni sono più adatti ai database relazionali

Un'idea errata comune è che i database NoSQL o i database non relazionali non siano in grado di memorizzare correttamente i dati relazionali. I database NoSQL possono memorizzare i dati di relazione, è solo che li memorizzano in modo diverso rispetto ai database relazionali.

Addirittura, se confrontati con i database relazionali, molti trovano la modellazione dei dati di relazione nei database NoSQL più semplice rispetto ai database relazionali, perché i dati correlati non devono essere suddivisi tra tabelle. I modelli di dati NoSQL consentono di annidare i dati correlati all’interno di un'unica struttura di dati.

Falso mito: i database NoSQL non supportano le transazioni ACID

Un altro equivoco comune è che i database NoSQL non supportino le transazioni ACID. Alcuni database NoSQL, come MongoDB, supportano eccome le transazioni ACID.

Tieni presente che il modo in cui i dati vengono modellati nei database NoSQL può eliminare la necessità di transazioni multi-record in molti casi d'uso. Considera l'esempio precedente in cui abbiamo memorizzato le informazioni su un utente e i suoi hobby sia in un modello relazionale che in un archivio di documenti. Per garantire che le informazioni su un utente e i suoi hobby siano aggiornate insieme in un database relazionale, dovremmo utilizzare una transazione per aggiornare i record in due tabelle. Per fare lo stesso in un archivio di documenti, potremmo aggiornare un singolo documento, senza che sia richiesta una transazione multi-record.

Per saperne di più su questi falsi miti, leggi Tutto ciò che sai su MongoDB è sbagliato.

Tutorial sulle query NoSQL

Potresti iniziare con MongoDB, il database NoSQL più popolare al mondo secondo DB-Engines. Il modo più semplice per iniziare a utilizzare MongoDB Atlas. Atlas è il database completamente gestito come servizio di MongoDB. Atlas ha un livello gratis per sempre, che è possibile utilizzare per fare una prova. Dai un'occhiata al tutorial di MongoDB Atlas per iniziare.

Puoi continuare a interagire con i tuoi dati utilizzando Atlas Data Explorer per inserire nuovi documenti, modificare documenti esistenti ed eliminare documenti.

Quando vuoi provare query più avanzate che aggregano i tuoi dati, crea una pipeline di aggregazione. Il framework di aggregazione è uno strumento incredibilmente potente per l'analisi dei dati. Per saperne di più, segui il corso gratuito M121 The MongoDB Aggregation Framework della MongoDB University.

Se vuoi visualizzare i tuoi dati, dai un'occhiata a MongoDB Charts. Charts consente di creare dashboard contenenti visualizzazioni dei dati.

Sommario

I database NoSQL offrono una serie di vantaggi, tra cui modelli di dati flessibili, scalabilità orizzontale, query velocissime e facilità d'uso per gli sviluppatori. I database NoSQL sono disponibili in una varietà di tipi, tra cui archivi di documenti, database chiave-valore, archivi a colonne larghe, database grafici e database multi-modello.

MongoDB è il database NoSQL più diffuso al mondo. Scopri di più su MongoDB Atlas e prova il nostro livello gratuito.

Non vedi l'ora di saperne di più ora che hai un account Atlas? Dai un'occhiata alla MongoDB University, dove potrai seguire corsi di formazione online gratuiti tenuti dagli ingegneri di MongoDB e ottenere una certificazione MongoDB. Le Guide rapide sono un altro ottimo punto di partenza, in quanto ti consentiranno di essere subito operativo con il tuo linguaggio di programmazione preferito.

Domande frequenti

Questo articolo è stato scritto da Lauren Schaefer, MongoDB Developer Advocate.

Scopri di più sulle principali differenze tra i database NoSQL e i database SQL

Risorse NoSQL correlate

Ulteriori informazioni

Inizia subito con Atlas

Inizia in pochi secondi. I nostri cluster gratuiti sono dotati di 512 MB di spazio di archiviazione, così puoi utilizzare i dati di esempio e iniziare ad acquisire familiarità con la nostra piattaforma.
Prova gratuitaContatta il reparto vendite
INIZIA CON:
  • Oltre 125 regioni in tutto il mondo
  • Set di dati di esempio
  • Autenticazione sempre attiva
  • Crittografia end-to-end
  • Strumenti a riga di comando