Un database chiave-valore è una strategia di storage non relazionale NoSQL in cui i record vengono memorizzati come una serie di chiavi (l'identificatore) e valori (il valore dell'identificatore). Le coppie chiave-valore possono essere un semplice numero o una stringa, oppure un valore può essere un oggetto come un'immagine o dati geospaziali. Le applicazioni con volumi elevati che richiedono risposte rapide traggono vantaggio dai database chiave-valore.
Che cosa sono i Key-value Store?
I database relazionali memorizzano i dati in tabelle, ma una relazione chiave-valore è una serie di chiavi e valori. La chiave è l'identificatore univoco utilizzato per eseguire query sul database per trovare il valore corretto. Ad esempio, il prezzo di un prodotto può essere memorizzato con "prezzo" come chiave e "12,00" come valore. Alcune applicazioni utilizzano archivi chiave-valore per i metadati che possono essere utilizzati per eseguire query su informazioni aggiuntive in database relazionali più grandi o in altri database non relazionali.
L'archiviazione di una serie di coppie chiave-valore accelera le query, in modo che le applicazioni che necessitano di risposte rapide e supportano milioni di utenti possano trarre vantaggio dall'utilizzo di un database chiave-valore. Lo storage a valore chiave è vantaggioso anche quando le aziende devono archiviare metadati semplici da collegare a ulteriori silos di dati più grandi. Alcune aziende utilizzano coppie chiave-valore per i set di dati semplici in cui milioni di richieste arrivano nel database, ma solo pochi valori devono essere restituiti per query.
Negozi chiave-valore in azione
Le applicazioni che eseguono query per piccoli dataset possono trarre vantaggio dalla velocità di un archivio chiave-valore. Ad esempio, supponiamo di avere un feed di social media utilizzato da milioni di utenti. Gli utenti aggiornano costantemente il feed e l'applicazione mostra i cinque thread principali del feed. È possibile memorizzare una coppia chiave-valore con il post più recente e il link al post.
Anche le applicazioni in tempo reale traggono vantaggio dai key value store in azione. Poiché gli archivi chiave-valore restituiscono i dati rapidamente, le applicazioni con ticker o aggiornamenti secondi per secondo li utilizzano. Ad esempio, un ticker di stock che mostra l'ultimo valore di un determinato stock richiede aggiornamenti della visualizzazione ogni secondo. Per queste query è possibile utilizzare un database chiave-valore.
Esempi di database chiave-valore
Store chiave-valore e database relazionali
I database relazionali tradizionali hanno ancora il loro scopo nelle applicazioni convenzionali. Un database relazionale memorizza i valori in una strategia di tipo tabellare. Un singolo record ha più colonne e ogni colonna ha un valore assegnato. Gli sviluppatori assegnano un identificatore univoco a ciascun record, in modo che le informazioni possano essere associate al record corretto. Ad esempio, un identificatore univoco collega il nome e l'indirizzo del cliente. Il nome e l'indirizzo in questo esempio sono due colonne e le informazioni del cliente, tra cui l'identificatore univoco, il nome e l'indirizzo, sono un unico record.
Gli archivi chiave-valore associano una singola chiave di identificazione univoca a un valore. Il valore può essere più di un semplice numero o stringa. Gli archivi chiave-valore possono assegnare un oggetto a un singolo identificatore chiave, pertanto gli sviluppatori non sono limitati ai dati di base. È inoltre possibile utilizzare una combinazione di chiavi per recuperare dati specifici.
Scegliere il giusto Key-value Store
Le applicazioni che utilizzano archivi chiave-valore hanno bisogno di risposte rapide, quindi cerca un database che offra caching in-memory. I dati utilizzati di frequente possono essere memorizzati nella cache in memoria, il che significa che il motore di database non deve cercare i dati su un disco, recuperarli e quindi trasferirli nell'applicazione richiedente. Poiché gli archivi chiave-valore eseguono azioni di lettura e scrittura rapide e continue, la memorizzazione nella cache è ottimale per le performance.
I requisiti di data storage di grandi dimensioni possono trarre vantaggio dal partizionamento e dalla distribuzione dei dati. La distribuzione orizzontale consente agli amministratori di migliorare le performance aggiungendo nodi al cluster di database. Sono disponibili diverse strategie di partizionamento, tra cui l'hashing e lo sharding. Scegli una strategia adatta alla tua infrastruttura e alle preferenze degli amministratori.
Migliori prassi per l'implementazione del key value store
Sia che tu decida di implementare uno store di valore chiave on-premise o nel cloud, devi seguire alcune best practice per preservare le performance. All'inizio potresti non notare problemi di performance, ma spesso si presentano dopo la crescita del database e l'aumento del numero di utenti delle applicazioni. Alcune best practice:
Utilizza chiavi primarie composte per ottimizzare le query a intervallo.
Utilizzare una chiave di ordinamento per le query a intervallo.
Usa una chiave di sharding per lo storage distribuito.
Negli esempi precedenti, le best practice sono necessarie per le performance. Le performance sono cruciali per un database chiave-valore, in modo che possa supportare le applicazioni in tempo reale. Anche i dati memorizzati nella cache miglioreranno le performance, quindi scegli un motore di database che li supporti.
Conclusione
Se hai un'applicazione a volume elevato che richiede dati che possono essere memorizzati come coppia chiave-valore, un archivio chiave-valore potrebbe essere la scelta migliore. La velocità è un fattore critico in questi database, quindi scegline uno che memorizza i dati nella memoria e offre un metodo di hashing o sharding distribuito. Puoi lavorare con database on-premise o cloud, ma se stai cercando una soluzione, Pure Storage offre soluzioni di storage adatte alla tua azienda.