Home

topics

database nosql

Cos'è un database NoSQL?
Esplora la soluzione di database NoSQL di IBM Abbonati per ricevere gli aggiornamenti sull'AI
Illustrazione con collage di pittogrammi di nuvole, grafico a torta, pittogrammi grafici su quanto segue
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 didatabase 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?"

AI generativa e apprendimento automatico (ML) per le imprese

Scopri i principali vantaggi dell'AI generativa e come le organizzazioni possono incorporare l'AI generativa e il machine learning nel proprio business.

Contenuti correlati Registrati per ricevere l'ebook su Presto
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 (link esterno a IBM), 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ù veloce rispetto ai database convenzionali 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."

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 archivio 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 gateway API 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
IBM Cloudant

Il livello di dati per applicazioni iperscalabili, resilienti e disponibili in tutto il mondo, basato su Apache CouchDB open source

Esplora IBM Cloudant
Risorse Database SQL e NoSQL: qual è la differenza?

Esplora le principali differenze tra i database SQL e NoSQL e scopri quale tipo di database è il migliore per i vari casi d'uso.

Utilizzo di un database NoSQL per gestire le informazioni in un moderno ambiente di vendita al dettaglio

Scopri come accelerare il passaggio allo shopping online.

Scopri quale tipo di database utilizzare

Esplora i diversi fattori da considerare nel tentativo di determinare le migliori opzioni di database durante il refactoring verso un approccio basato su microservizi.

Fai il passo successivo

Scala i workload AI per tutti i tuoi dati, ovunque, con IBM watsonx.data, uno storage dei dati adatto allo scopo costruito su un'architettura open data lakehouse.

Esplora watsonx.data Prenota una demo live