La prima grande differenza è che gli archivi a valori-chiave richiedono all'utente di avere l'intera chiave per la ricerca, e solo può essere cercato dalla chiave. Contrariamente a ciò con i database relazionali che in genere possono essere cercati da valori parziali di qualsiasi colonna. Ciò significa che un archivio di valori-chiave può creare un hash di quella chiave e utilizzare tale hash per determinare un nodo preciso e la posizione del disco in cui è archiviato il record. I database relazionali hanno un processo molto più coinvolto per individuare e recuperare un record, a causa della complessità extra intrinseca.
Questa singola chiave rende possibile anche un singolo ordine su disco. Gli archivi di valori-chiave in genere conservano una cache di memoria, un log di commit di sola append, quindi occasionalmente scrivono su disco una memoria permanente compattata e ordinata. I database relazionali non hanno un singolo ordinamento che abbia senso, quindi non possono trarre vantaggio da questa ottimizzazione.
La maggior parte degli archivi a valore-chiave offre anche la possibilità di regolare il livello di coerenza, quindi se si dispone di 3 repliche di ciascun record, è possibile accettare una scrittura completa dopo che solo 2 nodi sono stati riportati completi, ad esempio o anche 1, se ti piace vivere al limite e i dati non sono critici. Tutte e 3 le repliche verranno scritte alla fine, ma il client non lo aspetta. Questa è chiamata consistenza finale . La maggior parte dei database relazionali mantiene la coerenza assoluta in ogni momento, il che mantiene i tuoi dati in qualche modo più sicuri, ma anche la velocità dei costi.
Ultimo ma non meno importante, dal momento che i negozi di valore-chiave possono essere consultati solo con le loro chiavi, gli utenti finiscono per scambiare spazio di archiviazione per la velocità. Laddove gli utenti di database relazionali potrebbero eseguire un join che è relativamente lento da eseguire al momento della query, gli utenti con valori-chiave avranno scritto tabelle ridondanti in parallelo al momento della scrittura e possono eseguire query altrettanto velocemente di qualsiasi altra query a tabella singola. Ad esempio, un join relazionale di una tabella players
e location
finirebbe come una query utilizzando una tupla (player, location)
per una chiave, con record completamente ridondanti in una tabella contenente solo la chiave player
.
In sintesi, gli archivi a valori-chiave accettano limitazioni come richiedere chiavi complete per la ricerca, mancanza di join, coerenza finale e necessità di spazio di archiviazione aggiuntivo in cambio di una maggiore velocità.