Sommario:
Video: Azure Friday | Azure Cosmos DB: Get the Most Out of Provisioned Throughput 2024
Come con altri tipi di database NoSQL, con gli archivi di valori-chiave, è possibile scambiare un po 'di coerenza per una certa disponibilità. Gli archivi a valore-chiave di solito offrono un'ampia gamma di modelli di consistenza e durata, ovvero tra disponibilità e tolleranza delle partizioni e tra tolleranza coerente e partizione.
Alcuni negozi con valore chiave vanno molto oltre il braccio di consistenza, abbandonando BASE per il supporto completo della coerenza transazionale ACID. Capire dove tracciare la linea può aiutarti ad abbreviare la lista dei potenziali database da considerare per il tuo caso d'uso.
Consistenza commerciale
Gli archivi valore-chiave tipicamente scambiano la coerenza dei dati (ovvero la capacità di leggere sempre l'ultima copia di un valore immediatamente dopo un aggiornamento) al fine di migliorare i tempi di scrittura.
Voldemort, Riak e Oracle NoSQL sono tutti alla fine coerenti negozi di valore-chiave. Usano un metodo chiamato leggere la riparazione . Ecco i due passaggi coinvolti in leggi riparazione :
-
Al momento della lettura di un record, determinare quale dei vari valori disponibili per una chiave è l'ultimo e più valido.
-
Se non è possibile decidere il valore più recente, il client del database viene presentato con tutte le opzioni di valore e viene lasciato decidere autonomamente.
Buoni esempi per l'utilizzo di negozi di valore-chiave eventualmente coerenti includono l'invio di post sui social media e la consegna di s agli utenti target. Se un tweet arriva in ritardo o viene mostrato un minuto di cinque minuti, non c'è una perdita di dati catastrofica.
Implementazione del supporto ACID
Aerospike e Redis sono notevoli eccezioni alla coerenza finale. Entrambi usano shared-nothing cluster, il che significa che ciascun tasto ha il seguente:
-
Un nodo master: Solo i master forniscono risposte per una singola chiave, che garantisce di avere la copia più recente.
-
Nodi di replica slave multipli: Questi contengono copie di tutti i dati su un nodo master. Aerospike fornisce la coerenza transazionale completa di ACID consentendo alle modifiche di essere scaricate immediatamente sul disco prima che la transazione venga contrassegnata come completa nel client del database.
Aerospike riesce a farlo a velocità molto elevate (il che confuta affermando che l'ACID riduce la velocità di scrittura). Aerospike gestisce in modo nativo SSD grezzi per la scrittura dei dati aggirando il supporto del file system dei sistemi operativi più lenti.
Naturalmente, più SSD significano maggiori costi del server. Si può decidere che l'utilizzo di Redis (configurato per scaricare tutti i dati sul disco quando arriva) sia sufficientemente veloce e garantisca una durata sufficiente per le proprie esigenze.L'impostazione predefinita in Redis è scaricare dati su disco ogni pochi secondi, lasciando una piccola finestra di potenziale perdita di dati in caso di guasto di un server.
Ecco alcuni esempi di quando è necessario un archivio valori-chiave conforme ACID:
-
Quando si ricevono i dati del sensore necessari per un esperimento.
-
In un sistema di messaggistica in cui è necessario garantire la ricezione.
Redis, ad esempio, fornisce un meccanismo di pubblicazione / sottoscrizione che funge da back-end del server di messaggistica. Questa funzione, combinata con il supporto ACID, consente una comunicazione duratura.