Cosa sono i database NoSQL?
I database NoSQL sono creati appositamente per modelli di dati specifici e archiviano i dati in schemi flessibili che scalano facilmente per le applicazioni moderne. I database NoSQL si sono affermati per la facilità di sviluppo, la funzionalità e la scalabilità delle prestazioni. Questa pagina include risorse per aiutarti a capire meglio i database NoSQL e iniziare a utilizzarli.
Quali sono i vantaggi dei database NoSQL
Le applicazioni moderne devono affrontare diverse sfide che possono essere risolte dai databaseNoSQL. Ad esempio, le applicazioni elaborano un grande volume di dati da fonti diverse come social media, sensori intelligenti e database di terze parti. Tutti questi dati disparati non si adattano perfettamente al modello relazionale. L'applicazione di strutture tabulari può portare a ridondanza, duplicazione dei dati e problemi di prestazioni su larga scala.
I database NoSQL sono appositamente realizzati per modelli di dati specifici e hanno schemi flessibili per creare applicazioni moderne. I database NoSQL si sono affermati per la facilità di sviluppo, la funzionalità e la scalabilità delle prestazioni. I vantaggi dei database NoSQL sono elencati di seguito.
Flessibilità
I database NoSQL offrono generalmente schemi flessibili che consentono uno sviluppo più veloce e iterativo. Il modello di dati flessibile fa dei database NoSQL la soluzione ideale per i dati semi-strutturati e non strutturati.
Scalabilità
I database NoSQL in genere sono progettati per il dimensionamento orizzontalmente, attuato usando cluster distribuiti di hardware, invece del dimensionamento verticalmente, che avviene aggiungendo server costosi e di grosse dimensioni. Alcuni fornitori di cloud gestiscono queste operazioni dietro le quinte offrendo un servizio completamente gestito.
Prestazioni elevate
I database NoSQL sono ottimizzati per modelli di dati e modelli di accesso specifici. Questi consentono prestazioni più elevate rispetto a quelle che si otterrebbero se si stesse cercando di ottenere funzionalità simili con i database relazionali.
Altamente funzionali
I database NoSQL offrono API altamente funzionali e tipi di dati che sono dedicati a ciascuno dei rispettivi modelli di dati.
Quali sono i casi d'uso dei database NoSQL
Puoi utilizzare i database NoSQL per creare un'ampia varietà di applicazioni mobili, Internet delle cose (IoT), giochi e Web ad alte prestazioni che offrono esperienze utente eccezionali su larga scala. La gamma di database NoSQL e i rispettivi casi d'uso sono ampi. Sebbene sia difficile presentare un insieme rappresentativo di casi d'uso, di seguito forniamo alcuni esempi illustrativi come spunto di riflessione e ti incoraggiamo a saperne di più su ciascun database NoSQL e sui rispettivi casi d'uso.
Gestione dati in tempo reale
Puoi fornire consigli in tempo reale, personalizzazione ed esperienze utente migliorate con i database NoSQL. Ad esempio, Disney+ offre la sua vasta libreria di contenuti digitali a oltre 150 milioni di abbonati utilizzando la tecnologia di database NoSQL. È in grado di scalare e fornire funzionalità popolari come Continua a guardare, Watchlist e Consigli personalizzati con Amazon DynamoDB.
Sicurezza nel cloud
Puoi utilizzare i database a grafo per scoprire rapidamente relazioni complesse all'interno dei tuoi dati. Ad esempio, Wiz ha reinventato la sicurezza del cloud sotto forma di grafico utilizzando Amazon Neptune. Wiz aiuta i propri clienti a migliorare il proprio livello di sicurezza identificando e correggendo rapidamente i rischi più critici. Usano un modello grafico archiviato in Amazon Neptune per scoprire la combinazione tossica di fattori di rischio che rappresentano rischi critici. I motori di rischio Wiz attraversano il grafico e in pochi secondi uniscono una serie di fattori di rischio interconnessi in un grafico di sicurezza.
Applicazioni ad alta disponibilità
I database NoSQL distribuiti sono eccellenti per creare applicazioni ad alta disponibilità e bassa latenza per la messaggistica, i social media, la condivisione di file e altro ancora. Ad esempio, Snapchat ha più di 290 milioni di utenti che inviano miliardi di foto e videomessaggi ogni giorno. Utilizza sistemi di database NoSQL per ridurre la latenza mediana di invio dei messaggi del 20%.
Come funzionano i database NoSQL
I database NoSQL utilizzano una varietà di modelli di dati per accedere e gestire i dati. Questi tipi di database sono ottimizzati specificatamente per applicazioni che richiedono modelli di dati flessibili, grandi volumi di dati e bassa latenza, ottenuti snellendo alcuni dei criteri di coerenza dei dati dei database relazionali. Esistono differenze nell'implementazione in base al modello di dati. Tuttavia, molti database NoSQL utilizzano Javascript Object Notation (JSON), un formato aperto di interscambio di dati che rappresenta i dati come una raccolta di coppie nome-valore.
Esempio di database NoSQL
Consideriamo l'esempio della creazione di un modello di schema per un semplice database di libri:
- In un database relazionale, il record di un libro spesso viene smontato (o "normalizzato") e archiviato in tabelle distinte; le relazioni sono definite da vincoli di chiavi primarie ed esterne. In questo esempio, la tabella Libri contiene colonne per ISBN, Titolo libro e Numero edizione; la tabella Autori contiene colonne per ID autore e Nome autore; infine la tabella ISBN-autore contiene colonne per ID autore e ISBN. Il modello relazionale è progettato per permettere al database di attuare l'integrità referenziale tra le tabelle del database, normalizzato per ridurre la ridondanza e generalmente ottimizzato per lo storage.
- In un database NoSQL, il record di un libro è solitamente memorizzato come documento. Per ogni libro, gli elementi ISBN, Titolo libro, Numero edizione, Nome autore e ID autore sono archiviati come attributi in un singolo documento. In questo modello, i dati sono ottimizzati per lo sviluppo intuitivo e la scalabilità orizzontale.
Terminologia SQL e NoSQL
Nella tabella seguente viene confrontata la terminologia utilizzata da una selezione di database NoSQL con quella dei database SQL.
SQL | MongoDB | DynamoDB | Cassandra | Couchbase |
---|---|---|---|---|
Tabella | Raccolta | Tabella | Tabella | Bucket di dati |
Riga | Documento | Elemento | Riga | Documento |
Colonna | Campo | Attributo | Colonna | Campo |
Chiave principale | ObjectId | Chiave principale |
Chiave principale | ID documento |
Indice | Indice | Indice secondario | Indice | Indice |
Visualizzazione | Visualizzazione | Indice secondario globale | Vista materializzata | Visualizzazione |
Oggetto o tabella annidata | Documento incorporato | Mappatura | Mappatura | Mappatura |
Array | Array | Elenco | Elenco | Elenco |
Quali sono i tipi di database NoSQL
Esistono diversi sistemi di database NoSQL a causa dei diversi modi in cui gestiscono e archiviano i dati senza schemi. Di seguito spieghiamo alcuni dei tipi più comuni.
Database chiave-valore
I database chiave-valore sono altamente partizionabili e permettono il dimensionamento orizzontale a livelli che sono fuori dalla portata di altri tipi di database NoSQL. Un database chiave-valore immagazzina i dati come un insieme di coppie di chiave-valore dove una chiave rappresenta un identificatore univoco. Le chiavi e i valori possono essere qualsiasi cosa, da un oggetto semplice ad articolati oggetti composti. Il modello di dati chiave-valore è particolarmente adatto per casi d'uso quali i videogiochi, le tecnologie pubblicitarie e l'IoT. Amazon DynamoDB è progettato per fornire prestazioni costanti con una latenza non superiore a una decina di millisecondi su qualsiasi scala.
Database di documenti
I database di documenti hanno lo stesso formato del modello di documento utilizzato dagli sviluppatori nel codice dell'applicazione. Archiviano i dati come oggetti JSON di natura flessibile, semi-strutturata e gerarchica. La natura gerarchica, semistrutturata e flessibile dei documenti e dei database dei documenti, gli permette di evolversi in base alle esigenze delle applicazioni. Il modello di database di documenti funziona correttamente con cataloghi, profili utente e sistemi di gestione del contenuto in cui ogni documento è unico e si evolve nel tempo. Amazon DocumentDB (compatibile con MongoDB) e MongoDB sono database di documenti ampiamente diffusi che forniscono API potenti e intuitive per uno sviluppo iterativo e flessibile.
Database a grafo
Lo scopo di un database a grafo è facilitare la creazione e l'esecuzione di applicazioni che operano con set di dati altamente connessi. Essi usano i nodi per archiviare le entità di dati e i bordi per archiviare le relazioni tra le entità. Un bordo ha sempre un nodo iniziale, un nodo finale, un tipo e una direzione. Può descrivere le relazioni, le azioni e la proprietà genitore-figlio. Le relazioni che un nodo può avere sono illimitate. È possibile utilizzare un database a grafo per creare ed eseguire applicazioni che funzionano con set di dati altamente connessi. I casi d'uso tipici per i database a grafo includono social network, motori di raccomandazione, rilevamento delle frodi e grafici di conoscenze. Amazon Neptune è un servizio di database a grafo completamente gestito che supporta sia il modello Property Graph che il Resource Description Framework (RDF) con la scelta di due API grafiche (TinkerPop e RDF/SPARQL).
Database in memoria
Mentre altri database non relazionali archiviano i dati su disco o SSD, gli archivi dati in memoria sono progettati per eliminare la necessità di accedere ai dischi. Sono ideali per applicazioni che richiedono tempi di risposta in microsecondi o che presentano forti picchi di traffico. Puoi usarli nei giochi e nelle applicazioni pubblicitarie per funzionalità come classifiche, negozi di sessioni e analisi in tempo reale. Amazon MemoryDB per Redis è un servizio di database in memoria durevole e compatibile con Redis che offre latenza di lettura di microsecondi, latenza di scrittura di millisecondi a una cifra e durabilità Multi-AZ. Amazon ElastiCache è un servizio di caching in memoria completamente gestito, compatibile sia con Redis che con Memcached, per gestire carichi di lavoro a bassa latenza e velocità di trasmissione effettiva elevata. Amazon DynamoDB Accelerator (DAX) è un altro esempio di archivio dati creato appositamente che velocizza le letture di DynamoDB di un ordine di grandezza.
Database di ricerca
Un database dei motori di ricerca è un tipo di database non relazionale dedicato alla ricerca del contenuto dei dati, come i log di output delle applicazioni utilizzati dagli sviluppatori per risolvere i problemi. Utilizza gli indici per classificare caratteristiche simili tra i dati e facilitare la capacità di ricerca. I database dei motori di ricerca sono ottimizzati per l'ordinamento di dati non strutturati come immagini e video. Servizio OpenSearch di Amazon è sviluppato appositamente per fornire visualizzazioni e analisi quasi in tempo reale di dati generati automaticamente creando indici, aggregando e cercando log e parametri semi-strutturati.
Quali sono le differenze tra i database NoSQL e SQL?
Per decenni, il modello di dati predominante nello sviluppo di applicazioni è stato il modello di dati relazionale che memorizzava i dati in tabelle composte da righe e colonne. Structured Query Language (SQL) è stato utilizzato per creare e modificare queste tabelle relazionali. I database SQL modellano le relazioni tra dati come tabelle. Le righe rappresentano una raccolta di valori correlati di un oggetto o entità. Ogni colonna della tabella rappresenta un attributo di dati e un campo (o cella della tabella) memorizza il valore effettivo dell'attributo. È possibile utilizzare un sistema di gestione di database relazionali (RDBMS) per accedere ai dati in molti modi diversi senza riorganizzare le tabelle del database stesse.
Fu solo a partire dalla seconda metà del 2000 che si iniziò a utilizzare in modo significativo altri modelli di dati flessibili. Per differenziare e categorizzare queste nuove classi di database e di modelli di dati fu coniato il termine "NoSQL". NoSQL sta per non solo SQL o non SQL. Spesso il termine NoSQL viene usato in alternativa a non relazionale. Le principali differenze tra database relazionali e non relazionali sono riportate nella tabella seguente.
|
Database relazionali |
Database NoSQL |
Carichi di lavoro ottimali
|
I database relazionali sono progettati per applicazioni di elaborazione delle transazioni online (OLTP) transazionali e fortemente coerenti. Sono utili anche per l'elaborazione analitica online (OLAP). |
I database NoSQL sono progettati per molti schemi di accesso ai dati che includono le applicazioni a bassa latenza. I database NoSQL di ricerca sono progettati per l'analisi di dati semi-strutturati.
|
Modello di dati |
Il modello relazionale normalizza i dati in tabelle che sono costituite da righe e colonne. Uno schema definisce rigidamente tabelle, righe, colonne, indici, relazioni tra tabelle e ulteriori elementi del database. Il database attua l'integrità referenziale nelle relazioni tra le tabelle. |
I database NoSQL offrono una varietà di modelli di dati come chiave-valore, documento, grafo e colonna, ottimizzati per prestazioni e scalabilità. |
Proprietà ACID |
Gli RDBMS tradizionali supportano le proprietà ACID di un database relazionale: atomicità, coerenza, isolamento e durabilità.
|
I database NoSQL spesso rinunciano ad alcune proprietà ACID dei database relazionali a favore di un modello di dati più flessibile e scalabile orizzontalmente. Queste caratteristiche rendono i database NoSQL un'ottima scelta per i casi d'uso a velocità di trasmissione effettiva elevata e bassa latenza che richiedono scalabilità orizzontale superando i limiti di un'istanza singola. |
Prestazioni |
Le prestazioni dipendono generalmente dal sottosistema di dischi. Per raggiungere il massimo livello di prestazioni, spesso è necessario ottimizzare query, indici e struttura delle tabelle. |
Le prestazioni si calcolano generalmente in funzione delle dimensioni del cluster dell'hardware, della latenza di rete e dell'applicazione di chiamata. |
Dimensionamento |
Il dimensionamento, nei database relazionali, avviene tipicamente in verticale, incrementando le capacità di elaborazione dell'hardware, oppure in orizzontale aggiungendo repliche per i carichi di lavoro di sola lettura. |
I database NoSQL sono in genere partizionabili. Questo perché i modelli di accesso possono essere scalabili orizzontalmente utilizzando un'architettura distribuita per aumentare la velocità di trasmissione effettiva e fornire prestazioni costanti su una scala quasi illimitata. |
API |
Le richieste di archiviazione e ripristino dati vengono comunicate tramite query conformi al linguaggio SQL (Structured Query Language). Queste query sono analizzate ed eseguite dal database relazionale. |
Le API basate su oggetti consentono agli sviluppatori di app di archiviare e ripristinare facilmente strutture di dati. Le chiavi di partizione danno alle app l'istruzione di cercare coppie chiave-valore, serie di colonne o documenti semi-strutturati contenenti oggetti e attributi serializzati delle app. |
Quando scegliere i database NoSQL rispetto ai database SQL?
Un database NoSQL è ideale per gestire dati indeterminati, non correlati o in rapida evoluzione. È intuitivo da usare per gli sviluppatori quando l'applicazione impone lo schema del database. È possibile utilizzarlo per applicazioni che:
- Hai bisogno di schemi flessibili che consentano uno sviluppo più rapido e iterativo.
- Dai priorità alle prestazioni rispetto a una forte coerenza dei dati e al mantenimento delle relazioni tra le tabelle di dati (integrità referenziale).
- Richiedi la scalabilità orizzontale mediante lo sharding tra i server.
- Supporto per dati semi-strutturati e non strutturati.
Non è sempre necessario scegliere tra uno schema di database non relazionale e uno relazionale. È possibile utilizzare una combinazione di database SQL e NoSQL nelle applicazioni. Questo approccio ibrido è abbastanza comune e garantisce che ogni carico di lavoro sia mappato sul database giusto per un rapporto prezzo/prestazioni ottimali.
In che modo AWS può supportare i requisiti inerenti ai database NoSQL?
AWS dispone di diversi servizi di database NoSQL per soddisfare tutti i requisiti NoSQL. Ad esempio:
- Amazon DynamoDB è un servizio di database chiave-valore serverless e completamente gestito che offre prestazioni costanti a una singola cifra in millisecondi con scalabilità illimitata.
- Amazon DocumentDB (compatibile con MongoDB) è un database di documenti JSON nativo completamente gestito che rende facile e conveniente gestire carichi di lavoro di documenti critici praticamente su qualsiasi scala senza gestire l'infrastruttura.
- Amazon Neptune è un servizio di database a grafo serverless e completamente gestito progettato per una scalabilità e una disponibilità superiori con la capacità di interrogare miliardi di relazioni in pochi secondi.
- Amazon MemoryDB per Redis è un servizio di database in memoria durevole che offre tempi di risposta in lettura e scrittura in microsecondi per prestazioni ultraveloci.
- Amazon ElastiCache è un servizio di archiviazione dati e cache in memoria completamente gestito, compatibile con Redis e Memcache che offre prestazioni in tempo reale e a costi ottimizzati.
- Amazon Keyspaces (per Apache Cassandra) è un database a colonne larghe serverless e completamente gestito progettato per una disponibilità fino al 99,999% con replica multi-Regione. Un servizio gestito Apache Cassandra scalabile ad alta disponibilità compatibile con il servizio di database.
- Amazon Timestream è un database di serie temporali serverless e completamente gestito che semplifica l'archiviazione e l'analisi di trilioni di eventi al giorno fino a 1.000 volte più velocemente rispetto ai database relazionali.
- Il servizio OpenSearch di Amazon è una suite di ricerca e analisi distribuita completamente gestita che consente la ricerca, il monitoraggio e l'analisi in tempo reale di dati aziendali e operativi.
Inizia a usare NoSQL su AWS creando un account gratuito oggi stesso.