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

Comprensione dei database NoSQL e SQL

Nel 2024, si prevede che il volume del mercato dei big data raggiungerà per la prima volta in assoluto gli 84 miliardi di dollari. Dato che ogni giorno vengono generati circa 2,5 quintilioni di byte di dati, a livello globale (BDAN.com, 2024), questo aumento del mercato ha perfettamente senso ed è uno dei fattori trainanti dello sviluppo e dell'utilizzo esponenziali dei sistemi di database.

Due dei tipi di database più comunemente usati sono i database SQL (ad esempio relational database) e i database NoSQL. Continua a leggere per saperne di più sui database NoSQL e SQL, su come funzionano, sui casi d'uso comuni e sui pro e contro di ogni tipo di database.

Sommario

SQL (Structured Query Language)
Che cos'è SQL?

SQL, che sta per Structured Query Language, è un linguaggio di programmazione specifico del dominio (ad esempio, un linguaggio mirato a un'attività o un problema specifico) che viene comunemente usato per attività come l'inserimento, l'aggiornamento, l'interrogazione e l'eliminazione di dati all'interno di un database. SQL viene utilizzato anche per creare e modificare schemi di database (ad esempio, regole di formattazione dei dati, struttura tabella/indice) e per definire i parametri di accesso e amministrazione del database.

Che cosa sono i dati strutturati?

I dati strutturati sono dati organizzati in un formato coerente e predefinito e spesso sono costituiti da caratteri alfanumerici. Gli esempi includono transazioni finanziarie, registri di inventario o elenchi di clienti che sono spesso archiviati in database SQL (ad esempio relational database).

Che cos'è un database SQL?

Quando si usa il termine "database SQL", ci si riferisce a un tipo di database in cui SQL è il linguaggio di programmazione principale utilizzato per creare e gestire quel database. Le interfacce di programmazione delle applicazioni (API) SQL contengono gruppi di funzioni che consentono agli sviluppatori di eseguire e gestire operazioni di database senza dover creare singoli comandi SQL più e più volte.

Indipendentemente dal fatto che un database SQL venga utilizzato per archiviare transazioni per un rivenditore o informazioni finanziarie per una società, i database SQL rientrano in un tipo di database denominato relational database.

Relational database

I relational database, o RDBMS (Relational Database Management Systems), memorizzano i dati all'interno di righe e colonne utilizzate per formare tabelle. È possibile creare una relazione tra due tabelle (o più) utilizzando una chiave esterna. Queste chiavi esterne (ad esempio, identificatori univoci) mantengono le relazioni predefinite esistenti tra le tabelle.

Esempio: un relational database di e-commerce che ospita informazioni su clienti, prodotti e ordini

un relational database di e-commerce che ospita informazioni su clienti, prodotti e ordini

È importante notare che i relational database vengono creati e gestiti utilizzando uno schema fisso. Uno schema fisso significa che tutti i dati inseriti nel database devono essere allineati con precisione agli standard di formattazione predefiniti, il che limita i tipi di strutture di dati che i relational database possono archiviare. Ad esempio, i relational database non sono in grado di elaborare dati non strutturati (ad esempio, informazioni che hanno un formato incoerente e non sono allineate a un modello di dati preimpostato), ma sono eccellenti nel supportare informazioni transazionali o finanziarie che includono dati strutturati o tipi di dati semi-strutturati (ad esempio, dati che hanno un formato coerente e si allineano a un modello di dati preimpostato).

Esempi di database SQL

Esistono diversi esempi di database SQL, tra cui:

È importante notare che anche altri tipi di database possono stabilire relazioni tra i dati. Nel caso di database tabulari normalizzati (ad esempio database SQL o relational database), queste relazioni vengono espresse utilizzando chiavi esterne o tabelle di intersezione. Nel caso di DBMS (Database Management Systems) come MongoDB (ad esempio, un database NoSQL), queste relazioni vengono stabilite incorporando o facendo riferimento ai dati.

NoSQL (Not only Structured Query Language)
Che cos'è NoSQL?

NoSQL, che sta per Not only SQL, è un approccio al sistema di gestione dei database utilizzato per inserire, archiviare e recuperare dati non strutturati e dati semi-strutturati all'interno di un database. Ciò significa che i dati che non possono essere analizzati o contati tramite relational database tradizionali (ad esempio SQL) possono rimanere nel loro formato nativo ed essere inseriti in un database NoSQL. Il motivo per cui si chiama NoSQL è sottolineare che questi database possono gestire modelli di dati non tabulari e non relazionali e supportare linguaggi di query simili a SQL.

Che cosa sono i dati non strutturati?

I dati non strutturati sono dati che non hanno un modello di dati predefinito o un'organizzazione coerente. Inoltre, i dati non strutturati, come i post sui social media, possono aggiornarsi e cambiare rapidamente, mentre i dati strutturati, come le transazioni bancarie, hanno un tasso di variazione molto più basso. Esempi di dati non strutturati includono immagini, file audio, video e mappe.

Che cos'è un database NoSQL?

I database NoSQL sono database che utilizzano uno schema flessibile che ospita dati non strutturati e dati semi-strutturati, utilizzando anche un metodo di archiviazione dei dati non tabulare.

L'uso di uno schema flessibile consente ai database NoSQL di inserire dati non strutturati nel loro formato nativo (ad esempio, .txt, .JPG, MP3), cosa non possibile con i database SQL a causa del requisito che tutti i dati siano allineati a un formato predefinito. Inoltre, quando i database NoSQL archiviano dati, vengono utilizzati modelli di dati flessibili in modo che i file di dati non strutturati possano avere strutture di dati diverse ed essere comunque archiviati all'interno della stessa collection.

Per saperne di più, segui il nostro tutorial sui database NoSQL.

Tipi di database NoSQL

Esistono diversi tipi di database NoSQL, tra cui:

  • Database di documento: i database di documento, talvolta denominati database orientati agli oggetti, memorizzano i dati in documenti simili agli oggetti JSON (JavaScript Object Notation), sebbene non siano archivi JSON. Usano i driver restituiti dagli oggetti nativi al linguaggio di programmazione usato dallo sviluppatore senza bisogno di un mappatore relazionale di oggetti (ORM). Ogni documento stesso viene trattato come un record e può contenere valori tra cui numeri, matrici, oggetti, stringhe o persino caratteri booleani. Inoltre, è possibile includere coppie chiave-valore, documenti nidificati o altri dati strutturati. Un fornitore popolare di questi database NoSQL è MongoDB.
  • Database chiave-valore: i database chiave-valore raccolgono, recuperano e archiviano i dati come raggruppamenti di coppie chiave-valore. Ciò significa che ogni record di dati è rappresentato da una chiave unica e da un valore associato. La chiave viene utilizzata per recuperare il valore corrispondente dal database. Per esempio, in un database chiave-valore di interior design, una chiave potrebbe essere "colore" e il valore potrebbe essere "viola". I fornitori più diffusi di questi sistemi di database NoSQL includono AWS e ScyllaDB.
  • Archivi a famiglie di colonne: i database a famiglie di colonne organizzano i dati in colonne anziché in righe, il che è utile quando si lavora con set di dati ampi e scarsi in profondità. Infatti, gli archivi a famiglie di colonne sono talvolta chiamati "archivi a colonne larghe". Negli archivi a famiglie di colonne, ogni riga ha un diverso set di colonne, e le colonne vengono poi raggruppate in "famiglie". Questi modelli di dati sono utili quando si lavora con insiemi di dati di grandi dimensioni che beneficiano della scalabilità orizzontale per ottimizzare le prestazioni. I fornitori più diffusi di questi database NoSQL includono Apache Cassandra e HBase.
  • Database a grafo: i database a grafo archiviano i dati in nodi e archi. I nodi in genere archiviano informazioni su persone, luoghi e cose mentre gli archi archiviano informazioni sulle relazioni tra i nodi. I database a grafo sono strumenti eccellenti per l'interrogazione di strutture grafiche (ad esempio, social network, gerarchie). I fornitori più diffusi di questi database NoSQL includono Neo4j, AWS e Kibana.
Differenze chiave tra database NoSQL e SQL

Sebbene i database NoSQL e SQL offrano funzionalità preziose, è importante comprendere le principali differenze tra loro.

Modello di archiviazione del database

La differenza tra i sistemi di database NoSQL e SQL per quanto riguarda l'archiviazione dei dati è netta. Nello specifico, i database SQL memorizzano i dati in tabelle contenenti righe e colonne, mentre i sistemi NoSQL memorizzano i dati utilizzando metodi diversi a seconda del tipo di dati non strutturati inseriti (ad esempio, documenti JSON, coppie chiave-valore, raggruppamenti di famiglie, nodi/archi di grafici).

Tipo di dati

Mentre i database NoSQL, a volte indicati come non-relational database, sono in grado di inserire, archiviare e recuperare dati non strutturati, i database SQL (ad esempio, i relational database tradizionali) no. I database SQL sono solo in grado di inserire, archiviare e recuperare dati strutturati. Ciò è dovuto alla differenza tra gli schemi SQL e NoSQL utilizzati.

Schemi

I database SQL si basano su uno schema di dati rigoroso e predefinito con cui i dati da inserire devono essere allineati. Tuttavia, i database NoSQL utilizzano schemi flessibili che consentono loro di inserire i dati nei vari formati nativi.

Scalabilità

È importante che gli amministratori di database pianifichino la crescita e l'espansione dei propri sistemi di database: questo è un altro chiaro punto di differenziazione tra database NoSQL e SQL.

Illustrazione della scalabilità verticale e orizzontale

Database SQL

I database SQL vengono tradizionalmente scalati verticalmente. Ciò significa che le risorse (ad esempio, CPU, archiviazione o memoria) vengono aggiunte a un singolo server. E, sebbene ciò possa causare limitazioni alla quantità di crescita possibile in quanto esiste un solo server con capacità limitata in fase di scalabilità, ci sono diverse ragioni per questa scelta di scalabilità:

Database NoSQL

I sistemi di database NoSQL sono spesso configurati in quello che viene chiamato un sistema distribuito. Ciò significa che un certo numero di computer indipendenti (ad esempio, i nodi) sono collegati tramite una rete e lavorano insieme per raggiungere obiettivi comuni. Far parte di un sistema distribuito significa poter utilizzare il rapporto tra scalabilità orizzontale e scalabilità verticale.

La scalabilità orizzontale comporta l'aumento delle risorse e della capacità disponibili di un sistema distribuito, aggiungendo altri nodi (ad esempio, computer, server) a tale sistema. In questo modo, sono disponibili più nodi per supportare il carico di lavoro del sistema. Inoltre, non c'è praticamente alcun limite alla crescita del database dal punto di vista della capacità, in quanto è possibile continuare ad aggiungere altri nodi.

Scopri di più sulla scalabilità del database.

Casi d'uso della tecnologia di database NoSQL e SQL

Mentre i database SQL eccellono nella gestione di dati strutturati e relazionali mantenendo l'integrità transazionale ed eseguendo query complesse, i database NoSQL sono insuperabili nell'interrogazione e nell'archiviazione di dati non strutturati o semi-strutturati, fornendo al contempo scalabilità e flessibilità illimitate.

Detto questo, i casi d'uso sono una forza trainante nella selezione tra database NoSQL e SQL (ad esempio, relational database e non-relational database). Ecco un riepilogo dei punti di forza e dei casi d'uso associati dei database SQL e dei database NoSQL.

Casi d'uso dei database SQL

Le caratteristiche chiave dei database SQL si prestano ai seguenti casi d'uso:

Conformità normativa

Poiché la struttura dei database SQL si presta alla conformità ACID, vengono spesso utilizzati allo scopo di archiviare dati che devono soddisfare determinati standard governativi o di settore.

I casi d'uso riportati di seguito implicano tutti un certo livello di conformità ACID.

Database transazionali

I database transazionali archiviano i dati che risultano da un'interazione tra due o più parti.

Esempi:

  • Database dei punti vendita al dettaglio (PoS)
  • Database delle prescrizioni e degli ordini sanitari
  • Banche commerciali
  • Database della contabilità e della conservazione dei dati finanziari

Sistemi di pianificazione delle risorse aziendali (ERP)

I sistemi ERP sono utilizzati per aiutare le aziende a gestire i processi fondamentali per le operazioni, la gestione dei dipendenti, la produzione e altro ancora.

Esempi:

  • Database delle risorse umane
  • Sistemi di gestione della catena di approvvigionamento
  • Sistemi di gestione del rischio
Casi d'uso dei database NoSQL

Sebbene sia opinione comune che i database NoSQL (ad esempio non-relational database) non siano conformi all'ACID, alcuni in realtà lo sono. MongoDB è un esempio importante di database NoSQL conforme all'ACID.

Tenendo presente questo, ecco alcuni esempi di casi d'uso comuni dei database NoSQL:

Database transazionali

I database transazionali possono essere supportati anche dai database NoSQL in quanto vengono utilizzati per archiviare dati non strutturati risultanti da un'interazione tra due o più parti.

Esempi:

  • File dei pazienti sanitari che richiedono funzionalità di non-relational database (ad esempio, cartelle cliniche dei pazienti, foto e video di radiografie/scansioni)
  • Fascicoli assicurativi (ad esempio, foto di incidenti automobilistici, documentazione di infortuni)
  • Banche dati di documenti giuridici (ad esempio, deposizioni, memorie, fascicoli di casi)

Database di documento e gestione delle risorse digitali (DAM)

I database di documento e la gestione delle risorse digitali archiviano e gestiscono documenti, immagini, contenuti multimediali, video e altro ancora.

Esempi:

  • Biblioteche online (ad esempio, biblioteche legali, Biblioteca del Congresso online)
  • Piattaforme di pubblicazione digitale come Kindle o Nook
  • Servizi di streaming multimediale come Netflix e Hulu
  • Piattaforme di condivisione di foto online come Instagram o Meta

Analisi dei grafici e delle reti

I database a grafo e di rete sono eccellenti per gestire strutture di dati come i motori di raccomandazione, le reti sociali e l'analisi di rete associata, grazie alla loro capacità di identificare e analizzare relazioni non intuitive all'interno di elementi di dati interconnessi.

Esempi:

  • Analisi dei social network (ad esempio, metriche di post e utenti)
  • Rilevamento delle frodi che isola le transazioni insolite o altre anomalie
  • Grafici della conoscenza (ad esempio, quadranti di prodotti/servizi di Gartner)

Piattaforme Internet delle cose (IoT)

Le piattaforme IoT sono spesso impiegate per archiviare e analizzare i sensor data e i metadati dei dispositivi in tempo reale.

Esempi:

  • Sistemi per la casa intelligente (ad esempio, Google Nest, Amazon Alexa)
  • Sistemi per città intelligenti (ad esempio, funzionamento dei semafori)
  • Raccolta di informazioni meteorologiche

Domande frequenti

Che cos'è SQL?

SQL (Structured Query Language) è un linguaggio di programmazione specifico del dominio comunemente usato per attività come l'inserimento, l'aggiornamento, l'interrogazione e l'eliminazione di dati all'interno di un database. È il linguaggio di programmazione comune utilizzato per creare e gestire relational database.

Che cosa sono i dati strutturati?

I dati strutturati sono dati organizzati in un formato coerente e predefinito e spesso sono costituiti da caratteri alfanumerici. Gli esempi includono transazioni finanziarie, registri di inventario o elenchi di clienti che sono spesso archiviati in database SQL (ad esempio relational database).

Che cos'è un relational database?

I relational database, o RDBMS (Relational Database Management Systems), memorizzano i dati all'interno di righe e colonne utilizzate per formare tabelle. È possibile creare una relazione tra due tabelle (o più) utilizzando una chiave esterna. Queste chiavi esterne (ad esempio, identificatori univoci) mantengono le relazioni predefinite esistenti tra le tabelle.

Perché i relational database archiviano solo dati strutturati?

A causa dell'utilizzo di database SQL a schema fisso (ad esempio relational database), questi sistemi di database non sono in grado di ospitare le diverse strutture di dati non strutturati come file video, foto o file di testo.

Che cos'è NoSQL?

NoSQL (Not only SQL) è un approccio al sistema di gestione dei database (DBMS) utilizzato per inserire, archiviare e recuperare dati non strutturati e dati semi-strutturati all'interno di un database.

Che cosa sono i dati non strutturati?

I dati non strutturati sono dati che non hanno un modello di dati predefinito o un'organizzazione coerente. Inoltre, i dati non strutturati, come i post sui social media, possono aggiornarsi e cambiare rapidamente, mentre i dati strutturati, come le transazioni, hanno un tasso di variazione molto più basso. Esempi di dati non strutturati includono immagini, file audio, video e mappe.

Che cos'è un database NoSQL?

I database NoSQL sono database che utilizzano uno schema flessibile che ospita dati non strutturati e dati semi-strutturati, utilizzando anche un metodo di archiviazione dei dati non tabulare.

Perché un database NoSQL può archiviare dati non strutturati mentre i database SQL non possono?
L'uso di uno schema flessibile consente ai database NoSQL di inserire dati non strutturati nel loro formato nativo (ad esempio, .txt, .JPG, MP3), cosa non possibile con i database SQL a causa del requisito che tutti i dati siano allineati a un formato predefinito.
Quali sono i tipi di database NoSQL?

I tipi più comuni di database NoSQL sono:

  • Database di documento
  • Database chiave-valore
  • Archivi a famiglie di colonne
  • Database a grafo
Quali sono le principali differenze tra i database NoSQL e i database SQL?

Le principali differenze tra i database SQL e i database NoSQL includono:

  • Modelli di archiviazione del database.
  • Tipi di dati.
  • Schemi.
  • Scalabilità.

Primi Passi con MongoDB Atlas

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