Cos'è un database NoSQL?

12 dicembre 2022

Cos'è un database NoSQL?

NoSQL, noto anche come "non solo SQL" o "non SQL", è un approccio alla progettazione di database che consente l'archiviazione e l'esecuzione di query sui dati al di fuori delle strutture tradizionali presenti nei database relazionali.

Sebbene NoSQL sia ancora in grado di memorizzare i dati presenti nei sistemi di gestione di database relazionali (RDBMS), li memorizza in modo diverso rispetto a un RDBMS. La decisione di utilizzare un database relazionale rispetto a un database non relazionale è ampiamente contestuale e varia a seconda del caso d'uso.

Invece della tipica struttura tabellare di un database relazionale, i database NoSQL ospitano i dati all'interno di una struttura di dati, come un documento JSON. Non richiedendo uno schema, questo design di database non relazionale offre una rapida scalabilità per gestire insiemi di dati di grandi dimensioni e tipicamente non strutturati.

Anche NoSQL è un tipo di database distribuito, il che significa che le informazioni vengono copiate e memorizzate su vari server, remoti o locali. Questo garantisce disponibilità e affidabilità dei dati. Se alcuni dati vanno offline, il resto del database può continuare a funzionare.

Oggi, le aziende hanno la necessità di gestire grandi volumi di dati ad alta velocità e di scalare rapidamente per eseguire applicazioni web moderne in quasi tutti i settori. In quest'epoca di crescita del cloud, dei big data e delle applicazioni mobili e web, i database NoSQL offrono una velocità e scalabilità che li rendono una scelta popolare per le loro prestazioni e facilità d'uso.

NoSQL e SQL a confronto

Il linguaggio di interrogazione strutturato SQL (Structured Query Language) di solito viene associato a NoSQL. Per capire meglio la differenza tra NoSQL e SQL, può essere utile conoscere la storia di SQL, un linguaggio di programmazione utilizzato per recuperare informazioni specifiche da un database.

Prima dei database relazionali, le aziende utilizzavano un sistema di database gerarchico con una struttura ad albero per le tabelle di dati. Questi primi sistemi di gestione dei database (DBMS) consentivano agli utenti di organizzare grandi quantità di dati. Tuttavia, erano complessi, spesso legati a una particolare applicazione e limitati nelle modalità di scoperta dei dati. Queste limitazioni portarono infine allo sviluppo di sistemi di gestione di database relazionali, che disponevano di dati in tabelle. SQL ha fornito un'interfaccia per interagire con i dati relazionali, consentendo agli analisti di collegare le tabelle unendosi ai campi comuni.

Con il passare del tempo, la richiesta di un utilizzo più rapido e diversificato di grandi insiemi di dati è diventata sempre più importante per le tecnologie emergenti, come le applicazioni di e-commerce. I programmatori avevano bisogno di qualcosa di più flessibile dei database SQL (ad es. i database relazionali). NoSQL è diventato la giusta alternativa.

Sebbene NoSQL abbia fornito un'alternativa a SQL, questo progresso non ha in alcun modo sostituito i database SQL. Ad esempio, supponiamo che tu stia gestendo gli ordini al dettaglio presso un'azienda. In un modello relazionale, le singole tabelle gestirebbero i dati del cliente, i dati dell'ordine e i dati del prodotto separatamente e verrebbero uniti attraverso una chiave unica e comune, come un ID cliente o un ID ordine. Sebbene questo sia ottimo per memorizzare e recuperare rapidamente i dati, richiede una memoria significativa. Quando desideri aggiungere più memoria, i database SQL possono scalare solo verticalmente, non orizzontalmente, il che significa che la tua capacità di aggiungere più memoria è limitata all'hardware di cui disponi. Il risultato è che la scalabilità verticale limita in ultima analisi il recupero e il data storage della tua azienda.

In confronto, i database NoSQL non sono relazionali, il che elimina la necessità di collegare le tabelle. Le loro funzionalità integrate di sharding e di high availability facilitano la scalabilità orizzontale. Se un singolo server di database non è sufficiente per archiviare tutti i dati o gestire tutte le query, il workload può essere suddiviso su due o più server, consentendo alle aziende di scalare i dati orizzontalmente.

Sebbene ogni tipo di database abbia i suoi vantaggi, le aziende utilizzano comunemente sia database NoSQL che relazionali in un'unica applicazione. I provider di cloud di oggi sono in grado di supportare database SQL oppure NoSQL. La scelta del database dipende dai propri obiettivi.

Per un approfondimento sulle differenze tra le due opzioni, vedi "Database SQL vs. NoSQL: qual è la differenza?"

Design 3D di palline che rotolano su una pista

Le ultime notizie e insight sull'AI 


Scopri notizie e insight selezionati da esperti in materia di AI, cloud e molto altro nella newsletter settimanale Think. 

Tipi di database NoSQL

NoSQL offre altre opzioni per organizzare i dati in molti modi. Offrendo diverse strutture di dati, NoSQL può essere applicato alla data analytics, alla gestione dei big data, ai social network e allo sviluppo di app mobili.

Un database NoSQL gestisce le informazioni utilizzando uno di questi modelli di dati primari:

Memorizzazione di valori chiave

Questa è generalmente considerata la forma più semplice di database NoSQL. Questo modello di dati senza schema è organizzato in un dizionario di coppie chiave/valore, in cui ogni elemento è dotato di una chiave e un valore. La chiave potrebbe essere qualcosa di simile a un SQL Database, come l'ID di un carrello, mentre il valore è un array di dati, come ogni singolo articolo del carrello dell'utente. Viene comunemente utilizzato per il caching e l'archiviazione delle informazioni sulla sessione utente, ad esempio i carrelli. Tuttavia, non è l'ideale quando è necessario estrarre più record contemporaneamente. Redis e Memcached sono esempi di database chiave/valore open-source.

Memorizzazione di documenti

Come suggerisce il nome, i database di documenti archiviano i dati come documenti. Possono essere utili nella gestione dei dati semistrutturati, e i dati vengono generalmente archiviati nei formati JSON, XML o BSON. Ciò mantiene insieme i dati quando vengono utilizzati nelle applicazioni, riducendo la quantità di traduzioni necessarie per utilizzarli. Gli sviluppatori ottengono inoltre maggiore flessibilità perché non è necessario che gli schemi di dati corrispondano tra i documenti (ad es. name vs. first_name). Tuttavia, questo può essere problematico per transazioni complesse, e portare alla corruzione dei dati. I casi d'uso più diffusi dei database di documenti includono i sistemi di gestione dei contenuti e i profili utente. Un esempio di database orientato ai documenti è MongoDB, il componente database dello stack MEAN.

Vuoi saperne di più su MongoBD? Dai un'occhiata al tutorial IBM per iniziare a utilizzare IBM Cloud Databases for MongoDB.

Database wide-column

Questi database memorizzano le informazioni in colonne, consentendo agli utenti di accedere solo alle colonne specifiche di cui hanno bisogno senza allocare ulteriore memoria su dati irrilevanti. Questo database cerca di risolvere le carenze delle memorie di valori chiave e di documenti ma, dal momento che può essere un sistema più complesso da gestire, se ne sconsiglia l'uso da parte dei team e per i progetti più recenti. Apache HBase e Apache Cassandra sono esempi di database open source wide-column.Apache HBase è costruito sulla base di Hadoop Distributed Files System, che offre un modo per memorizzare set di dati sparsi, comunemente utilizzati in molte applicazioni di big data.Apache Cassandra, invece, è stato progettato per gestire grandi quantità di dati su più server e clustering che si estendono su più data center. È stato utilizzato per una varietà di casi d'uso, come siti web di social network e data analytics in tempo reale.

Database a grafo

Questo tipo di database ospita tipicamente i dati di un grafo di conoscenza. Gli elementi dei dati vengono memorizzati come nodi, archi e proprietà. Qualsiasi oggetto, luogo o persona può essere un nodo. Un arco definisce la relazione tra i nodi. Ad esempio, un nodo potrebbe essere un cliente, come IBM, e un'agenzia come Ogilvy. Un arco potrebbe consistere nel classificare la relazione come una relazione di clientela tra IBM e Ogilvy.

I database a grafo vengono utilizzati per archiviare e gestire una rete di connessioni tra elementi all'interno del grafo. Neo4j, un servizio di database a grafo basato su Java con una community edition open-source in cui gli utenti possono acquistare licenze per il backup online e le estensioni per l'high availability, oppure una versione preconfezionata con licenza con backup ed estensioni incluse.

Database in-memory

Con questo tipo di database, come IBM solidDB, i dati risiedono nella memoria principale anziché su disco, rendendo l'accesso ai dati più rapido rispetto ai database tradizionali basati su disco.

Esempi di database NoSQL

Molte aziende sono entrate nel landscape NoSQL. Oltre a quelli già citati, alcuni database NoSQL popolari sono:

  • Apache CouchDB, un database open source basato su documenti JSON che utilizza JavaScript come linguaggio di query.
  • Elasticsearch, un database basato su documenti che include un motore di ricerca full-text.
  • Couchbase, un database di documenti e chiave/valore che consente agli sviluppatori di creare applicazioni reattive e flessibili per cloud, mobile ed edge computing.

Per maggiori informazioni sullo stato dei database, vedi "Breve panoramica sui database".

Mixture of Experts | Podcast

Decoding AI: Weekly News Roundup

Unisciti al nostro gruppo di livello mondiale di ingegneri, ricercatori, leader di prodotto e molti altri mentre si fanno strada nell'enorme quantità di informazioni sull'AI per darti le ultime notizie e gli ultimi insight sull'argomento.

Vantaggi di NoSQL

Ciascun tipo di database NoSQL ha dei punti di forza che lo rendono migliore per casi d'uso specifici. Tuttavia, tutti condividono i seguenti vantaggi per gli sviluppatori e creano le condizioni giuste per poter fornire un servizio migliore ai clienti, tra cui:

  • Rapporto costo-efficacia: è costoso mantenere un RDBMS commerciale di fascia alta. Per scalare verticalmente, è necessario l'acquisto di licenze, gestori di database qualificati, nonché un hardware potente.I database NoSQL ti consentono di scalare rapidamente in senso orizzontale, allocando meglio le risorse per ridurre al minimo i costi.
  • Flessibilità: la scalabilità orizzontale e un modello di dati flessibile consentono ai database NoSQL di gestire grandi volumi di dati in rapida evoluzione, il che li rende ideali per uno sviluppo agile, iterazioni rapide e frequenti push di codice.
  • Replica: la funzionalità di replica NoSQL copia e memorizza i dati su più server. Questa replica garantisce l'affidabilità dei dati, garantendo l'accesso durante i tempi di inattività e proteggendo dalla perdita di dati in caso di disconnessione dei server.
  • Velocità: NoSQL consente uno storage e un'elaborazione più rapidi e agili per tutti gli utenti, dagli sviluppatori ai team di vendita ai clienti. La velocità rende inoltre i database NoSQL generalmente più adatti per applicazioni Web moderne e complesse, siti di e-commerce o applicazioni mobili.

In breve, i database NoSQL offrono prestazioni elevate, disponibilità e scalabilità.

Casi d'uso di NoSQL

La scelta della struttura e del tipo di database NoSQL dipenderà da come la tua organizzazione intende utilizzarlo. Ecco alcuni usi specifici per vari tipi di database NoSQL.

  • Gestione delle relazioni tra i dati: la gestione della complessa aggregazione di dati e delle relazioni tra questi punti viene in genere gestita con un database NoSQL a grafo. Ciò include motori di raccomandazione, grafi di conoscenza, applicazioni di rilevamento delle frodi e social network, in cui vengono stabilite connessioni tra persone che utilizzano vari tipi di dati.
  • Prestazioni a bassa latenza: il gioco, le applicazioni di home fitness e la tecnologia nella pubblicità richiedono un elevato throughput per la gestione dei dati in tempo reale. Questa infrastruttura fornisce il massimo valore al consumatore, sia che si tratti di aggiornamenti sulle offerte di mercato, sia di restituire gli annunci più pertinenti. Le applicazioni Web richiedono database NoSQL in-memory per fornire tempi di risposta rapidi e gestire i picchi di utilizzo senza il ritardo che può derivare dall'archiviazione su disco.
  • Scalabilità e grandi volumi di dati: l'e-commerce richiede la capacità di gestire enormi picchi di utilizzo, che si tratti di una vendita di un giorno o del periodo degli acquisti durante le festività. I database chiave/valore sono spesso utilizzati nelle applicazioni di e-commerce perché la loro struttura semplice è facilmente scalabile in periodi di traffico intenso. Questa agilità è preziosa per le applicazioni di gaming, adtech e Internet of Things (IoT).

Microservizi e database NoSQL

La necessità per le grandi aziende di fornire servizi senza latenza e di scalare più rapidamente ha stimolato la crescita dei microservizi, portando le aziende a valutare quale tipo di database utilizzare per diverse applicazioni.

Le aziende hanno scoperto che l'utilizzo di un unico database relazionale per ogni componente di un'applicazione presenta dei limiti, soprattutto quando esistono alternative migliori per componenti specifici. I microservizi sono un'opzione interessante, in parte, perché eliminano la necessità di un unico storage dei dati condiviso per un'intera applicazione. L'applicazione, al contrario, conta molti servizi, liberamente accoppiati e distribuiti in modo indipendente, ciascuno con il proprio modello di dati e database e integrato tramite API Gateway o un iPaaS.

Il modello di utilizzo di più database all'interno di una singola applicazione, noto anche come persistenza poliglotta, ha contribuito a creare uno spazio nel mercato per la crescita dei database NoSQL. Oggi, gli sviluppatori possono sfruttare il database giusto per il microservizio giusto senza cercare di far funzionare tutto nel contesto di un singolo database relazionale.

Soluzioni correlate
Software e soluzioni per database

Usa le soluzioni di database di IBM per soddisfare varie esigenze di workload nell'hybrid cloud.

Esplora le soluzioni di database
Database cloud-native con IBM Db2

Esplora IBM DB2, un database relazionale che offre prestazioni, scalabilità e affidabilità elevate per l'archiviazione e la gestione di dati strutturati. È disponibile come SaaS su IBM Cloud o in self-hosting.

Scopri Db2
Servizi di consulenza per dati e analytics

Sblocca il valore dei dati enterprise con IBM Consulting, creando un'organizzazione basata su insight in grado di generare vantaggi aziendali.

Esplora i servizi di analytics
Fasi successive

Usa le soluzioni di database di IBM per soddisfare varie esigenze di workload nel cloud ibrido.

Esplora le soluzioni di database Scopri IBM Db2