Panoramica del livello in memoria

Il livello in-memory è 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 consente un tiering dei dati fluido e ottimizzato in termini di costi in base ai pattern di accesso e alle esigenze di prestazioni, il tutto tramite un'unica API. Utilizzando l'accesso diretto alla memoria da 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ù, consulta Informazioni sul rendimento.

Quando utilizzare il livello in memoria

Ti consigliamo di attivare il livello in-memory per i seguenti casi d'uso:

  • Requisiti di latenza inferiori al millisecondo: workload che richiedono latenze di lettura inferiori a 1 ms, in genere gestite anteponendo al database una soluzione di cache autogestita.
  • Letture puntuali con throughput elevato: applicazioni con requisiti di throughput del traffico di lettura elevati su sottoinsiemi di dati specifici.
  • 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 eseguendo l'offload di volumi di lettura elevati in un livello in-memory 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 throughput scalabile verticalmente. Bigtable può impiegare fino a 30 minuti per eseguire il provisioning dei nodi del livello in-memory specializzato. Durante questo periodo, Bigtable continua a gestire il traffico dall'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 in memoria: il livello in memoria offre un comportamento di memorizzazione nella cache di lettura. Una riga entra nel livello di memoria con operazioni di lettura tramite un profilo dell'app 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.
  • Policy di espulsione e annullamento della convalida: il livello in memoria utilizza l'espulsione Least Recently Used (LRU) a livello di riga e applica una policy di annullamento della convalida del tempo di attività (TTL) per massimizzare l'hit ratio del livello in memoria.
  • Memorizzazione nella cache negativa: il livello in memoria ricorda se una risorsa non è presente per un periodo di tempo per evitare il sovraccarico del backend.
  • Sicurezza: il livello in-memory supporta la crittografia at-rest e in transito (TLS).
  • Replica: in un'istanza multi-cluster, i livelli di memoria dei diversi cluster 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 propri livelli di memoria. Bigtable carica i dati in memoria dal livello SSD del cluster locale. Una scrittura in una riga ne aggiorna il contenuto 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-memory 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 con timestamp di una riga 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 gestite dallo spazio di archiviazione permanente.

Coerenza dei dati

Bigtable garantisce che i dati del livello in memoria siano coerenti con i dati persistenti 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, permettendoti di accedere ai tuoi 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 delle scritture a livello di cluster.

Scalabilità verticale

L'abilitazione del livello in memoria consente a ciascun nodo di utilizzare la scalabilità verticale per modificare la capacità di throughput del livello in memoria. Con il livello in-memory abilitato, ogni nodo 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, fino a 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-memory 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-memory.

La scalabilità verticale su un nodo si applica solo alle letture al secondo del livello in memoria e funziona indipendentemente dall'abilitazione o meno della scalabilità automatica a livello di cluster. La 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 i prezzi e i limiti.

Limitazioni

Al livello in-memory si applicano le seguenti limitazioni:

  • Il livello in memoria richiede l'archiviazione SSD.
  • Il livello in memoria supporta solo operazioni di lettura di singoli punti a livello di riga.
  • Il livello in-memory 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 le seguenti versioni delle librerie client di Bigtable:

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

    Altre librerie client non sono supportate.

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

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

Passaggi successivi