Un database in memoria è un database dedicato che si basa principalmente sulla memoria interna per l'archiviazione di dati. Permette tempi di risposta minimi eliminando la necessità di accedere alle unità disco rigido standard (SSD). I database in memoria rappresentano la soluzione ideale per quelle applicazioni che richiedono tempi di risposta di microsecondi o che hanno picchi di traffico elevati, come le classifiche di gioco, gli archivi delle sessioni e l'analisi dei dati in tempo reale. Anche con i termini database di memoria principale (MMDB), sistema di database in memoria (IMDS) e sistema di database in tempo reale (RTDB) si fa riferimento ai database in memoria.

Quali sono i vantaggi dei database in memoria

Un database in memoria offre diversi vantaggi che illustriamo in dettaglio qui di seguito.

Bassa latenza, per risposte in tempo reale

La latenza è il ritardo che intercorre tra la richiesta di accesso ai dati e la risposta dell'applicazione. I database in memoria offrono latenze basse e prevedibili, indipendentemente dalla dimensione. Forniscono una latenza di lettura di pochi microsecondi, una latenza di scrittura inferiore a un millisecondo a singola cifra e un'elevata velocità di trasmissione effettiva.

Di conseguenza, l'archiviazione in memoria permette alle aziende di prendere decisioni basate su dati in tempo reale. È possibile progettare applicazioni in grado di elaborare i dati e rispondere alle modifiche in maniera tempestiva. Ad esempio, l'elaborazione in memoria dei dati dei sensori dei veicoli a guida autonoma può garantire tempi di risposta pari a frazioni di secondo necessari per la frenata di emergenza.

Velocità di trasmissione effettiva elevata

I database in memoria sono noti per la loro elevata velocità di trasmissione effettiva. La velocità di trasmissione effettiva si riferisce al numero di operazioni di lettura (velocità di trasmissione effettiva di lettura) o scrittura (velocità di trasmissione effettiva di scrittura) in un determinato lasso di tempo. Alcuni esempi sono i byte/minuto o le transazioni al secondo.

Elevata scalabilità

È possibile dimensionare il database in memoria per soddisfare le esigenze variabili delle applicazioni. È possibile eseguire il dimensionamento sia delle operazioni di scrittura che di lettura senza compromettere le prestazioni. Il database rimane online e supporta le operazioni di lettura e scrittura durante il ridimensionamento.

Quali sono i casi d'uso dei database in memoria

I database in memoria sono una buona scelta per diversi settori, come quello bancario, delle telecomunicazioni, del gaming e della pubblicità sui dispositivi mobili. Di seguito riportiamo alcuni esempi di casi d'uso del database in memoria.

Memorizzazione nella cache

La cache è un livello di archiviazione di dati ad alta velocità che memorizza un sottoinsieme di dati, in genere di natura temporanea. Lo scopo principale di una cache è quello di aumentare le prestazioni di recupero dati riducendo la necessità di accedere al livello di archiviazione successivo, più lento. Ciò significa che le richieste future di quei dati verranno elaborate con una velocità maggiore di quella possibile accedendo alla posizione di archiviazione primaria di quei dati.

La memorizzazione nella cache permette di riutilizzare in modo efficace dati già recuperati o elaborati. L'archiviazione di dati in memoria favorisce un accesso più rapido ai dati in cache. La memorizzazione nella cache sacrifica la durabilità in favore dei tempi di risposta. I tempi di risposta sono più rapidi perché i dati vengono recuperati dalla memoria, ma la memorizzazione nella cache non offre una protezione dalla perdita dei dati in memoria. Per questo motivo, la memorizzazione nella cache si usa spesso in combinazione con un database durevole su disco.

Offerte in tempo reale

Le offerte in tempo reale fanno riferimento alla compravendita di annunci pubblicitari online. In genere, l'offerta deve essere effettuata nel momento in cui l'utente carica una pagina web nell’arco di 100-120 millisecondi e talvolta anche di 50 millisecondi. Nel corso di questo intervallo, le applicazioni di offerta in tempo reale richiedono offerte da tutti gli acquirenti dello spazio pubblicitario, selezionano l'offerta vincente in base a una serie di criteri, visualizzano l'offerta e raccolgono le informazioni post-visualizzazione dell'annuncio. I database in memoria sono ideali per l'acquisizione, l'elaborazione e l'analisi di dati in tempo reale con latenza inferiore al millisecondo.

Classifiche per videogiochi

Una classifica di gioco relativa mostra la posizione di un giocatore rispetto ad altri giocatori di pari livello. Queste classifiche possono contribuire a stimolare l'interesse tra giocatori evitando che si demotivino di fronte a giocatori di alto livello. I database in memoria possono fornire risultati di ordinamento e aggiornare la classifica in tempo reale per un gioco che coinvolge milioni di giocatori.

Come funziona una cache in memoria

Una cache in memoria si basa sulla memoria ad accesso casuale (RAM) per archiviare i dati. Questa tecnologia memorizza le tabelle di dati direttamente nella RAM anziché su unità esterne. Strutture di dati specializzate consentono l'indicizzazione dei record di dati. Gli indici fungono da puntatori diretti a righe e colonne specifiche. Tuttavia, i dati fisici effettivi sono compressi e in formato non relazionale. Quando si effettua una richiesta di accesso, il database accede al valore esatto dei dati utilizzando l'indice. I dati archiviati sono sempre disponibili in un formato utilizzabile direttamente.

Fattori come l'elaborazione a 64 bit, la diminuzione dei prezzi della RAM e i server multi-core hanno reso l'archiviazione in memoria ormai sempre più comune. Inoltre, gli archivi di dati basati su cloud consentono di dimensionare le risorse della RAM in base alle esigenze, rendendo la tecnologia in memoria più flessibile e accessibile.

Differenza tra cache in memoria e database tradizionali basati su disco

Un database tradizionale conserva tutti i dati su unità disco esterne o unità a stato solido. Tutte le operazioni di lettura e scrittura richiedono l'accesso al disco. Al contrario, la cache in memoria non dà priorità alla persistenza dei dati. Ad esempio, le cache possono salvare i dati solo periodicamente su supporti di memoria esterni. Riepiloghiamo le differenze tra cache in memoria e database tradizionali qui di seguito.

Qual è la differenza tra una cache in memoria e un database in memoria

Le cache in memoria assicurano prestazioni migliori in quanto le operazioni di scrittura non sono persistenti, eliminando il tempo di persistenza dei dati. Un database in memoria mantiene persistenti le operazioni di scrittura, rendendo le modifiche ai dati durature. Questa durabilità si traduce in una riduzione delle prestazioni per le operazioni di scrittura. Tuttavia, i database in memoria offrono comunque prestazioni migliori rispetto a un database basato su disco. Dal punto di vista delle prestazioni, si posizionano tra una cache in memoria e un database basato su disco.

Quali sono i limiti delle cache in memoria

Poiché tutti i dati sono archiviati e gestiti esclusivamente in memoria, le cache in memoria potrebbero perdere i dati in caso di arresto di un processo o errori del server. Per migliorare la durabilità, una cache in memoria può conservare i dati periodicamente su database su disco. Di seguito illustriamo alcuni meccanismi per migliorare la durata.

File snapshot

I file snapshot registrano lo stato del database in un determinato momento. La cache in memoria genera snapshot periodicamente o durante uno spegnimento controllato. Sebbene la creazione di snapshot migliori in qualche misura la durabilità, è comunque possibile che si verifichi una perdita di dati tra uno snapshot e l'altro.

Registrazione delle transazioni

La registrazione delle transazioni registra le modifiche al database in un file di journal esterno. La registrazione non dipende dalle operazioni di lettura/scrittura dei dati e non influisce sulle prestazioni. Il file di journal facilita il ripristino automatico di una cache in memoria.

Replica

Alcune cache in memoria si basano sulla ridondanza per garantire una disponibilità elevata. Mantengono più copie degli stessi dati in diversi moduli di memoria. Un errore del modulo comporta un failover automatico sulla copia di backup duplicata. Ciò riduce il rischio di perdita di dati con una cache.

In che modo AWS può supportare i requisiti inerenti a database e cache in memoria

AWS offre diversi servizi di database e cache in memoria completamente gestiti per le tue esigenze specifiche.

Database in memoria

Amazon MemoryDB

Amazon MemoryDB è un servizio di database in memoria durevole e dalle prestazioni ultra-veloci. È compatibile con Redis OSS e consente ai clienti di creare rapidamente applicazioni con le stesse strutture dati, API e comandi Redis OSS flessibili e intuitivi che attualmente già utilizzano. MemoryDB archivia i dati in modo durevole su più zone di disponibilità (AZ) utilizzando un log transazionale Multi-AZ per abilitare operazioni rapide di failover, ripristino del database e riavvio dei nodi.

Cache in memoria

Amazon ElastiCache

Amazon ElastiCache è un servizio di caching in memoria incredibilmente veloce in grado di fornire una latenza di microsecondi per alimentare applicazioni in tempo reale su internet. È compatibile con Redis OSS e Memcached. Gli sviluppatori possono utilizzare ElastiCache come cache in memoria o casi d'uso che non richiedono un'elevata durabilità dei dati. La configurazione del cluster ElastiCache consente ai clienti di eseguire carichi di lavoro con una capacità in memoria massima di 6,1 TB in un singolo cluster. ElastiCache permette anche di aggiungere e rimuovere partizioni da un cluster in esecuzione. È possibile aumentare o ridurre orizzontalmente i carichi di lavoro su cluster ElastiCache affinché si adattino alle variazioni della domanda.

Inizia a usare le cache in memoria o i database su AWS creando un account gratuito oggi stesso!