Panoramica del livello in memoria

Il livello in memoria è un'impostazione a livello di cluster che utilizza nodi specializzati. Prima di leggere questa pagina, scopri di più su 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 la suddivisione dei dati in livelli senza interruzioni e a costi ottimizzati 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 ulteriori informazioni, consulta Informazioni sul rendimento.

Quando utilizzare il livello in memoria

Ti consigliamo di abilitare il livello in memoria per i seguenti casi d'uso:

  • Requisiti di latenza inferiore al millisecondo: workload che richiedono latenze di lettura inferiori a 1 ms, in genere gestiti tramite un database con una soluzione di cache autogestita.
  • Letture puntuali con throughput elevato: applicazioni con requisiti di throughput del traffico di lettura elevati su sottoinsiemi specifici di dati.
  • Mitigazione degli hotspot: workload con throughput elevato che possono includere picchi di traffico o hotspot su chiavi di riga specifiche.
  • 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 per il 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 throughput scalabile verticalmente. Bigtable può impiegare fino a 30 minuti per eseguire il provisioning dei nodi specializzati del livello in memoria. Durante questo periodo, Bigtable continua a gestire il traffico dall'archiviazione permanente.

Puoi abilitare il livello in memoria a livello di cluster.

Il livello in memoria funziona come segue:

  • Inserimento dei dati nel livello di memoria: il livello in memoria offre un comportamento di caching read-through Una riga viene inserita nel livello di memoria con le operazioni di lettura tramite un profilo dell'applicazione configurato per il livello in memoria. Un'operazione di scrittura da qualsiasi profilo dell'applicazione aggiorna il livello di memoria se i dati della riga sono già presenti nel livello in memoria.
  • Criteri di eliminazione e invalidazione: il livello in memoria utilizza l'eliminazione LRU (Least Recently Used) a livello di riga e applica un criterio di invalidazione TTL (Time to Live ) per massimizzare il rapporto di hit del livello in memoria.
  • 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 ricevuto, 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 standard di Bigtable 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 correnti. Per mantenere queste prestazioni, nel livello di memoria risiedono solo le versioni più recenti di una riga con timestamp. Le richieste per le versioni precedenti dei dati, note anche come celle storiche, ignorano automaticamente il livello di memoria e vengono gestite dall'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 sporadico. Questa architettura ibrida consente a Bigtable di fornire un modello di archiviazione coerente su tutti i livelli di archiviazione, consentendoti di accedere ai dati tramite la stessa interfaccia semantica, indipendentemente dal fatto che risiedano fisicamente nella RAM o nell'archiviazione permanente. Con il livello in memoria di Bigtable abilitato, mantieni la coerenza di lettura dopo scrittura a livello di cluster.

Scalabilità verticale

L'abilitazione del livello in memoria consente a ogni nodo di utilizzare la scalabilità 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 in 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 la capacità massima del livello in memoria viene raggiunta 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.

La 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. La scalabilità verticale oltre le 40.000 letture al secondo di base viene fatturata applicando un moltiplicatore al costo orario del nodo. Per ulteriori informazioni, consulta prezzi e limiti.

Limitazioni

Si applicano le seguenti limitazioni al livello in memoria:

  • 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 dell'applicazione con livello in memoria supportano solo il routing a cluster singolo.
  • Il livello in memoria limita la dimensione della riga a 1 MiB per chiave di riga. Bigtable legge le righe che superano questo limite dall'archivio permanente.
  • Il livello in memoria richiede le seguenti versioni delle librerie client Bigtable :

    • Java versione 2.77.0 o successive
    • BOM versione 26.80.0 o successive
    • Go versione 1.52.0 o successive

    Non sono supportate altre librerie client.

  • I cluster con le chiavi di crittografia gestite dal cliente (CMEK) abilitate non supportano il livello in memoria.

  • Il livello in memoria è limitato a un massimo di 10 nodi per cluster.

Passaggi successivi