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.
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?"
Scopri i principali vantaggi dell'AI generativa e come le organizzazioni possono incorporare l'AI generativa e il machine learning nel proprio business.
Registrati per ricevere l'ebook su Presto
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:
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.
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.
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.
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.
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.
Molte aziende sono entrate nel landscape NoSQL. Oltre a quelli già citati, alcuni database NoSQL popolari sono:
Per maggiori informazioni sullo stato dei database, vedi "Breve panoramica sui database."
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:
In breve, i database NoSQL offrono prestazioni elevate, disponibilità e scalabilità.
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.
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.
Il livello di dati per applicazioni iperscalabili, resilienti e disponibili in tutto il mondo, basato su Apache CouchDB open source
Esplora le principali differenze tra i database SQL e NoSQL e scopri quale tipo di database è il migliore per i vari casi d'uso.
Scopri come accelerare il passaggio allo shopping online.
Esplora i diversi fattori da considerare nel tentativo di determinare le migliori opzioni di database durante il refactoring verso un approccio basato su microservizi.