MongoDB World is back in NYC June 7 - 9!MongoDB World is back in NYC June 7 - 9!

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 di documenti, di valore chiave, wide-column e a grafo, e forniscono schemi flessibili e facilmente scalabili con grandi quantità di big data e carichi elevati degli utenti.

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 lo usano per fare riferimento a qualsiasi database non relazionale. Alcuni dicono che il termine “NoSQL” stia per “non-SQL” mentre altri affermano di essere “non solo SQL”. In entrambi i casi, la maggior parte accetta che i database NoSQL siano database che 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 principali tipi di database NoSQL: database di documenti, database di valore chiave, archivi wide-column e database a grafo. Al giorno d'oggi, anche i database multimodello stanno diventando molto popolari.

Database orientati al documento

Un database orientato al documento memorizza i dati in documenti simili agli oggetti JSON (JavaScript Object Notation). Ciascun documento contiene coppie di campi e valori. I valori possono essere tipicamente una varietà di tipi, inclusi elementi come stringhe, numeri, booleani, array o anche altri oggetti. Un database di documenti offre 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.

Esempi di database di documenti sono MongoDB e Couchbase. Un documento tipico sarà simile al seguente:

Key-value databases

Un archivio di valore chiave è 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 visualizzazione dei dati archiviati in un database di valore chiave:

Wide-column stores

Gli archivi wide-column memorizzano i dati sotto forma di tabelle, righe e colonne dinamiche. I dati vengono memorizzati in tabelle. Tuttavia, a differenza dei database SQL tradizionali, gli archivi wide-column sono flessibili, dove le diverse righe possono avere diversi set di colonne. 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 scarsi e ampi. Alcuni esempi di archivi wide-column sono Apache Cassandra e HBase. Un tipico esempio di come i dati vengono memorizzato in un archivio wide-column è il seguente::

nameidemaildobcity
Foo bar12345foo@bar.comSome city
Carn Yale34521bar@foo.com12-05-1972

Database a grafo

Un database a grafo memorizza i dati sotto forma di nodi e archi. I nodi in genere archiviano informazioni su persone, luoghi e cose (come i nomi) mentre gli archi archiviano informazioni sulle relazioni tra i nodi. Funzionano bene per dati altamente 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 inoltre fornisce funzionalità di attraversamento dei grafici utilizzando la fase $graphLookup della pipeline di aggregazione. Di seguito è riportato un esempio di come vengono archiviati i dati:

Esempio di database a grafo.
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 dei tipi di database — NoSQL

Ognuno dei 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 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.

Confronto dei tipi di database NoSQL.

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

Breve storia dei database NoSQL

I database NoSQL sono emersi alla fine degli anni 2000, quando il costo dell'archiviazione è drasticamente diminuito. Sono finiti i giorni in cui era necessario creare un modello di dati complesso e difficile da gestire allo scopo di evitare la duplicazione dei dati. Database NoSQL 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 arrivati 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, dando loro molta flessibilità.
Breve storia dei database NoSQL.

All'inizio degli anni 2000, un articolo pubblicato da Google su BigTable, il database wide-column, esplorava l'ampia gamma di possibilità per 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 al documento, ovvero MongoDB e CouchDB,.

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

Inoltre, il Manifesto Agile stava aumentando di popolarità e gli ingegneri software stavano riconsiderando il modo in cui sviluppavano i software. Dovevano adattarsi rapidamente al mutare dei requisiti, eseguire iterazioni rapide e apportare modifiche durante l'unione dei 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, forniscono queste funzionalità.

A causa della crescita esponenziale della digitalizzazione, le aziende ora raccolgono il maggior numero possibile di dati non strutturati. Per essere in grado di analizzare e ricavare informazioni fruibili in tempo reale da questi big data, le aziende hanno bisogno di soluzioni moderne che vadano oltre la semplice archiviazione. Le aziende hanno bisogno di una piattaforma che possa facilmente scalare, trasformare, e visualizzare i dati; creare dashboard, report e grafici; e lavorare con l'IA e strumenti di business intelligence per accelerare la produttività aziendale. Grazie alla loro natura flessibile e distribuita, i database NoSQL (come MongoDB) brillano in queste attività.

Caratteristiche dei database NoSQL

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

Illustrazione delle funzionalità di NoSQL.

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

Conformità a BASE

I database NoSQL sono conformi a BASE, ossia basic availability soft state eventual consistency. La 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à a BASE garantisce un'elevata disponibilità, un'elaborazione dei dati più rapida, scalabilità e flessibilità. Tuttavia, MongoDB può anche essere configurato per fornireconformità ad ACID multi-documento.

Scopri di più sui vantaggi dei database NoSQL.

Esempio di database relazionale e database NoSQL

Consideriamo un esempio di archiviazione di informazioni relativo a un utente e ai suoi hobby. C'è bisogno di memorizzare 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 sui suoi hobby, le informazioni della tabella Utenti e della tabella Hobby dovranno essere unite tra loro.

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

Per recuperare tutte le informazioni su un utente e sui suoi hobby, è possibile recuperare un singolo documento dal database. Non sono necessari join, il che permette query più rapide.

RDBMS vs NoSQL (documento)

Per vedere una versione più dettagliata di questo esempio di modellazione dei dati, leggi Mappatura di termini e concetti da SQL a MongoDB.

Differenze tra database RDBMS e NoSQL

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

Modellazione dei dati

NoSQL: i modelli di dati variano in base al tipo di database NoSQL utilizzato, ad esempio di valore chiave, di documenti, a grafo e wide-column, rendendo il modello adatto a dati semi-strutturati e 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 valore chiave può contenere diversi tipi di dati. È più facile modificare lo schema, se necessario, grazie alla flessibilità.

RDBMS: questo è 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. Ad 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: garantisce un'elevata coerenza dei dati.

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

Calcolo distribuito

NoSQL: uno dei motivi principali per introdurre NoSQL è stato il calcolo distribuito e i database NoSQL supportano l'archiviazione distribuita dei dati, la scalabilità verticale e orizzontale tramite partizionamento orizzontale, replicazione e clustering.

RDBMS: RDBMS supporta il calcolo distribuito tramite clustering e replicazione. 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 replicazione dei dati.

RDBMS: RDBMS utilizza meccanismi di replicazione, 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: si realizza tramite partizionamento orizzontale e replicazione.

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

Scopri di più sul partizionamento dei dati qui.

Mappatura da dati a oggetti

NoSQL: NoSQL memorizza i dati in vari modi, ad esempio come documenti JSON, archivi wide-column o coppie valore chiave. Fornisce l'astrazione tramite i framework ODM (object-data mapping) per lavorare con i dati NoSQL in modo orientato all'oggetto.

RDBMS: RDBMS si basa maggiormente sulla mappatura da dati a oggetti in modo da garantire una perfetta integrazione tra le colonne del database e il codice dell'applicazione orientato all'oggetto.

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

Casi d'uso di NoSQL

I sistemi di database NoSQL sono utilizzati in quasi tutti i settori, per 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 vanno da quelli altamente critici (ad esempio, l'archiviazione di dati finanziari e cartelle cliniche) a quelle più divertenti e frivole (ad esempio, memorizzare le letture IoT da una lettiera intelligente per gattini).

Quando dovrebbe essere usato NoSQL?

Al momento di decidere quale database utilizzare, i responsabili delle decisioni trovano in genere uno o più dei seguenti fattori che li portano a selezionare un database NoSQL:

  • Sviluppo agile e veloce
  • Archiviazione di dati strutturati e semi-strutturati
  • Enormi volumi di dati
  • Requisiti per un'architettura di scalabilità orizzontale
  • Paradigmi applicativi moderni come i microservizi e lo streaming in tempo reale

Per informazioni più dettagliate sulle ragioni sopra elencate, consulta Quando utilizzare i database NoSQL e Esplorare gli esempi di database NoSQL.

Equivoci sui database NoSQL

Nel corso degli anni, si sono diffuse molte idee sbagliate sui database NoSQL nella comunità degli sviluppatori. In questa sezione, discuteremo due degli equivoci più comuni.

Equivoco: i dati di relazione sono più adatti ai database relazionali

Un equivoco comune è che i database NoSQL o i database non relazionali non memorizzano adeguatamente i dati di relazione. I database NoSQL possono memorizzare i dati di relazione, è solo che li memorizzano in modo diverso rispetto ai database relazionali.

Infatti, rispetto ai 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.

Equivoco: 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, di fatto, le transazioni ACID.

Nota 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 sono state archiviate informazioni su un utente e sui 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ù sugli equivoci più comuni, leggi Tutto ciò che sai su MongoDB è sbagliato.

Tutorial sulle query NoSQL

Si potrebbe iniziare con MongoDB, il database NoSQL più diffuso al mondo secondo DB-Engines. Il modo più semplice per iniziare a usare MongoDB è 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 di MongoDB University MongoDB Aggregation.

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

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 diversi tipi, tra cui archivi di documenti, database di valore chiave, archivi wide-column, database a grafo e database multimodello.

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

Non vedi l'ora di saperne di più ora che hai un account Atlas? Vai alla MongoDB University dove puoi ricevere formazione online gratuita dagli ingegneri MongoDB e ottenere una certificazione MongoDB. Le guide rapide sono un altro ottimo punto di partenza: ti aiuteranno a utilizzare rapidamente il tuo linguaggio di programmazione preferito.

Domande frequenti

Quali sono i vantaggi di un database NoSQL?

Molti database NoSQL presentano i seguenti vantaggi:

Che cos'è la coerenza finale?
La coerenza finale è una proprietà dei database distribuiti. La coerenza finale garantisce che quando viene effettuato un aggiornamento al database, alla fine, tutti i nodi del database distribuito rifletteranno tale aggiornamento.
Che cos'è il teorema CAP?
Il teorema CAP afferma che un sistema di calcolo distribuito può fornire un massimo di due delle seguenti tre proprietà: coerenza, disponibilità e tolleranza alle partizioni.
Per cosa viene utilizzato NoSQL?

I database NoSQL sono utilizzati in quasi tutti i settori per una varietà di casi d'uso.

Il tipo di database NoSQL determina il caso d'uso tipico. Ad esempio, i database di documenti come MongoDB sono database generici. I database chiave-valore sono ideali per grandi volumi di dati con semplici query di ricerca. Gli archivi wide-column funzionano bene per casi d'uso con grandi quantità di dati e modelli di query prevedibili. I database a grafo eccellono nell'analisi e nell'attraversamento delle relazioni tra i dati. Per ulteriori informazioni, vedi Spiegazione dei diversi tipi di database NoSQL.

Che cos'è un database NoSQL?
Un database NoSQL è un database che memorizza i dati in un formato diverso dalle tabelle relazionali.
Come si scrive una query NoSQL?

Ogni database NoSQL avrà il proprio approccio alla scrittura delle query. Consulta la documentazione interattiva di MongoDB per saperne di più su come effettuare query su un database MongoDB.

NoSQL è difficile da capire?

No, i database NoSQL non sono difficili da capire. In effetti, molti sviluppatori trovano incredibilmente intuitiva la modellazione dei dati nei database NoSQL. Ad esempio, i documenti in MongoDB si associano alle strutture di dati nei linguaggi di programmazione più diffusi, rendendo la programmazione più veloce e semplice.

Tieni presente che chi ha formazione ed esperienza nei database relazionali probabilmente dovrà affrontare una certa curva di apprendimento man mano che si abituerà ai nuovi modi di modellare i dati nei database NoSQL.

JSON è un database NoSQL?
Un database di documenti è un tipo di database NoSQL che archivia i dati in documenti JSON o BSON.
Quale linguaggio viene usato per effettuare query in NoSQL?
I database NoSQL coprono una varietà di tipi e implementazioni. Di conseguenza, i database NoSQL possono essere interrogati utilizzando diversi linguaggi di query e API. MongoDB, il database NoSQL più diffuso al mondo, può essere interrogato utilizzando il linguaggio delle query di MongoDB (MQL).
NoSQL ha uno schema?
I database NoSQL hanno in genere schemi flessibili. Tieni presente che alcuni database NoSQL, come MongoDB, supportano anche la convalida degli schemi, quindi gli sviluppatori possono bloccare i loro schemi quanto vogliono quando sono pronti.

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

Ulteriori informazioni sulle differenze chiave tra NoSQL e database SQL

Risorse NoSQL correlate
Ulteriori informazioni

Segui questo tutorial con MongoDB Atlas

Scopri i vantaggi dell’utilizzo di MongoDB, il principale database NoSQL, sul cloud.
Inizia gratis!