Panoramica del livello in memoria
Il livello in memoria è un'impostazione a livello di cluster che utilizza nodi specializzati. Prima di leggere questa pagina, comprendi istanze, cluster e nodi. Ti consigliamo inoltre di acquisire familiarità con le limitazioni.
Bigtable in-memory è un livello di memoria integrato che fa parte del nodo Bigtable e che consente un tiering dei dati ottimizzato per i costi e senza interruzioni in base ai pattern di accesso e alle esigenze di prestazioni, il tutto tramite una singola API. Utilizzando l'accesso diretto alla memoria remota (RDMA), il livello in memoria di Bigtable riduce significativamente i tempi di risposta, mitiga gli hotspot e garantisce un throughput elevato per i dati sensibili alla latenza. Per saperne di più, vedi Informazioni sul rendimento.
Quando utilizzare in-memory
Ti consigliamo di attivare il livello in memoria per i seguenti casi d'uso:
- Requisiti di latenza inferiore al millisecondo: carichi di lavoro che richiedono latenze di lettura inferiori a 1 ms, in genere gestite anteponendo un database a una soluzione di cache autogestita.
- Letture puntuali con throughput elevato: applicazioni con requisiti di throughput elevato per il traffico di lettura su sottoinsiemi specifici di dati.
- Mitigazione degli hotspot: carichi di lavoro a throughput elevato che possono includere picchi di traffico o hotspot su determinate chiavi di riga.
- Ottimizzazione dei costi: scenari in cui vuoi ridurre il numero di nodi Bigtable scaricando volumi di lettura elevati su un livello in memoria più conveniente.
Come funziona il livello in memoria
Il supporto in memoria è fornito dai nodi di archiviazione ibrida. Questi nodi specializzati estendono la disaggregazione di calcolo e archiviazione di Bigtable per includere un livello di memoria con velocità effettiva scalabile verticalmente. L'in-memory può richiedere fino a 30 minuti per il provisioning dei nodi specializzati. Durante questo periodo, Bigtable continua a gestire il traffico dallo spazio di archiviazione permanente.
Puoi attivare il livello in memoria a livello di cluster.
Il livello in memoria funziona nel seguente modo:
- Inserimento dei dati nel livello di memoria: in-memory offre un comportamento di memorizzazione nella cache read-through. Una riga viene inserita nel livello di memoria con operazioni di lettura tramite un profilo dell'app che configuri per la memoria. Un'operazione di scrittura da qualsiasi profilo dell'app aggiorna il livello di memoria se i dati della riga si trovano già nel livello in memoria.
- Criteri di rimozione e invalidazione: in-memory utilizza la rimozione LRU (Least Recently Used) a livello di riga e un criterio di invalidazione durata (TTL) di 15 minuti.
- Memorizzazione nella cache negativa: la memoria ricorda se una risorsa è mancante per un periodo di tempo per evitare il sovraccarico del backend.
- Sicurezza: in-memory supporta la crittografia at-rest e in transito (TLS).
- Replica: in un'istanza multi-cluster, i livelli di memoria di cluster diversi non sono sincronizzati. Poiché ogni livello di memoria determina in modo indipendente quali dati caricare in memoria in base al traffico di lettura che riceve, cluster diversi potrebbero contenere chiavi di riga diverse nei rispettivi livelli di memoria. Bigtable carica i dati in memoria dal livello SSD del cluster locale. Una scrittura in una riga alla fine la aggiorna in tutti i livelli di memoria in cui è presente, seguendo il modello di replica Bigtable standard di coerenza finale.
- Scalabilità automatica verticale: il livello in memoria supporta la scalabilità automatica verticale a livello di nodo, che funziona insieme alla scalabilità automatica di Bigtable.
Il livello in memoria è ottimizzato per l'accesso ad alte prestazioni ai dati attuali. Per mantenere queste prestazioni, solo le versioni più recenti di una riga con timestamp risiedono nel livello di memoria. Le richieste di versioni precedenti dei dati, note anche come celle storiche, ignorano automaticamente il livello di memoria e vengono servite dallo spazio di archiviazione permanente.
Coerenza dei dati
Bigtable garantisce che i dati in memoria siano coerenti con i dati permanenti sul livello di archiviazione SSD o ad accesso non frequente. Questa architettura ibrida consente a Bigtable di fornire un modello di archiviazione coerente in tutti i livelli di archiviazione, consentendoti di accedere ai tuoi dati tramite la stessa interfaccia semantica indipendentemente dal fatto che si trovino fisicamente nella RAM o nell'archiviazione permanente. Se la funzionalità in memoria di Bigtable è abilitata, mantieni la coerenza di lettura dopo scrittura a livello di cluster.
Scalabilità verticale
L'attivazione del livello in memoria consente a ogni nodo di utilizzare lo scaling verticale per modificare la capacità di throughput in memoria. Ogni nodo include 8 GB di RAM per il livello in memoria e inizia con una capacità di base di 40.000 letture al secondo. Per gestire i picchi di traffico di lettura puntuale, i nodi possono scalare automaticamente con incrementi di 40.000 letture al secondo, raggiungendo un massimo di 120.000 letture al secondo per nodo.
Questa funzionalità di scalabilità verticale si integra con la scalabilità automatica di Bigtable. Se viene raggiunta la capacità massima in memoria su tutti i nodi del cluster e la scalabilità automatica è attiva, Bigtable esegue automaticamente il provisioning di nodi aggiuntivi per aumentare ulteriormente la velocità effettiva in memoria.
Lo scale up verticale su un nodo si applica solo alle letture in memoria al secondo e funziona indipendentemente dal fatto che la scalabilità automatica a livello di cluster sia abilitata o meno. Lo scalabilità verticale oltre le 40.000 letture al secondo di base viene fatturata applicando un moltiplicatore al costo orario del nodo. Per saperne di più, consulta le pagine Prezzi e Limiti.
Limitazioni
Al livello in memoria si applicano le seguenti limitazioni:
- In-memory richiede l'archiviazione SSD.
- In-memory supporta solo operazioni di lettura puntuale a livello di singola riga.
- In-memory non esegue scansioni dei dati né supporta le query SQL.
- I profili delle app in memoria supportano solo il routing a un singolo cluster.
- I limiti in memoria riducono le dimensioni delle righe a 1 MiB per chiave di riga. Bigtable legge le righe che superano questo limite dallo spazio di archiviazione permanente.
- In-memory richiede la versione 2.77.0 o successive della libreria client Bigtable per Java o la versione 26.80.0 o successive del BOM.
- I cluster di chiavi di crittografia gestite dal cliente (CMEK) non supportano la funzionalità in-memory.
Passaggi successivi
- Scopri come attivare il livello in memoria