Che cos'è NoSQL?
I database NoSQL (noti anche come “non solo SQL”) 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 a grafo, e forniscono schemi flessibili e facilmente scalabili con grandi quantità di big data e carichi elevati degli utenti.
In questo articolo scoprirai cos'è un database NoSQL, perché (e quando) dovresti usarne uno e come iniziare.
Sommario
- Che cos'è un database NoSQL?
- Tipi di database NoSQL
- Breve storia dei database NoSQL
- Caratteristiche dei database NoSQL
- Esempio di database relazionale e database NoSQL
- Differenze tra database RDBMS e NoSQL
- Casi d'uso di NoSQL
- Quando dovrebbe essere usato NoSQL?
- Equivoci sui database NoSQL
- Tutorial sulle query di NoSQL
- Riepilogo
- Domande frequenti
Che cos'è un database 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 modo più naturale e flessibile. NoSQL, a differenza di SQL, è un approccio alla gestione dei database, mentre SQL è solo un linguaggio di query, simile a quelli dei database NoSQL.
Tipi di database — NoSQL
Nel tempo, sono emersi quattro principali tipi di database NoSQL: database di documenti, database di valore chiave, archivi wide-column e database a grafo. Al giorno d'oggi, anche i database multimodello stanno diventando molto popolari.
Database orientati al documento
Un database orientato al documento memorizza 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 anche altri oggetti. Un database di documenti offre un modello di dati flessibile, particolarmente adatto per set di dati semi-strutturati e tipicamente non strutturati. Supportano inoltre strutture annidate, semplificando la rappresentazione di relazioni complesse o dati gerarchici.
Esempi di database di documenti sono MongoDB e Couchbase. Un documento tipico sarà simile al seguente:
Key-value databases
Un archivio di valore chiave è un tipo di database più semplice in cui ogni elemento contiene chiavi e valori. Ogni chiave è univoca e associata a un singolo valore. Sono utilizzati per la memorizzazione nella cache e la gestione delle sessioni e forniscono prestazioni elevate in lettura e scrittura perché tendono a memorizzare le cose in memoria. Alcuni esempi sono Amazon DynamoDB e Redis. Di seguito è riportata una semplice visualizzazione dei dati archiviati in un database di valore chiave:
Wide-column stores
Gli archivi wide-column memorizzano i dati sotto forma di tabelle, righe e colonne dinamiche. I dati vengono memorizzati in tabelle. Tuttavia, a differenza dei database SQL tradizionali, gli archivi wide-column sono flessibili, dove le diverse righe possono avere diversi set di colonne. Questi database possono impiegare tecniche di compressione delle colonne per ridurre lo spazio di archiviazione e migliorare le prestazioni. Le righe e le colonne larghe consentono di recuperare in modo efficiente i dati scarsi e ampi. Alcuni esempi di archivi wide-column sono Apache Cassandra e HBase. Un tipico esempio di come i dati vengono memorizzato in un archivio wide-column è il seguente::
name | id | dob | city | |
---|---|---|---|---|
Foo bar | 12345 | foo@bar.com | Some city | |
Carn Yale | 34521 | bar@foo.com | 12-05-1972 |
Database a grafo
Un database a grafo memorizza i dati sotto forma di nodi e archi. I nodi in genere archiviano informazioni su persone, luoghi e cose (come i nomi) mentre gli archi archiviano informazioni sulle relazioni tra i nodi. Funzionano bene per dati altamente connessi, in cui le relazioni o i modelli potrebbero non essere molto evidenti all'inizio. Esempi di database a grafo sono Neo4J e Amazon Neptune. MongoDB inoltre fornisce funzionalità di attraversamento dei grafici utilizzando la fase $graphLookup della pipeline di aggregazione. Di seguito è riportato un esempio di come vengono archiviati i dati: