Il termine "NoSQL" fa riferimento a tipi di database non relazionali e questi database archiviano i dati in un formato diverso dalle tabelle relazionali. Tuttavia, non è possibile eseguire query relative ai database NoSQL utilizzando API linguistiche idiomatiche, linguaggi di query strutturati dichiarativi e linguaggi Query by Example, motivo per cui vengono anche definiti database "non solo SQL".
I database NoSQL sono ampiamente utilizzati nelle applicazioni Web in tempo reale e nei big data, poiché i loro principali vantaggi sono l'elevata scalabilità e l'elevata disponibilità.
Inoltre, i database NoSQL rappresentano la scelta preferita degli sviluppatori, poiché si prestano naturalmente a un paradigma di sviluppo agile adattandosi rapidamente alle mutevoli esigenze. I database NoSQL consentono di archiviare i dati in modi più intuitivi e più facili da comprendere o più analoghi al modo in cui i dati vengono utilizzati dalle applicazioni, con un numero inferiore di trasformazioni necessarie durante lo storage o il recupero tramite API in stile NoSQL. Inoltre, i database NoSQL possono sfruttare appieno il cloud per assicurare zero tempi di inattività.
I database SQL sono relazionali, mentre i database NoSQL sono non relazionali. Il sistema di gestione del database relazionale (RDBMS) è la base per il linguaggio di query strutturato (SQL), che consente agli utenti di accedere e manipolare i dati in tabelle altamente strutturate. Questo è il modello fondamentale per i sistemi di database come MS SQL Server, IBM DB2, Oracle e MySQL. Ma con i database NoSQL, la sintassi di accesso ai dati può essere diversa a seconda del database.
Per comprendere i database NoSQL, è importante conoscere la differenza tra RDBMS e tipi di database non relazionali.
I dati in un RDBMS sono archiviati in oggetti di database chiamati tabelle. Una tabella è una raccolta di voci di dati correlate ed è composta da colonne e righe. Questi database richiedono la definizione anticipata dello schema, vale a dire tutte le colonne e i relativi tipi di dati associati devono essere noti in anticipo in modo che le applicazioni possano scrivere dati nel database. Inoltre, archiviano informazioni che collegano più tabelle tramite l'uso di chiavi, creando così una relazione tra più tabelle. Nel caso più semplice, una chiave viene utilizzata per recuperare una riga specifica in modo che possa essere esaminata o modificata.
Al contrario, nei database NoSQL, i dati possono essere archiviati senza definire lo schema in anticipo, il che significa che è possibile spostarsi e ripetere rapidamente, definendo il modello di dati in base alle esigenze. Può essere adatto a requisiti aziendali specifici, che si tratti di un archivio di valori chiave, basato su grafici, orientato alle colonne o orientato ai documenti.
Fino a pochissimo tempo fa, i database relazionali erano i modelli più utilizzati. Sono ancora diffusi in molte aziende; tuttavia, la varietà, la velocità e il volume dei dati a cui si accede oggi può richiedere un database molto diverso per l'integrazione con il database relazionale. In alcune aree ciò ha portato all'adozione dei database NoSQL, che vengono anche definiti "database non relazionali". Grazie alla loro capacità di scalabilità orizzontale e rapida, i database non relazionali sono in grado di gestire un traffico elevato, rendendoli anche altamente adattabili.
Data la necessità di aziende e organizzazioni di innovare rapidamente, essere in grado di rimanere agili e continuare a operare su qualsiasi scala è la parola d'ordine. I database NoSQL offrono schemi flessibili e supportano anche una varietà di modelli di dati ideali per la creazione di applicazioni che richiedono grandi volumi di dati e bassa latenza o tempi di risposta, ad esempio giochi online e applicazioni Web di e-commerce.
I database NoSQL in genere si basano su dati denormalizzati, supportando i tipi di applicazioni che utilizzano un numero inferiore di tabelle (o container) e le cui relazioni tra dati non sono modellate utilizzando riferimenti, ma come record (o documenti) incorporati. Molte applicazioni aziendali classiche di back-office nei campo di Finance, contabilità e pianificazione delle risorse aziendali si basano su dati altamente normalizzati per prevenire anomalie dei dati e duplicazione dei dati. In genere, sono i tipi di applicazioni che non si adattano a un database NoSQL.
Un'altra distinzione dei database NoSQL è la complessità delle query. I database NoSQL funzionano perfettamente con le query su una singola tabella. Tuttavia, con l'aumentare della complessità delle query, i database relazionali rappresentano la scelta migliore. Il database NoSQL in genere non offre join complessi, sottoquery e nidificazione di query in una clausola WHERE.
A volte, tuttavia, non è necessario scegliere tra database relazionali e non relazionali. In molte occasioni, le aziende hanno scelto database che offrono un modello convergente, tramite cui sono in grado di utilizzare una combinazione di modelli di dati relazionali e non relazionali. Questo approccio ibrido offre una maggiore flessibilità nella gestione di diversi tipi di dati, garantendo al tempo stesso la coerenza di lettura e scrittura senza compromettere le performance.
Uno dei principali fattori di differenziazione tra i database NoSQL e altri tipi di database sta nel fatto che i database NoSQL, in genere, utilizzano lo storage non strutturato. Sviluppati negli ultimi due decenni, i database NoSQL sono stati progettati per query veloci e semplici, dati di grandi dimensioni e frequenti modifiche alle applicazioni. Inoltre, questi database rendono anche la programmazione molto più semplice per gli sviluppatori.
Un altro importante elemento di differenziazione è che i database NoSQL si basano su un processo chiamato "sharding" per la scalabilità orizzontale, il che significa che è possibile aggiungere più macchine per gestire i dati su più server. La scalabilità verticale disponibile in altri database SQL richiede l'aggiunta di maggiore potenza e memoria alla macchina esistente, che potrebbe essere insostenibile poiché servirebbe sempre più storage.
La natura della scalabilità orizzontale con i database NoSQL fa sì che possano gestire quantità di dati estremamente grandi, anche se i dati continuano a crescere, in un modo più efficiente. Può essere utile pensare alla scalabilità verticale come all'aggiunta di un nuovo pavimento in casa, mentre la scalabilità orizzontale è come costruire un'altra casa proprio accanto a quella originale.
La velocità e la portata senza precedenti dell'interazione digitale e del consumo di dati osservate negli ultimi due decenni hanno richiesto alle aziende di adottare un approccio più moderno e fluido al modo in cui archiviano i dati e vi accedono. Gli utenti di tutto il mondo richiedono un flusso ininterrotto di contenuti e funzioni, non c'è quindi da meravigliarsi se i database hanno dovuto adattarsi rapidamente. Tenendo ciò a mente, ecco alcuni dei motivi principali per cui gli sviluppatori scelgono database NoSQL/non relazionali:
Esistono quattro tipi principali di database NoSQL:
Oracle NoSQL Database Cloud Service consente agli sviluppatori di creare facilmente applicazioni utilizzando modelli di database di documenti, colonne e valori chiave che forniscono tempi di risposta prevedibili a una cifra in millisecondi con replica dei dati per un'elevata disponibilità. Il servizio offre transazioni ACID, scalabilità serverless, sicurezza completa e prezzi bassi pay-per-use.
Oracle NoSQL Database Cloud Service fa ora parte di Oracle Cloud Free Tier, che include un periodo di prova promozionale gratuito a tempo limitato che consente di esplorare un'ampia gamma di servizi cloud, nonché un insieme di servizi sempre gratuiti senza scadenza.