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.
Il livello in memoria di Bigtable è 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 modelli di accesso e alle esigenze di prestazioni, il tutto tramite una singola API. Utilizzando l'accesso diretto alla memoria remoto (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 il livello in memoria
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 del livello 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. Bigtable può richiedere fino a 30 minuti per il provisioning dei nodi del livello in-memory specializzato. Durante questo periodo, Bigtable continua a gestire il traffico dallo spazio di archiviazione permanente.
Puoi abilitare il livello in memoria a livello di cluster.
Il livello in memoria funziona nel seguente modo:
- Inserimento dei dati nel livello di memoria: il livello in memoria 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'applicazione che configuri per il livello in memoria. Un'operazione di scrittura da qualsiasi profilo dell'app aggiorna il livello di memoria se i dati della riga sono già presenti nel livello in memoria.
- Criteri di espulsione e invalidazione: il livello in memoria utilizza l'espulsione LRU (Least Recently Used) a livello di riga e un criterio di invalidazione TTL (Time to Live) di 15 minuti.
- Memorizzazione nella cache negativa: il livello in memoria ricorda se una risorsa è mancante per un periodo di tempo per evitare il sovraccarico del backend.
- Sicurezza: il livello in memoria 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 questo rendimento, nella memoria risiedono solo le versioni più recenti di una riga con timestamp. Le richieste di versioni precedenti dei dati, note anche come celle storiche, ignorano automaticamente il livello di memoria e vengono pubblicate dallo spazio di archiviazione permanente.
Coerenza dei dati
Bigtable garantisce che i dati del livello 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 il livello in memoria di Bigtable è abilitato, mantieni la coerenza di lettura e scrittura a livello di cluster.
Scalabilità verticale
L'abilitazione del livello in memoria consente a ogni nodo di utilizzare lo scaling verticale per modificare la capacità di throughput del livello 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 del livello in memoria su tutti i nodi del cluster e la scalabilità automatica è attiva, Bigtable esegue automaticamente il provisioning di nodi aggiuntivi per aumentare ulteriormente il throughput del livello in memoria.
Lo scalabilità verticale su un nodo si applica solo alle letture al secondo del livello in memoria 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:
- Il livello in memoria richiede l'archiviazione SSD.
- Il livello in memoria supporta solo operazioni di lettura puntuale a livello di singola riga.
- Il livello in memoria non gestisce le scansioni dei dati né supporta le query SQL.
- I profili delle app con livello in memoria supportano solo il routing a un singolo cluster.
- Il livello in memoria limita le dimensioni delle righe a 1 MiB per chiave di riga. Bigtable legge le righe che superano questo limite dallo spazio di archiviazione permanente.
- Il livello in memoria richiede la versione 2.77.0 o successive della libreria client Bigtable per Java o la versione 26.80.0 o successive del BOM. Altre librerie client non sono supportate.
- I cluster di chiavi di crittografia gestite dal cliente (CMEK) non supportano il livello in memoria.
Passaggi successivi
- Scopri come attivare il livello in memoria.