Ignora esplorazione

Che cos'è la memorizzazione nella cache

Gli sviluppatori e i professionisti IT usano la memorizzazione nella cache per salvare e accedere più velocemente ai dati chiave-valore nella memoria temporanea e con meno impegno rispetto ai dati archiviati nell'archiviazione dati convenzionale. Le cache sono utili negli scenari con più tecnologie, ad esempio la memorizzazione nella cache del computer con memoria ad accesso casuale (RAM), la memorizzazione nella cache di rete in una rete per la distribuzione di contenuti, una cache Web per i dati multimediali o una cache nel cloud per rendere le app cloud più resilienti. Gli sviluppatori spesso progettano applicazioni per memorizzare nella cache i dati elaborati e quindi ripristinarli per soddisfare le richieste più velocemente rispetto alle query di database standard.

È possibile usare la memorizzazione nella cache per ridurre i costi del database, offrire una velocità effettiva più elevata e una latenza inferiore rispetto alla maggior parte dei database, nonché 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 di database posizionata all'interno del database o dell'applicazione oppure configurata come livello autonomo. Anche se si basano in genere su un database convenzionale per archiviare set di dati completi, estesi e durevoli, usano una cache per archiviare sottoinsiemi di dati temporanei per recuperarli rapidamente.

È possibile usare la memorizzazione nella cache con tutti i tipi di archivi dati, inclusi i database NoSQL, nonché con i database relazionali come SQL Server, MySQL o MariaDB. Inoltre, la memorizzazione nella cache funziona con molte piattaforme di dati specifiche, ad esempio Database di Azure per PostgreSQL, database SQL di Azure o Istanza gestita di SQL di Azure. È consigliabile cercare il tipo di archivio dati più adatto ai requisiti prima di iniziare a configurare l'architettura dei dati. Ad esempio, è consigliabile comprendere le funzionalità di PostgreSQL prima di usarlo per combinare archivi dati relazionali e non strutturati.

Vantaggi dei livelli della cache e informazioni su Redis

Gli sviluppatori usano cache a più livelli denominate livelli di cache per archiviare vari tipi di dati in cache separate in base alla richiesta. Se si aggiungono uno o più livelli cache, è possibile migliorare significativamente la velocità effettiva e le prestazioni di latenza di un livello dati.

Redis è la struttura di dati open source in memoria più diffusa, utilizzata per creare livelli di cache ad alte prestazioni 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 oltre l'800% e ha migliorato le prestazioni di latenza di oltre il 1.000%1.

Le cache possono inoltre ridurre il costo totale di proprietà (TCO) per un livello dati. Se si usano le cache per gestire le query più comuni e ridurre il carico del database, è possibile ridurre la necessità di effettuare il provisioning eccessivo delle istanze di database, con un notevole risparmio sui costi e una riduzione del TCO.

Tipi di memorizzazione nella cache

La strategia di memorizzazione nella cache dell'utente dipende dal modo in cui l'applicazione legge e scrive i dati. L'applicazione ha carichi di lavori ad alta intensità di scrittura dati oppure i dati vengono scritti una volta e letti di frequente? I dati restituiti sono sempre univoci? Modelli di accesso ai dati differenti influiranno sulla configurazione di una cache. I tipi comuni di memorizzazione nella cache includono cache-aside, read-through/write-through e write-behind/write-back.

Cache-aside

Per le applicazioni con carichi di lavoro intensi in lettura, gli sviluppatori usano spesso un modello di programmazione cache-aside o "side-cache". Individuano la side-cache all'esterno dell'applicazione, che può quindi connettersi alla cache per eseguire query e recuperare dati oppure direttamente con il database se i dati non sono presenti nella cache. Quando l'applicazione recupera i dati, li copia nella cache per eseguire query in futuro.

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

Cache read-through/write-through

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

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

Tramite 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 viene immediatamente riconosciuta, successivamente la cache stessa riscrive i dati nel database in background. Le cache write-behind, talvolta note come cache write-back, sono le migliori per i carichi di lavoro ad alta intensità di scrittura e ne migliorano le prestazioni poiché l'applicazione non deve attendere il completamento della scrittura prima di passare all'attività successiva.

Confronto tra cache distribuita e archivio sessioni

Spesso gli utenti confondono le cache distribuite con gli archivi sessioni, che sono simili ma con requisiti e scopi diversi. Invece di usare una cache distribuita per integrare un database, gli sviluppatori implementano gli archivi di sessioni, ovvero archivi di dati temporanei a livello utente, per profili, messaggi e altri dati utente in applicazioni orientate alle sessioni, ad esempio le app Web.

Che cos'è un archivio sessioni

Le applicazioni orientate alla sessione tengono traccia delle azioni eseguite dall'utente durante l'accesso alle applicazioni. Per mantenere tali dati quando l'utente si disconnette, è possibile conservarli in un archivio sessioni, migliorando la gestione delle sessioni, riducendo i costi e velocizzando le prestazioni delle applicazioni.

In che modo l'utilizzo di un archivio sessioni è diverso dalla memorizzazione nella cache di un database

In un archivio sessioni 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'istanza di database o archiviazione, mentre usano gli archivi sessione per migliorare le prestazioni delle applicazioni con la scrittura dei dati nell'archivio in memoria, eliminando la necessità di accedere a un database.

I dati scritti in un archivio sessioni hanno in genere una durata breve, mentre i dati memorizzati nella cache con un database primario permangono molto più a lungo. Un archivio sessioni richiede replica, disponibilità elevata e durabilità dei dati per garantire che i dati transazionali non vengano persi e che gli utenti rimangano coinvolti. Diversamente, se i dati in una side-cache vengono persi, è sempre presente una copia di tali dati nel database permanente.

Vantaggi della memorizzazione nella cache

Miglioramento delle prestazioni dell'applicazione

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

Riduzione dell'utilizzo e dei costi del database

La memorizzazione della cache riduce il numero di query nel database, migliora le prestazioni e riduce i costi limitando la necessità di ridimensionare l'infrastruttura di database e riducendo gli addebiti per la velocità effettiva.

Prestazioni scalabili e prevedibili

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 eguagliare. La memorizzazione nella cache offre inoltre la flessibilità necessaria in caso di aumento o ridimensionamento delle applicazioni e degli archivi dati. L'applicazione potrà quindi consentire a molti utenti di accedere contemporaneamente agli stessi file, senza aumentare il carico sui database back-end. Inoltre, se un'applicazione riscontra spesso picchi di utilizzo e velocità effettiva elevata, le cache in memoria possono attenuare la latenza.

A cosa serve la memorizzazione nella cache

Memorizzazione nella cache di output

La memorizzazione nella cache di output consente di aumentare le prestazioni di una pagina Web poiché archivia 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. Ciò consente all'applicazione di gestire le richieste senza eseguire codice pagina o comunicare con altri server.

Memorizzazione nella cache dei dati e del database

La velocità e la velocità effettiva del database possono essere fattori chiave nelle prestazioni complessive di un'applicazione. La memorizzazione nella cache del database viene usata per le chiamate frequenti ai dati che non cambiano spesso, ad esempio i dati relativi ai prezzi o all'inventario. Ciò consente di caricare i siti Web e le applicazioni più velocemente, aumentando al contempo 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 generano spesso dati che devono essere archiviati per periodi brevi. Un archivio dati in memoria come Redis è l'ideale per archiviare, in modo efficiente e affidabile, i volumi elevati di dati delle sessioni, ad esempio input utente, voci del carrello acquisti o preferenze di personalizzazione, a un costo inferiore rispetto all'archiviazione o ai database.

Broker messaggi e architetture di pubblicazione/sottoscrizione

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

Applicazioni e API

Come per i browser, le applicazioni salvano file e dati importanti per ricaricare rapidamente tali informazioni quando necessario. Le risposte API memorizzate nella cache eliminano la richiesta o il carico sui server e i database dell'applicazione, garantendo tempi di risposta più rapidi e prestazioni migliori.

1Le 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 test usando un database di Azure con e senza implementazione della cache di Azure per Redis come soluzione di memorizzazione nella cache. Database SQL di Azure e Database di Azure per PostgreSQL sono stati usati come elemento di database nello studio. Un'istanza per utilizzo generico 2 vCore Gen5 del database SQL di Azure e un'istanza per utilizzo generico 2 vCore del database di Azure per PostgreSQL sono state usate con un'istanza Premium P1 da 6 gigabyte di Azure per Redis. Questi risultati sono stati confrontati con istanze per utilizzo generico 8, 16, 24 e 32 vCore Gen5 del database SQL di Azure e istanze per utilizzo generico 8, 16, 24 e 32 vCore del database di Azure per PostgreSQL senza cache di Azure per Redis. I dati di benchmark vengono acquisiti dal test di carico del database dell'applicazione Web GigaOm, che simula un'applicazione Web comune e un database back-end bersagliato dall'aumento delle le richieste HTTP. I risultati effettivi potrebbero variare in base alla configurazione e all'area geografica. Vedere lo studio completo.

È possibile aggiungere un livello di memorizzazione nella cache agile all'applicazione con un servizio Redis completamente gestito: informazioni su come iniziare a usare la cache di Azure per Redis.

Se si desidera eseguire una memorizzazione nella cache flessibile basata su file per applicazioni ad alte prestazioni, leggere Cache HPC di Azure.

Serve aiuto?