Trace Id is missing
Passa al contenuto principale

Che cos'è la memorizzazione nella cache?

Sviluppatori e professionisti IT usano la memorizzazione nella cache per salvare e accedere ai dati chiave-valore nella memoria temporanea più velocemente e con un minor numero di attività rispetto ai dati archiviati nell'archiviazione dati convenzionale. Le cache sono utili in numerosi scenari con più tecnologie, ad esempio la memorizzazione nella cache dei computer con la RAM, la memorizzazione nella cache di rete in una rete per la distribuzione di contenuti, una cache Web per i dati multimediali Web o una cache cloud per aumentare la resilienza delle app cloud. Gli sviluppatori spesso progettano applicazioni affinché memorizzino nella cache i dati elaborati e quindi riconvertirli per gestire le richieste più velocemente rispetto alle query su database standard.

È possibile usare la memorizzazione nella cache per ridurre i costi del database, offrire velocità effettiva più elevata e latenza ridotta rispetto a quanto offerto dalla maggior parte dei database e migliorare le prestazioni delle applicazioni cloud e Web.

Come funziona la memorizzazione nella cache per i database?

Gli sviluppatori possono integrare un database primario con una cache diel database, che possono collocare nel database o nell'applicazione o configurare come livello autonomo. Sebbene in genere si affidino a un database convenzionale per archiviare set di dati completi di grandi dimensioni e durevoli, usano una cache per archiviare subset temporanei di dati per il recupero rapido.

È possibile usare la memorizzazione nella cache con tutti i tipi di archivi dati, inclusi i database NoSQL e i database relazionali, ad esempio SQL Server, MySQLMariaDB. La memorizzazione nella cache funziona anche con molte piattaforme dati specifiche, ad esempio Database di Azure per PostgreSQLDatabase SQL di AzureIstanza gestita di SQL di Azure. È consigliabile verificare qual è il tipo di archivio dati più adatto alle proprie esigenze prima di iniziare a configurare un'architettura dei dati. Ad esempio, sarà necessario comprendere che cos'è PostgreSQL prima di usarlo per combinare archivi di dati relazionali e non strutturati.

Che cos'è Redis e quali sono i vantaggi dei livelli di cache?

Gli sviluppatori usano cache multilivello denominate livelli di cache per archiviare tipi diversi di dati in cache separate in base alla domanda. Aggiungendo uno o più livelli di cache, è possibile migliorare in modo significativo le prestazioni di velocità effettiva e latenza di un livello dati.

Redis è una struttura dei dati in memoria open source usata per creare livelli di cache a prestazioni elevate e altri archivi dati. Uno studio recente ha dimostrato che l'aggiunta di cache di Azure per Redis a un'applicazione di esempio ha aumentato la velocità effettiva dei dati di più dell'800% e ha migliorato le prestazioni di latenza di oltre il 1000%1.

Le cache possono anche ridurre il costo totale di proprietà (TCO) per un livello dati. Usando le cache per gestire le query più comuni e ridurre il carico sui database, è possibile limitare il provisioning in eccesso delle istanze di database, con un risparmio significativo sui costi e un TCO inferiore.

Tipi di memorizzazione nella cache

La strategia di memorizzazione nella cache dipende dal modo in cui l'applicazione esegue la lettura e la scrittura dei dati. L'applicazione prevede un utilizzo elevato di operazioni di scrittura o i dati vengono scritti una sola volta e letti di frequente? I dati restituiti sono sempre univoci? Diversi modelli di accesso ai dati influiranno sulla modalità di configurazione di una cache. I tipi di memorizzazione nella cache comuni includono cache-aside, read-through/write-through e write-behind/write-back.

Cache-aside

Per le applicazioni con carichi di lavoro a elevato utilizzo di lettura, gli sviluppatori usano spesso un modello di programmazione cache-aside o "side-cache". Collocano la side-cache all'esterno dell'applicazione, che può quindi connettersi alla cache per eseguire query e recuperare dati o direttamente al database se i dati non si trovano nella cache. Quando l'applicazione recupera i dati, i dati vengono copiati nella cache per le query future.

È possibile usare una side-cache per migliorare le prestazioni dell'applicazione, mantenere la coerenza tra la cache e l'archivio dati ed evitare che i dati nella cache diventino obsoleti.

Cache read-through/write-through

Le cache read-through si mantengono aggiornate, mentre con la memorizzazione nella cache write-through, l'applicazione scrive i dati nella cache e quindi nel database. Entrambe le cache sono in linea con il database e l'applicazione le considera come l'archivio dati principale.

Le cache read-through consentono di semplificare le applicazioni in cui gli stessi dati vengono richiesti più volte, ma la cache stessa è più complessa, mentre il processo write-through in due passaggi può creare latenza. Gli sviluppatori associano i due elementi per garantire la coerenza dei dati tra la cache e il database, ridurre la latenza della cache write-through e semplificare l'aggiornamento della cache read-through.

Con la memorizzazione nella cache read-through/write-through, gli sviluppatori possono semplificare il codice dell'applicazione, aumentare la scalabilità della cache e ridurre al minimo il carico del database.

Cache write-behind/write-back

In questo scenario, l'applicazione scrive i dati nella cache, che vengono immediatamente confermati, e quindi la cache stessa scrive di nuovo i dati nel database in background. Le cache write-behind, talvolta note come cache write-back, sono ideali per i carichi di lavoro a elevato utilizzo di operazioni di scrittura e migliorano le prestazioni di scrittura perché l'applicazione non deve attendere il completamento della scrittura prima di passare all'attività successiva.

Cache distribuita e archivi di sessioni

Gli utenti spesso confondono le cache distribuite con gli archivi di sessione, che sono simili ma con requisiti e scopi diversi. Anziché usare una cache distribuita per integrare un database, gli sviluppatori implementano archivi di sessione, ovvero archivi dati temporanei a livello utente, per profili, messaggi e altri dati utente nelle applicazioni basate su sessioni come le app Web.

Che cos'è un archivio di sessione?

Le applicazioni basate su sessione consentono di tenere traccia delle azioni eseguite dagli utenti quando sono connessi alle applicazioni. Per conservare tali dati quando l'utente si disconnette, è possibile mantenerli in un archivio di sessione, che consente di migliorare la gestione delle sessioni, ridurre i costi e accelerare le prestazioni dell'applicazione.

Qual è la differenza tra un archivio di sessione e la memorizzazione nella cache di un database?

In un archivio di sessione i dati non vengono condivisi tra utenti diversi, mentre con la memorizzazione nella cache utenti diversi possono accedere alla stessa cache. Gli sviluppatori usano la memorizzazione nella cache per migliorare le prestazioni di un database o di un'istanza di archiviazione, mentre usano gli archivi di sessione per migliorare le prestazioni dell'applicazione tramite la scrittura dei dati nell'archivio in memoria, eliminando del tutto la necessità di accedere a un database.

I dati scritti in un archivio di sessione sono in genere di breve durata, mentre i dati memorizzati nella cache con un database primario prevedono in genere una durata molto più lunga. Un archivio di sessione richiede replica, disponibilità elevata e durabilità dei dati per garantire che i dati transazionali non vadano persi e che gli utenti rimangano coinvolti. D'altra parte, se i dati archiviati con un modello cache-aside vengono persi, esiste sempre una copia dei dati nel database permanente.

Vantaggi della memorizzazione nella cache

Prestazioni dell'applicazione migliorate

La lettura dei dati da una cache in memoria è molto più veloce rispetto all'accesso ai dati da un archivio dati basato su disco. E con un accesso più rapido ai dati, l'esperienza complessiva dell'applicazione migliora in modo significativo.

Utilizzo e costi ridotti del database

La memorizzazione nella cache comporta un minor numero di query su database, migliorando le prestazioni e riducendo i costi limitando le esigenze di dimensionamento dell'infrastruttura di database e riducendo gli addebiti per la velocità effettiva.

Prestazioni prevedibili e scalabili

Una singola istanza della cache può gestire milioni di richieste al secondo, offrendo un livello di velocità effettiva e scalabilità che i database non possono raggiungere. La memorizzazione nella cache offre anche la flessibilità necessaria indipendentemente dall'aumento del numero di istanze o delle prestazioni delle applicazioni e degli archivi dati. L'applicazione può quindi consentire a molti utenti di accedere contemporaneamente agli stessi file, senza aumentare il carico sui database back-end. E se un'applicazione è spesso soggetta a picchi di utilizzo e velocità effettiva elevata, le cache in memoria possono ridurre la latenza.

A cosa serve la memorizzazione nella cache?

Memorizzazione nella cache dell'output

La memorizzazione nella cache dell'output consente di migliorare le prestazioni delle pagine Web archiviando il codice sorgente completo delle pagine, ad esempio gli script HTML e client inviati da un server ai browser per il rendering. Ogni volta che un utente visualizza la pagina, il server memorizza nella cache il codice di output nella memoria dell'applicazione. In questo modo l'applicazione può gestire le richieste senza eseguire codice della pagina o comunicare con altri server.

Memorizzazione nella cache dei dati e memorizzazione nella cache dei database

La velocità e la velocità effettiva del database possono essere fattori fondamentali per le prestazioni complessive dell'applicazione. La memorizzazione nella cache del database viene usata per chiamate frequenti a dati che non cambiano spesso, ad esempio prezzi o dati di inventario. Consente il caricamento più rapido di siti Web e applicazioni, aumentando al tempo stesso la velocità effettiva e riducendo la latenza di recupero dei dati dai database back-end.

Archiviazione dei dati della sessione utente

Gli utenti dell'applicazione spesso generano dati che devono essere archiviati per brevi periodi. Un archivio dati in memoria come Redis è ideale per l'archiviazione efficiente e affidabile di volumi elevati di dati della sessione, ad esempio input dell'utente, voci del carrello o preferenze di personalizzazione a un costo inferiore rispetto a quelli delle risorse di archiviazione o dei database.

Broker di messaggi e architetture di pubblicazione/sottoscrizione

Le applicazioni cloud spesso devono scambiare dati tra servizi e possono usare la memorizzazione nella cache per implementare architetture di pubblicazione/sottoscrizione o broker di messaggi che riducono la latenza e accelerano la gestione dei dati.

Applicazioni e API

Analogamente ai browser, le applicazioni salvano file e dati importanti per ricaricare rapidamente le informazioni quando necessario. Le risposte delle API memorizzate nella cache eliminano la domanda o il carico nei server applicazioni e nei database, offrendo tempi di risposta più rapidi e prestazioni migliori.

[1] Le dichiarazioni relative alle prestazioni sono basate sui dati di uno studio commissionato da Microsoft e condotto da GigaOm nel mese di ottobre 2020. Lo studio ha confrontato le prestazioni di un'applicazione di prova usando un database di Azure con e senza implementare la Cache di Azure per Redis come soluzione di memorizzazione nella cache. Database SQL di Azure e Database PostgreSQL di Azure sono stati usati come elemento di database nello studio. Un'istanza di Database SQL di Azure per utilizzo generico di quinta generazione con 2 vCore e un'istanza di Database PostgreSQL di Azure per utilizzo generico con 2 vCore sono state usate con un'istanza Premium P1 Gen5 da 6 GB di Azure per Redis. Questi risultati sono stati confrontati con istanze di Database SQL di Azure per utilizzo generico di quinta generazione con 8, 16, 24 e 32 vCore e istanze di Database PostgreSQL di Azure per utilizzo generico con 8, 16, 24 e 32 vCore senza cache di Azure per Redis. I dati benchmark vengono ottenuti dal test di carico del database dell'applicazione Web GigaOm che simula un'applicazione Web comune e un database back-end sbarrato da richieste HTTP crescenti. I risultati effettivi possono variare in base alla configurazione e all'area geografica. Vedi lo studio completo.

Account gratuito

Prova gratuitamente i servizi di Azure di cloud computing per un massimo di 30 giorni.

Pagamento a consumo

Inizia con il pagamento in base al consumo. Senza alcun impegno iniziale. Annulla quando vuoi.

Aggiungi un livello di memorizzazione nella cache agile all'applicazione con un servizio Redis completamente gestito. Scopri come iniziare a usare Cache Redis per Redis.

Se vuoi eseguire la memorizzazione nella cache flessibile basata su file per applicazioni a prestazioni elevate, vedi la Cache HPC di Azure.