Domande frequenti su Amazon MemoryDB

Domande generali

Amazon MemoryDB è un servizio di database in memoria compatibile con Valkey e Redis OSS, durevole e dalle prestazioni ultra-veloci. MemoryDB consente di ottenere una latenza di lettura di microsecondi, una latenza di scrittura di millisecondi a una cifra, un throughput elevato e una durata multi-AZ per applicazioni moderne, come quelle create con architetture a microservizi. Queste applicazioni richiedono bassa latenza, alta scalabilità e utilizzano le strutture dati e le API flessibili di Valkey e Redis OSS per rendere lo sviluppo agile e semplice. MemoryDB archivia l'intero set di dati in memoria e sfrutta un registro transazionale distribuito per fornire velocità in memoria e durata, coerenza e recuperabilità dei dati. È possibile utilizzare MemoryDB come database principale completamente gestito, consentendo di creare applicazioni ad alte prestazioni senza dover gestire separatamente una cache, un database durevole o l'infrastruttura sottostante richiesta. Con MemoryDB multiregione, puoi creare facilmente e rapidamente applicazioni in più regioni con una disponibilità fino al 99,999% e una latenza di lettura di microsecondi e di scrittura di millisecondi a una cifra.

Puoi iniziare creando un nuovo cluster MemoryDB utilizzando la Console di gestione AWS, l'interfaccia a riga di comando (CLI) o il Software Development Kit (SDK). Per creare un cluster MemoryDB nella console, accedi e passa ad Amazon MemoryDB. Da lì, seleziona "Inizia", quindi "Crea nuovo cluster". Per passaggi più dettagliati e per iniziare con la CLI, consulta la documentazione di MemoryDB.

Sì, MemoryDB mantiene la compatibilità con Valkey e Redis OSS e supporta lo stesso set di tipi di dati, parametri e comandi che già conosci. Ciò significa che il codice dell'applicazione, i client e gli strumenti che già utilizzi oggi con Valkey e Redis OSS possono essere utilizzati con MemoryDB. MemoryDB supporta tutti i tipi di dati Valkey e Redis OSS come stringhe, elenchi, set, hash, set ordinati, hyperloglog, bitmap e flussi. Inoltre, MemoryDB supporta gli oltre 200 comandi Valkey e Redis OSS ad eccezione dei comandi di amministrazione Valkey e Redis OSS, perché MemoryDB gestisce il cluster per tuo conto.

Per informazioni sulle versioni di Redis OSS supportate in MemoryDB, consulta la documentazione di MemoryDB.

Un cluster MemoryDB è una raccolta di uno o più nodi che servono un singolo set di dati. Un set di dati MemoryDB è diviso in partizioni e ogni partizione ha un nodo principale e fino a 5 nodi di replica opzionali. Un nodo principale gestisce le richieste di lettura e scrittura, mentre una replica gestisce solo le richieste di lettura. Un nodo principale può eseguire il failover su un nodo di replica, promuovendo tale replica nel nuovo nodo principale per quella partizione. Per ulteriori informazioni, consulta la documentazione di MemoryDB.

MemoryDB è un database in memoria durevole per carichi di lavoro che richiedono un database principale ultraveloce e compatibile con Valkey o Redis OSS. Dovresti prendere in considerazione l'utilizzo di MemoryDB se il tuo carico di lavoro richiede un database durevole che offra prestazioni ultraveloci (latenza di lettura in microsecondi e latenza di scrittura in millisecondi a una cifra). MemoryDB può anche essere adatto al tuo caso d'uso se desideri creare un'applicazione utilizzando le strutture dati e le API di Valkey o Redis OSS con un database principale e durevole. Infine, dovresti prendere in considerazione l'utilizzo di MemoryDB per semplificare l'architettura dell'applicazione e ridurre i costi sostituendo l'uso di un database con una cache per la durata e le prestazioni.

ElastiCache è un servizio comunemente utilizzato per memorizzare nella cache i dati di altri database e datastore utilizzando Valkey, Memcached o Redis OSS. Dovresti prendere in considerazione ElastiCache per la memorizzazione di carichi di lavoro in cui desideri accelerare l'accesso ai dati con il database principale o l'archivio dati esistente (prestazioni di lettura e scrittura in microsecondi). Dovresti prendere in considerazione ElastiCache anche per i casi d'uso in cui desideri utilizzare le strutture dati e le API di Valkey o Redis OSS per accedere ai dati archiviati in un database o datastore principale.

Per i limiti e le quote attuali, consulta la documentazione di MemoryDB.

MemoryDB multiregione

Amazon MemoryDB multiregione è un database multiregione completamente gestito e in modalità attivo/attivo che consente di creare applicazioni con una disponibilità fino al 99,999% e una latenza di lettura di microsecondi e di scrittura a una cifra in millisecondi. Fornisce ridondanza dei dati su più regioni AWS in modo da poter migliorare la disponibilità e la resilienza delle applicazioni multiregione, anche se l'elaborazione di un'applicazione viene interrotta in una regione e non può connettersi al relativo endpoint MemoryDB. MemoryDB multiregione offre una replica in modalità attivo/attivo che consente di fornire localmente letture e scritture dalle regioni più vicine ai clienti offrendo una latenza di lettura di microsecondi e di scrittura di una cifra in millisecondi. MemoryDB multiregione replica in modo asincrono i dati tra le regioni e normalmente i dati vengono propagati entro un secondo. MemoryDB multiregione risolve automaticamente i conflitti di aggiornamento e corregge i problemi di divergenza dei dati, consentendo agli utenti di concentrarsi sulle applicazioni.

È consigliabile utilizzare MemoryDB multiregione se si desidera creare applicazioni che richiedono i massimi livelli di disponibilità, una maggiore resilienza e una migliore continuità aziendale. MemoryDB multiregione può essere utilizzato anche se si desidera creare ed eseguire applicazioni multi-regione che richiedono tempi di risposta rapidi in qualsiasi parte del mondo.

Quando si utilizza MemoryDB multiregione, MemoryDB replica i dati su cluster regionali in una configurazione denominata cluster multiregione. Quando i dati vengono scritti su qualsiasi cluster regionale all'interno del cluster multiregione, MemoryDB replica automaticamente e in modo asincrono tali dati su tutti gli altri cluster regionali, in genere entro un secondo, senza influire sulle prestazioni dell'applicazione. MemoryDB multiregione risolve automaticamente i conflitti di aggiornamento e corregge i problemi di divergenza dei dati. La risoluzione dei conflitti è completamente gestita e avviene in background senza alcun impatto sulla disponibilità dell'applicazione.

Per iniziare a usare MemoryDB multiregione, crei un nuovo cluster multiregione e un cluster regionale in una delle regioni AWS desiderate utilizzando la console AWS, l'SDK AWS o l'interfaccia a riga di comando. Una volta creato il primo cluster regionale, puoi aggiungere fino a quattro regioni aggiuntive nel cluster multiregione. Quando i dati vengono scritti su un cluster regionale, MemoryDB multiregione replicherà automaticamente tali dati su tutti gli altri cluster regionali all'interno del cluster multiregione, in genere entro un secondo. Se si utilizza MemoryDB oggi, è possibile scattare un'istantanea del cluster e utilizzarla per eseguire il seeding di un nuovo cluster multiregione e di un nuovo cluster regionale.  

Puoi aggiungere nuovi cluster regionali a un cluster multiregione MemoryDB creando cluster regionali nelle rispettive regioni AWS. Tuttavia, non è possibile aggiungere un cluster MemoryDB esistente a un cluster MemoryDB multiregione esistente. È possibile solo creare un nuovo cluster regionale o rimuovere un cluster regionale esistente da un cluster MemoryDB multiregione. Quando rimuovi un cluster regionale, MemoryDB multiregione eliminerà il cluster in quella regione specifica mantenendo il cluster MemoryDB multiregione. I clienti possono scegliere di aggiungere più cluster regionali all'interno dello stesso cluster MemoryDB multiregione in un secondo momento.

MemoryDB multiregione offre la coerenza finale perché esegue la replica asincrona, che preserva le velocità in memoria. Qualsiasi aggiornamento apportato a una chiave in uno dei cluster regionali MemoryDB multiregione viene propagato ad altri cluster regionali in modo asincrono all'interno del cluster MemoryDB multiregione, normalmente in meno di un secondo.

MemoryDB multiregione utilizza CRDT (Conflict-free Replicated Data Type) per riconciliare scritture simultanee in conflitto. Il CRDT è una struttura di dati che può essere aggiornata in modo indipendente e simultaneo senza coordinamento. Il conflitto scrittura-scrittore viene combinato indipendentemente su ciascuna replica con eventuale coerenza.

Se una regione viene isolata o degradata, MemoryDB multiregione tiene traccia di tutte le scritture eseguite ma che non sono ancora state propagate a tutti i cluster regionali. Quando la regione torna online, MemoryDB multiregione riprende a propagare tutte le scritture in sospeso da quella regione ai cluster regionali in altre regioni. Riprende inoltre a propagare le scritture da altri cluster regionali alla Regione che ora è tornata online. Alla fine, MemoryDB multiregione propaga tutte le scritture riuscite in precedenza, indipendentemente da quanto tempo la regione è isolata. Possono sorgere conflitti se l'applicazione aggiorna la stessa chiave in diverse regioni all'incirca nello stesso momento. MemoryDB multiregione utilizza la riconciliazione CRDT (Replicated Data Type) senza conflitti tra aggiornamenti simultanei. La risoluzione dei conflitti è completamente gestita e avviene in background senza alcun impatto sulla disponibilità di un'applicazione.

Prestazioni e durabilità

Il throughput e la latenza di MemoryDB variano in base al tipo di nodo, alla dimensione del payload e al numero di connessioni client. MemoryDB offre una latenza di lettura di microsecondi, una latenza di scrittura di millisecondi a una cifra e una latenza di lettura dopo la scrittura sul nodo principale per un cluster di partizioni. MemoryDB può supportare fino a 390.000 richieste di lettura e 100.000 richieste di scrittura al secondo e fino a 1,3 GB/s di velocità di lettura e 100 MB/s di scrittura per nodo (basato su test interni su carichi di lavoro di sola lettura e sola scrittura). Un cluster MemoryDB suddivide i dati su uno o più nodi, consentendoti di aggiungere più partizioni o repliche al cluster per aumentare il throughput aggregato.

Oltre ad archiviare l'intero set di dati in memoria, MemoryDB utilizza un log delle transazioni distribuito per fornire durabilità, coerenza e recuperabilità dei dati. Archiviando i dati su più AZ, MemoryDB consente il ripristino e il riavvio rapidi del database. Archiviando anche i dati in memoria, MemoryDB è in grado di offrire prestazioni ultraveloci e un throughput elevato.

MemoryDB utilizza un log transazionale distribuito per archiviare i dati in modo duraturo. Archiviando i dati su più AZ, MemoryDB consente il ripristino e il riavvio rapidi del database. Inoltre, MemoryDB offre una coerenza finale per i nodi di replica e letture coerenti sui nodi principali.

Valkey e Redis OSS includono una funzionalità opzionale di sola aggiunta (AOF), che mantiene i dati in un file sul disco di un nodo principale per garantirne la durata. Tuttavia, poiché AOF archivia i dati localmente sui nodi principali in un'unica zona di disponibilità, vi sono rischi di perdita dei dati. Inoltre, in caso di guasto di un nodo, ci sono rischi di problemi di coerenza con le repliche.

Sì, MemoryDB supporta l'alta disponibilità. È possibile creare un cluster MemoryDB con disponibilità Multi-AZ con un massimo di 5 repliche in diversi AZ. Quando si verifica un errore su un nodo principale, MemoryDB esegue automaticamente il failover e promuove una delle repliche affinché funzioni come nuovo nodo principale e indirizzi il traffico di scrittura verso di esso. Inoltre, MemoryDB utilizza un log delle transazioni distribuito per garantire che i dati sulle repliche restino sempre aggiornati, anche in caso di errore del nodo principale. Il failover si verifica in genere in meno di 20 secondi per le interruzioni non pianificate e in genere in meno di 200 millisecondi per le interruzioni pianificate.

MemoryDB utilizza un log delle transazioni distribuito per archiviare in modo duraturo i dati scritti nel database durante il ripristino, il riavvio, il failover e l'eventuale coerenza tra nodi principali e repliche.

Valkey e Redis OSS consentono scritture ed elevata consistenza di lettura sul nodo principale di ogni partizione e lettura a coerenza finale dalle repliche di lettura. Queste proprietà di coerenza non sono garantite in caso di errore di un nodo principale, poiché le scritture possono andare perse durante un failover e quindi violare il modello di consistenza.

Il modello di consistenza di MemoryDB è simile a Valkey e Redis OSS. Tuttavia, in MemoryDB, i dati non vengono persi durante i failover, consentendo ai client di leggere le proprie scritture dai nodi principali indipendentemente dagli errori dei nodi. Sono visibili solo i dati che sono stati mantenuti correttamente nel log delle transazioni Multi-AZ. I nodi di replica sono comunque coerenti, con parametri di ritardo pubblicati su Amazon CloudWatch.

Con la versione 7.0 di MemoryDB per Redis OSS, abbiamo introdotto il multiplexing IO avanzato, che offre ulteriori miglioramenti al throughput e alla latenza su larga scala. Anche MemoryDB versione 7.2 per Valkey supporta il multiplexing IO avanzato. Il Multiplexing I/O avanzato è ideale per i carichi di lavoro vincolati al throughput con più connessioni client e i suoi vantaggi scalano in base al livello di simultaneità dei carichi di lavoro. Ad esempio, quando si utilizza il nodo r6g.4xlarge e si eseguono 5200 client simultanei, è possibile ottenere fino al 46% in più di throughput (operazioni di lettura e scrittura al secondo) e fino al 21% in meno di latenza P99, rispetto a MemoryDB versione 6 per Redis OSS. Per questi tipi di carichi di lavoro, l'elaborazione I/O di rete di un nodo può diventare un fattore limitante nella capacità di scalabilità. Con il multiplexing IO avanzato, ogni thread IO di rete dedicato convoglia i comandi di più client nel motore di MemoryDB, sfruttando la capacità di esso di elaborare in modo efficiente i comandi in batch.

Per ulteriori informazioni, consulta la documentazione.

Importazione e caricamento di dati

Per scrivere e leggere dati dal tuo cluster MemoryDB, ti connetti al tuo cluster utilizzando uno dei client di Valkey o Redis OSS supportati. Per un elenco dei client di Valkey o Redis OSS supportati, consulta la documentazione di Valkey o Redis OSS. Per istruzioni su come connettersi al cluster MemoryDB utilizzando un client di Valkey o Redis OSS, consulta la documentazione di MemoryDB. Valkey funzionerà con i client di Redis OSS esistenti, quindi non è necessario cambiare client quando si passa da Redis OSS a Valkey.

Hardware, scalabilità e manutenzione

Puoi creare un cluster MemoryDB con un massimo di 500 nodi. Ciò offre una capacità di archiviazione di memoria massima di circa 100 TB, supponendo di avere 250 nodi principali ciascuno con una replica per l'alta disponibilità (500 nodi in totale).

Sì, puoi ridimensionare il tuo cluster MemoryDB orizzontalmente e verticalmente. Puoi scalare il cluster orizzontalmente aggiungendo o rimuovendo nodi. Puoi decidere di aggiungere partizioni per distribuire il tuo set di dati su più partizioni e aggiungere nodi di replica aggiuntivi a ogni partizione per aumentare la disponibilità e il throughput di lettura. Puoi anche rimuovere partizioni e repliche per dimensionare il tuo cluster. Inoltre, puoi scalare il cluster verticalmente modificando il tipo di nodo, che modifica la memoria e le risorse della CPU per nodo. Durante le operazioni di ridimensionamento orizzontale e verticale, il cluster continua a rimanere online e a fornire richieste di lettura e scrittura.

MemoryDB semplifica la manutenzione e gli aggiornamenti del cluster e fornisce due diversi processi per la manutenzione del cluster. Innanzitutto, per alcuni aggiornamenti obbligatori, MemoryDB applica automaticamente le patch al cluster durante le finestre di manutenzione specificate. In secondo luogo, per alcuni aggiornamenti, MemoryDB utilizza gli aggiornamenti del servizio, che è possibile applicare in qualsiasi momento o pianificare per una futura finestra di manutenzione. Alcuni aggiornamenti del servizio vengono programmati automaticamente in una finestra di manutenzione dopo una certa data. Gli aggiornamenti dei cluster aiutano a rafforzare la sicurezza, l'affidabilità e le prestazioni operative dei cluster, consentendo al cluster di continuare a rimanere online e soddisfare le richieste di lettura e scrittura. Per ulteriori informazioni sulla manutenzione del cluster, consulta la documentazione di MemoryDB.

Backup e ripristino

Sì, crea gli snapshot per eseguire il backup dei dati e dei metadati del cluster MemoryDB. Puoi creare manualmente uno snapshot oppure puoi utilizzare lo scheduler automatico di snapshot di MemoryDB per acquisire un nuovo snaphost ogni giorno all'ora specificata. Puoi scegliere di conservare lo snaphost per un massimo di 35 giorni dopo la creazione. Questi snapshot vengono memorizzati in Amazon S3, che è stato progettato per offrire una durabilità pari al 99,999999999%. Inoltre, quando si elimina il cluster, puoi decidere di acquisire uno snaphost finale del cluster. Puoi inoltre esportare gli snapshot MemoryDB dal servizio al tuo bucket Amazon S3. Per ulteriori informazioni, consulta la documentazione di MemoryDB.

Sì, è possibile ripristinare il cluster MemoryDB da uno snapshot durante la creazione di un nuovo cluster MemoryDB.

Sì, puoi ripristinare il tuo cluster MemoryDB da un file RDB di Valkey o Redis OSS. È possibile specificare il file RDB da cui eseguire il ripristino quando si crea un nuovo cluster MemoryDB.

Sì, è possibile migrare i dati da ElastiCache a MemoryDB. Innanzitutto, crea uno snapshot del cluster ElastiCache ed esportalo nel bucket S3. Quindi, crea un nuovo cluster MemoryDB e specifica il backup da cui eseguire il ripristino. MemoryDB creerà un nuovo cluster con i dati e i metadati Valkey o Redis OSS dello snapshot. Per ulteriori informazioni sulla migrazione dei dati da ElastiCache a MemoryDB, consulta la documentazione di MemoryDB.

Parametri

Sì, MemoryDB offre parametri operativi e prestazionali per il tuo cluster. MemoryDB ha oltre 30 parametri CloudWatch e puoi visualizzarli nella console MemoryDB. Per ulteriori informazioni sui parametri di CloudWatch e MemoryDB, consulta la documentazione di MemoryDB.

Sicurezza e conformità

Sì, MemoryDB supporta la crittografia dei dati sia a riposo che in transito. Per la crittografia a riposo, puoi utilizzare le chiavi gestite dal cliente (CMK) di AWS Key Management Service o una chiave fornita da MemoryDB. Con le istanze Graviton2 per il tuo cluster MemoryDB, i dati vengono crittografati in memoria utilizzando la crittografia DRAM a 256 bit sempre attiva.

MemoryDB utilizza liste di controllo degli accessi (ACL) per verificare sia l'autenticazione che l'autorizzazione per il cluster. Le liste ACL consentono di definire autorizzazioni differenti per utenti diversi nello stesso cluster. Un’ACL è una raccolta di uno o più utenti. Ogni utente dispone di una password e di una stringa di accesso utilizzate per autorizzare l'accesso ai comandi e ai dati. Per saperne di più sulle ACL in MemoryDB, consulta la documentazione di MemoryDB.

Sì, tutti i cluster MemoryDB devono essere avviati in un VPC.

Continueremo a supportare altre certificazioni di conformità. Leggi qui le informazioni più recenti sulla preparazione alla conformità.

Sì. Per ricevere uno storico di tutte le chiamate delle API di Amazon MemoryDB effettuate sul tuo account, non devi fare altro che attivare CloudTrail nella Console di gestione AWS. Per ulteriori informazioni, visita la home page di CloudTrail.

Ottimizzazione dei costi

La suddivisione in livelli dei dati per Amazon MemoryDB è una nuova opzione con un ottimo rapporto prezzo/prestazioni per MemoryDB che sposta automaticamente i dati a cui si accede meno frequentemente dalla memoria alle unità a stato solido (SSD) ad alte prestazioni collegate localmente. La suddivisione in livelli dei dati aumenta la capacità, semplifica la gestione dei cluster e migliora il costo totale di proprietà (TCO) per MemoryDB.

La suddivisione in livelli dei dati va usata quando è necessario un modo più semplice ed economico per scalare la capacità dei dati per i cluster MemoryDB senza sacrificare la disponibilità delle applicazioni. La suddivisione in livelli dei dati è perfetta per i carichi di lavoro che accedono regolarmente a un massimo del 20% dei loro dati e per le applicazioni che possono sopportare un'ulteriore latenza la prima volta che si accede a un elemento meno utilizzato. L’uso della suddivisione in livelli dei dati con i nodi R6gd che hanno una capacità totale quasi 5 volte superiore (memoria + SSD) può aiutarti a ottenere un risparmio di oltre il 60% sui costi di archiviazione quando funzionano al massimo utilizzo rispetto ai nodi R6g (solo memoria). Ipotizzando valori di stringa da 500 byte, in genere puoi aspettarti una latenza aggiuntiva di 450 µs per le richieste di lettura ai dati archiviati su SSD rispetto alle richieste di lettura ai dati in memoria.

La suddivisione in livelli dei dati funziona utilizzando l’archiviazione SSD nei nodi del cluster quando la capacità di memoria disponibile è esaurita. Quando si utilizzano nodi cluster dotati di archiviazione SSD, la suddivisione in livelli dei dati viene abilitata automaticamente e MemoryDB gestisce il posizionamento dei dati, spostando in modo trasparente gli elementi tra memoria e disco utilizzando una policy utilizzata meno di recente (LRU). Quando la memoria è utilizzata completamente, MemoryDB rileva automaticamente quali elementi sono stati utilizzati meno di recente e ne sposta i valori su disco, ottimizzando i costi. Quando un'applicazione deve recuperare un elemento dal disco, MemoryDB sposta in modo trasparente il suo valore in memoria prima di servire la richiesta, con un impatto minimo sulle prestazioni.

Per iniziare, crea un nuovo cluster MemoryDB utilizzando istanze ottimizzate per la memoria con processori AWS Graviton2 basati su ARM e SSD NVMe (R6gd). È quindi possibile migrare i dati da un cluster esistente importando uno snapshot.

I nodi R6gd con la suddivisione in livelli dei dati si basano sull'ora consumata per istanza. Si paga anche per i dati scritti quando usi R6gd, in modo simile ad altri tipi di nodi MemoryDB. Per ulteriori informazioni, consulta la pagina dei prezzi di MemoryDB.

Per iniziare, crea un nuovo cluster MemoryDB utilizzando istanze ottimizzate per la memoria con processori AWS Graviton2 basati su ARM e SSD NVMe (R6gd). È quindi possibile migrare i dati da un cluster esistente importando uno snapshot.

I nodi riservati MemoryDB offrono una flessibilità dimensionale all'interno di una famiglia di nodi e di una Regione AWS. Ciò significa che la tariffa scontata per i nodi riservati verrà applicata automaticamente all'utilizzo di tutte le dimensioni della stessa famiglia di nodi. Ad esempio, se acquisti un nodo riservato r6g.xlarge e devi passare a un nodo più grande r6g.2xlarge, la tariffa scontata del tuo nodo riservato verrà applicata automaticamente all'utilizzo del 50% del nodo r6g.2xlarge nella stessa regione AWS. La flessibilità delle dimensioni ridurrà il tempo da dedicare alla gestione dei nodi riservati e, poiché non si è più vincolati a una dimensione specifica del nodo del database, si può ottenere il massimo dallo sconto anche se il database deve essere aggiornato.

I prezzi dei nodi riservati MemoryDB si basano sul tipo di nodo, sulla durata del termine (uno o tre anni), sull'opzione di pagamento (Nessun pagamento anticipato, Pagamento anticipato parziale, Pagamento anticipato intero cost) e sulla regione AWS. Tieni presente che i prezzi dei nodi riservati non coprono i costi di scrittura dei dati o di archiviazione degli snapshot. Per ulteriori informazioni, consulta la pagina dei prezzi di MemoryDB.

MemoryDB offre nodi riservati per i nodi R6g, R7g e R6gd ottimizzati per la memoria (con tiering dei dati).