Che cos’è un database chiave-valore?
Un database chiave-valore è un database non relazionale, noto anche come database NoSQL che utilizza un semplice metodo chiave-valore per archiviare i dati. Archivia i dati come una raccolta di coppie chiave-valore in cui una chiave funge da identificatore univoco. Le chiavi e i valori possono essere qualsiasi cosa, da un oggetto semplice ad articolati oggetti composti. I database chiave-valore (o archivi chiave-valore) sono altamente partizionabili e consentono il dimensionamento orizzontale a livelli che altri tipi di database non possono raggiungere.
Quali sono i vantaggi dei database chiave-valore
I database relazionali tradizionali (database SQL) archiviano i dati sotto forma di tabelle contenenti righe e colonne. Applicano una struttura rigida ai dati e non sono ottimali per ogni caso d'uso. D'altra parte, i database chiave-valore sono database NoSQL. Consentono schemi di database flessibili e prestazioni migliorate su larga scala per determinati casi d'uso. I vantaggi degli archivi chiave-valore includono:
Scalabilità
Poiché ogni richiesta dell'utente richiede l'interazione dei dati, i database possono spesso diventare un collo di bottiglia nelle prestazioni delle applicazioni. Diverse strategie per risolvere il problema, come la replica e lo sharding, aggiungono complessità al codice dell'applicazione. Molti database chiave-valore forniscono supporto integrato per funzionalità di scalabilità avanzate. Dimensionano orizzontalmente e distribuiscono automaticamente i dati tra i server per ridurre i colli di bottiglia su un singolo server.
Facilità d'uso
I database chiave-valore seguono il paradigma orientato agli oggetti che consente agli sviluppatori di mappare oggetti del mondo reale direttamente su oggetti software. Anche diversi linguaggi di programmazione, come Java, seguono lo stesso paradigma. Invece di mappare i propri oggetti di codice su più tabelle sottostanti, gli ingegneri possono creare coppie chiave-valore che corrispondono ai loro oggetti di codice. Ciò rende gli archivi chiave-valore più intuitivi da usare per gli sviluppatori.
Prestazioni
I database chiave-valore elaborano operazioni di lettura/scrittura costanti con chiamate server a basso carico. La latenza migliorata e il tempo di risposta ridotto offrono prestazioni migliori su larga scala. Si basano su strutture semplici a tabella singola anziché su più tabelle correlate. A differenza dei database relazionali, i database chiave-valore non devono eseguire unioni di tabelle che richiedono molte risorse, il che li rende molto più veloci.
Quali sono i casi d'uso dei database chiave-valore
È possibile utilizzare i sistemi di database chiave-valore come database principale per l'applicazione o per gestire requisiti di nicchia. Di seguito forniamo alcuni esempi di casi d'uso del database chiave-valore.
Gestione delle sessioni
Un’applicazione che prevede delle sessioni, come un’applicazione web, si avvia quando l’utente accede a un’applicazione e rimane attiva fino a quando l’utente si disconnette o quando la sessione si interrompe. In questo lasso di tempo, l’applicazione archivia tutti i dati della sessione utente nella memoria principale o nel database. I dati di una sessione utente possono includere le informazioni sul profilo dell’utente, messaggi, dati personalizzati e temi, raccomandazioni, promozioni mirate e sconti.
Le sessioni utenti hanno un identificatore univoco. I dati di una sessione non vengono mai ripresi se non da una chiave primaria, quindi uno store chiave-valore veloce è auspicabile per le sessioni di dati. In generale, i database chiave-valore possono garantire minori spese per pagina rispetto ai database relazionali.
Carrello
Nei periodi di shopping in prossimità delle festività, un sito Web di e-commerce può ricevere miliardi di ordini in pochi secondi. Un database chiave-valore può gestire grandi quantità di dati e numerosi cambiamenti di stato mentre vengono utilizzati in simultanea da milioni di clienti attraverso il calcolo distribuito e l’archiviazione. La ridondanza permette ai database chiave-valore di sopperire alla perdita di nodi di archiviazione.
Motore di archiviazione dei metadati
Il tuo archivio chiave-valore può fungere da livello di archiviazione sottostante per livelli più elevati di accesso ai dati. Ad esempio, puoi scalare la velocità di trasmissione effettiva e la simultaneità per i carichi di lavoro multimediali e di intrattenimento come lo streaming video in tempo reale e i contenuti interattivi. Puoi anche costruire la tua piattaforma di gioco con i dati dei giocatori, la cronologia delle sessioni e le classifiche per milioni di utenti in contemporanea.
Caching
È possibile utilizzare un database chiave-valore per archiviare temporaneamente i dati per un recupero più rapido. Ad esempio, le applicazioni di social media possono archiviare dati a cui si accede di frequente come i contenuti dei feed di notizie. I sistemi di caching dei dati in memoria utilizzano anche archivi chiave-valore per accelerare le risposte delle applicazioni.
Come funzionano i database chiave-valore
I database chiave-valore funzionano organizzando tutti i dati come un insieme di coppie chiave-valore. Puoi pensare alla chiave come a una domanda e al valore come alla risposta alla domanda. Nell'esempio seguente, la chiave primaria è composta da due chiavi, ID prodotto e Tipo. L'ID prodotto è la chiave di partizione che descrive la partizione in cui verrà archiviato l'articolo. Il Tipo è la chiave di ordinamento, che determina l'ordine in cui gli elementi verranno archiviati sul disco. La combinazione della chiave di partizione e della chiave di ordinamento forma una chiave primaria unica, che viene mappata a un singolo valore nel database.
In questo esempio, il libro degli oggetti dati ha attributi come titolo, autore e data di pubblicazione. Ogni oggetto dati del libro ha una chiave chiamata bookID. Puoi collegare direttamente il bookID e l'oggetto book associato nell'archivio chiave-valore. Inoltre, puoi recuperare i dati cercando il bookID nella tabella. Inoltre, ogni elemento ha il proprio schema, che rende gli archivi chiave-valore altamente flessibili per l'archiviazione di dati di strutture diverse.
Quali sono le funzionalità dei database chiave-valore
A seconda della soluzione scelta, l'archivio chiave-valore può fornire diverse funzionalità aggiuntive, come elencato di seguito.
Supporto per tipi di dati complessi
Gli archivi chiave-valore forniscono supporto per tipi di dati definiti come numeri interi e testo. Tuttavia, molti di essi possono supportare anche oggetti più complessi come matrici, dizionari annidati, immagini, video e dati semistrutturati. Fornendo al database ulteriori informazioni sui dati, c'è spazio per una maggiore ottimizzazione dello storage e delle prestazioni delle query.
Non è necessario unire le tabelle
I database chiave-valore non devono eseguire unioni di tabelle che richiedono molte risorse. La loro flessibilità consente di inserire tutte le informazioni necessarie in un'unica tabella. Questo è uno dei motivi per cui gli archivi chiave-valore funzionano così bene.
Chiavi di ordinamento
Un archivio chiave-valore può ordinare le chiavi in modo che i dati vengano archiviati sistematicamente e per implementare il partizionamento. Ad esempio, le chiavi possono essere ordinate:
- In ordine alfabetico o numerico
- Cronologicamente
- Per dimensioni dei dati
Prendi in considerazione un archivio chiave-valore che utilizza l'indirizzo e-mail del cliente come chiave univoca. Gli indirizzi e-mail possono essere ordinati alfabeticamente, quindi tutti i dati per gli elenchi di e-mail A-J vengono archiviati sul server 1, K-S sul server 2 e così via.
Supporto per chiavi secondarie
Alcuni archivi chiave-valore consentono di definire due o più chiavi o indici secondari diversi per accedere agli stessi dati. Ad esempio, puoi memorizzare i dati dei clienti per indirizzo email e numero di telefono chiave.
Replica
Molti archivi chiave-valore offrono supporto di replica integrato copiando automaticamente i dati su più nodi di archiviazione. Ciò facilita il ripristino automatico in caso di emergenza; in caso di guasto del server, i dati restano a disposizione.
Partizionamento
Il partizionamento è il modo in cui si distribuiscono i dati tra i nodi. Molti database chiave-valore forniscono opzioni di partizionamento predefinite. Alcuni offrono anche la possibilità di definire i parametri di input per le partizioni. Ad esempio, è possibile partizionare le chiavi numeriche in gruppi di 1.000. I database chiave-valore avanzati forniscono anche supporto automatico per la distribuzione del database chiave-valore in più posizioni geografiche. Ciò migliora la disponibilità e l'affidabilità delle applicazioni perché è possibile rispondere alle domande vicino alla posizione dell'utente.
Supporto ACID
Atomicità, coerenza, isolamento e durabilità (ACID) sono proprietà del database che garantiscono l'accuratezza e l'affidabilità dei dati in tutte le circostanze. Ad esempio, se si apportano più modifiche ai dati in una sequenza, l'atomicità richiede che tutte le modifiche avvengano nell'ordine. Se una modifica fallisce, fallisce tutto.
I database chiave-valore avanzati forniscono supporto nativo lato server per ACID. Ciò semplifica allo sviluppatore l'esperienza di realizzare modifiche coordinate di tipo "tutto o niente" a più elementi all'interno delle tabelle o tra le tabelle. Grazie al supporto per le transazioni, gli sviluppatori possono estendere le dimensioni, le prestazioni e i vantaggi aziendali a un set più ampio di carichi di lavoro mission-critical.
Quali sono i limiti dei database chiave-valore
I database chiave-valore richiedono alcuni compromessi, come per qualsiasi tipo di scelta tecnologica.
Assenza di query complesse
Poiché i database chiave-valore non supportano query complesse, gli sviluppatori devono aggirare questo problema nel codice. Le operazioni sui dati avvengono principalmente tramite semplici termini del linguaggio di query come get, put ed delete. Esistono limitazioni alla quantità di dati che puoi filtrare e ordinare prima di accedervi.
Cattiva gestione dello schema
La progettazione dell'archivio chiave-valore non impone uno schema agli sviluppatori. Chiunque può modificare lo schema nel programma di database. I team di sviluppo devono pianificare il modello di dati in modo sistematico per evitare problemi a lungo termine. La mancanza di uno schema rigoroso significa anche che l'applicazione è responsabile della corretta interpretazione dei dati che consuma, spesso denominati "schema in lettura".
In che modo AWS può supportare i requisiti inerenti ai database chiave-valore?
Amazon DynamoDB è uno dei database chiave-valore più diffusi progettato per eseguire applicazioni ad alte prestazioni su qualsiasi scala. È un database multiattivo, multiregionale e completamente gestito che offre funzionalità come:
- Scalabilità illimitata, inclusa la scalabilità a zero, con latenza costante di un millisecondo a una cifra.
- Serverless senza aggiornamenti di versione, finestre di manutenzione e server o software da gestire.
- Progettato per una disponibilità del 99,999%, con tabelle globali DynamoDB che fornisce una replica attiva-attiva in modo da poter creare applicazioni distribuite a livello globale con prestazioni di lettura locali.
- Altamente sicuro e affidabile con crittografia predefinita dei dati a riposo, ripristino point-in-time, backup e ripristino su richiesta e altro ancora.
- Facile da usare grazie all'integrazione con numerosi servizi AWS, tra cui importazione/esportazione in blocco da Amazon S3, flusso di dati Amazon Kinesis, Amazon Cloudwatch e altro ancora.
Con questo tutorial dettagliato sulla creazione e l'interrogazione di una tabella NoSQL, puoi iniziare a usare DynamoDB in 10 minuti. Inizia a usare i database chiave-valore in AWS creando un account gratuito oggi stesso.