I database NoSQL (noti anche come “non solo SQL”) non sono tabulari e memorizzano i dati in modo diverso rispetto alle tabelle relazionali. I database NoSQL sono disponibili in una varietà di tipologie in base al loro modello di dati. I tipi principali sono di documenti, di valore chiave, wide-column e grafici, e forniscono schemi flessibili e facilmente scalabili con grandi quantità di dati e carichi elevati degli utenti.

Cos’è NoSQL?

Quando le persone usano il termine «database NoSQL», in genere lo usano per fare riferimento a qualsiasi database non relazionale. Alcuni dicono che il termine “NoSQL” stia per “non SQL” mentre altri affermano di essere “non solo SQL”. In entrambi i casi, la maggior parte accetta che i database NoSQL siano database che memorizzano i dati in un formato diverso dalle tabelle relazionali”.

Un equivoco comune è che i database NoSQL o i database non relazionali non memorizzano bene i dati delle relazioni. I database non SQL possono memorizzare i dati di relazione, è solo che li memorizzano in modo diverso rispetto ai database relazionali. Infatti, rispetto ai database SQL, molti trovano la modellazione dei dati di relazione nei database NoSQL più semplice rispetto ai database SQL, perché i dati correlati non devono essere suddivisi tra tabelle.

I modelli di dati NoSQL consentono di annidare i dati correlati all’interno di un’unica struttura di dati.

I database NoSQL sono emersi alla fine degli anni 2000, poiché il costo di archiviazione è drasticamente diminuito. Sono finiti i giorni in cui era necessario creare un modello di dati complesso e difficile da gestire semplicemente allo scopo di ridurre la duplicazione dei dati. Gli sviluppatori (anziché l’archiviazione) stavano diventando il costo principale dello sviluppo software, quindi i database NoSQL ottimizzati per la produttività degli sviluppatori.

.

Poiché i costi di archiviazione sono diminuiti rapidamente, la quantità di applicazioni dati necessarie per archiviazione e query è aumentata. Questi dati sono disponibili in tutte le forme e dimensioni, strutturate, semistrutturate e polimorfiche e la definizione dello schema in anticipo è diventata quasi impossibile. I database NoSQL consentono agli sviluppatori di archiviare enormi quantità di dati non strutturati, dando loro molta flessibilità.

Inoltre, il [Manifesto Agile] (https://agilemanifesto.org) stava aumentando di popolarità e gli ingegneri software stavano riconsiderando il modo in cui hanno sviluppato il software. Stavano riconoscendo la necessità di adattarsi rapidamente ai mutevoli requisiti. Avevano bisogno della capacità di eseguire iterazioni rapide e apportare modifiche durante l’unione dei software, fino al modello di database. I database NoSQL hanno dato loro questa flessibilità.

Anche il cloud computing è aumentato in popolarità e gli sviluppatori hanno iniziato a utilizzare i cloud pubblici per ospitare le loro applicazioni e dati. Volevano la possibilità di distribuire i dati su più server e aree geografiche per rendere le applicazioni resilienti, scalabili orizzontalmente anziché verticalmente e per collocare i dati geolocalizzati in modo intelligente. Alcuni database NoSQL come MongoDB hanno fornito queste funzionalità.

Che cos’è SQL?

Ora che abbiamo una conoscenza dei database NoSQL, confrontiamoli con quelli che sono tradizionalmente i database più popolari: database relazionali a cui si accede SQL (Structured Query Language). È possibile utilizzare SQL quando si interagisce con database relazionali in cui i dati vengono memorizzati in tabelle con colonne e righe fisse.

I database SQL sono aumentati in popolarità nei primi anni ’70. All’epoca, l’archiviazione era estremamente costosa, quindi gli ingegneri software normalizzarono i loro database per ridurre la duplicazione dei dati.

Anche gli ingegneri software negli anni ’70 seguivano comunemente il modello di sviluppo del software a cascata. I progetti sono stati pianificati in dettaglio prima dell’inizio dello sviluppo. Gli ingegneri software hanno creato con cura diagrammi complessi di relazione sulle entità (E-R) per assicurarsi che avessero attentamente pensato a tutti i dati necessari per l’archiviazione. A causa di questo modello di pianificazione iniziale, gli ingegneri software hanno faticato ad adattarsi se i requisiti cambiavano durante il ciclo di sviluppo. Di conseguenza, i progetti spesso superavano il budget, superavano le scadenze e non riuscivano a soddisfare le esigenze degli utenti.

Quali sono i tipi di database NoSQL?

Nel corso del tempo, sono emersi quattro tipi principali di database NoSQL: [database documentali] (https://www.mongodb.com/document-databases), database di valore chiave, archivi wide-column e database grafici. Esaminiamo ogni tipo.

  • I database documentali memorizzano i dati in documenti simili agli oggetti JSON (JavaScript Object Notation). Ciascun documento contiene coppie di campi e valori. I valori possono essere tipicamente una varietà di tipi, inclusi elementi come stringhe, numeri, booleani, array o oggetti e le loro strutture in genere si allineano con gli oggetti con cui gli sviluppatori lavorano nel codice. Per via della loro varietà di tipi di valore sul campo e di potenti linguaggi di query, i database documentali sono ideali per un’ampia varietà di casi di utilizzo e possono essere utilizzati come database di scopo generale. Possono scalare orizzontalmente per contenere grandi volumi di dati. MongoDB è costantemente classificato come il database NoSQL più popolare al mondo secondo [DB-Engines] (https://db-engines.com/en/ranking) ed è un esempio di database documentali. Per ulteriori informazioni sui database documentali, visitare Che cos’è un database documentale?. *I database di valore chiave sono un tipo di database più semplice in cui ogni elemento contiene chiavi e valori. In genere, un valore può essere recuperato solo facendo riferimento alla sua chiave, quindi imparare a interrogare una coppia di valori chiave specifica è in genere semplice. I database di valore chiave sono ideali per i casi di utilizzo in cui è necessario archiviare grandi quantità di dati, ma non è necessario eseguire query complesse per recuperarle. I casi di utilizzo comuni includono l’archiviazione delle preferenze dell’utente o la memorizzazione nella cache. Redis e DynanoDB sono database di valore chiave popolari.

  • Gli archivi wide-column memorizzano i dati in tabelle, righe e colonne dinamiche. Gli archivi wide-column offrono molta flessibilità rispetto ai database relazionali, poiché non è necessaria ogni riga per avere le stesse colonne. Molti considerano gli archivi wide-column come database bidimensionali di valore chiave. Gli archivi wide-column sono ideali quando è necessario memorizzare grandi quantità di dati ed è possibile prevedere quali saranno i modelli di query. Gli archivi wide-column vengono generalmente utilizzati per archiviare i dati dell’Internet of Things e i dati del profilo utente. Cassandra e HBase sono due dei più popolari archivi wide-column.

  • Database grafici archiviano i dati in nodi e bordi. I nodi in genere archiviano informazioni su persone, luoghi e cose mentre i bordi archiviano informazioni sulle relazioni tra i nodi. I database grafici eccellono nei casi di utilizzo in cui è necessario attraversare le relazioni per cercare modelli come social network, rilevamento di frodi e motori di raccomandazione. Neo4j e JanusGraph sono esempi di database grafici.

Come funzionano i database NoSQL

Un modo per comprendere il fascino dei database NoSQL da una prospettiva di progettazione consiste nel considerare in che modo i modelli di dati di un SQL e un database NoSQL potrebbero apparire in un esempio supervisionato utilizzando i dati degli indirizzi.

Il caso SQL. Per un database SQL, la configurazione di un database per gli indirizzi inizia con la costruzione logica del formato e l’aspettativa che i record da archiviare rimangano relativamente invariati. Dopo aver analizzato i modelli di query previsti, un database SQL potrebbe ottimizzare l’archiviazione in due tabelle, una per le informazioni di base e una relativa all’essere un cliente, con il cognome è la chiave per entrambe le tabelle. Ogni riga di ogni tabella è un singolo cliente e ogni colonna ha i seguenti attributi fissi:

  • Cognome :: nome :: iniziale centrale : campi indirizzo :: indirizzo e-mail :: numero di telefono
  • Cognome :: data di nascita :: numero account :: anni cliente :: preferenze di comunicazione

Il caso NoSQL. Nella sezione Tipi di database NoSQL sopra, c’erano quattro tipi descritti e ognuno ha il proprio modello di dati.

Ogni tipo di database NoSQL sarebbe progettato tenendo a mente una situazione specifica del cliente e ci sarebbero motivi tecnici per il modo in cui ogni tipo di database verrebbe organizzato. Il tipo più semplice da descrivere è il database dei documenti, in cui sarebbe naturale combinare sia le informazioni di base che le informazioni dei clienti in un unico documento JSON. In questo caso, ciascuno degli attributi della colonna SQL sarebbe campi e i dettagli del record di un cliente sarebbero i valori dei dati associati a ciascun campo.

Ad esempio: Cognome: "Jones", Nome: "Mary", Iniziale centrale: "S ", ecc

Prova un database NoSQL

Se vuoi provare un database NoSQL, [MongoDB Atlas] (https://www.mongodb.com/cloud/atlas/register?tck=nosql-explained) è un ottimo punto di partenza. Atlas è un servizio di database completamente gestito da MongoDB e disponibile su tutti i principali provider di cloud. Atlas ha un livello gratis per sempre che è possibile utilizzare per dare un’occhiata e scoprire le basi.

Non sai cosa fare ora che hai un account Atlas? Vai alla MongoDB University dove puoi ottenere formazione online gratuita dagli ingegneri di MongoDB. MongoDB University ha superato i 1,4 milioni di registrazioni ai corsi. I tutorial introduttivi rapidi sono un altro ottimo punto di partenza, in quanto ti aiuteranno a essere subito operativo con il tuo linguaggio di programmazione preferito.

Questo articolo è stato scritto da [Lauren Schaefer] (https://twitter.com/Lauren_Schaefer), un Developer Advocate di MongoDB . Ulteriori informazioni sulle differenze chiave tra NoSQL e database SQL

Primi Passi con MongoDB Atlas

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