Visão geral da camada na memória
O nível na memória é uma configuração no nível do cluster que usa nós especializados. Antes de ler esta página, entenda instâncias, clusters e nós. Também recomendamos que você se familiarize com as limitações.
O Bigtable na memória é um nível de memória integrado como parte do nó do Bigtable, que permite o escalonamento de dados otimizado e sem problemas com base em padrões de acesso e necessidades de desempenho, tudo por uma única API. Usando o acesso direto à memória remota (RDMA), a camada na memória do Bigtable reduz significativamente os tempos de resposta, mitiga os pontos de acesso e garante alta capacidade de processamento para dados sensíveis à latência. Para mais informações, consulte Entender o desempenho.
Quando usar na memória
Recomendamos que você ative o nível na memória para os seguintes casos de uso:
- Requisitos de latência inferior a um milissegundo: cargas de trabalho que exigem latências de leitura inferiores a 1 ms, geralmente resolvidas com um banco de dados com uma solução de cache autogerenciada.
- Leituras de pontos de alta capacidade de processamento: aplicativos com requisitos de capacidade de processamento de tráfego de leitura alto em subconjuntos específicos de dados.
- Mitigação de hotspots: cargas de trabalho de alta capacidade de processamento que podem incluir picos de tráfego ou hotspots em chaves de linha específicas.
- Otimização de custos: cenários em que você quer reduzir o número de nós do Bigtable descarregando altos volumes de leitura para um nível mais econômico na memória.
Como funciona o nível na memória
O suporte na memória é fornecido por nós de armazenamento híbrido. Esses nós especializados estendem a desagregação de computação e armazenamento do Bigtable para incluir uma camada de memória com capacidade de processamento escalonável verticalmente. A opção na memória pode levar até 30 minutos para provisionar os nós especializados. Durante esse período, o Bigtable continua veiculando tráfego do armazenamento persistente.
É possível ativar o nível na memória no nível do cluster.
O nível na memória funciona da seguinte maneira:
- Como receber dados no nível de memória: a memória oferece comportamento de armazenamento em cache read-through. Uma linha entra na camada de memória com operações de leitura por um perfil de aplicativo que você configura para a memória. Uma operação de gravação de qualquer perfil de aplicativo atualiza a camada de memória se os dados da linha já estiverem na camada na memória.
- Políticas de remoção e invalidação: na memória, usa a remoção do menos recentemente usado (LRU) no nível da linha e uma política de invalidação de time to live (TTL) de 15 minutos.
- Armazenamento em cache negativo: a memória lembra se um recurso está faltando por um período para evitar sobrecarga no back-end.
- Segurança: a memória oferece suporte à criptografia em repouso e em trânsito (TLS).
- Replicação: em uma instância de vários clusters, os níveis de memória de clusters diferentes não estão sincronizados. Como cada nível de memória determina de forma independente quais dados carregar na memória com base no tráfego de leitura que recebe, diferentes clusters podem ter chaves de linha diferentes nos níveis de memória. O Bigtable carrega dados na memória da camada de SSD do cluster local. Uma gravação em uma linha acaba atualizando-a em todos os níveis de memória em que ela está presente, seguindo o modelo padrão de replicação do Bigtable de consistência eventual.
- Escalonamento automático vertical: a camada na memória oferece suporte ao escalonamento automático vertical no nível do nó, que funciona com o escalonamento automático do Bigtable.
O nível na memória é otimizado para acesso de alto desempenho aos dados atuais. Para manter esse desempenho, apenas as versões mais recentes de uma linha com carimbo de data/hora residem na camada de memória. As solicitações de versões anteriores de dados, também conhecidas como células históricas, ignoram automaticamente o nível de memória e são atendidas pelo armazenamento permanente.
Coerência de dados
O Bigtable garante que os dados na memória sejam consistentes com os dados permanentes no SSD ou no nível de armazenamento de acesso infrequente. Essa arquitetura híbrida permite que o Bigtable ofereça um modelo de armazenamento consistente em todas as camadas, permitindo que você acesse seus dados pela mesma interface semântica, independente de onde eles estejam fisicamente (RAM ou armazenamento permanente). Com a memória ativada no Bigtable, você mantém a consistência de leitura das gravações no nível do cluster.
Escalonamento vertical
Ao ativar o nível na memória, cada nó pode usar o escalonamento vertical para modificar a capacidade de processamento na memória. Cada nó inclui 8 GB de RAM para o nível na memória e começa com uma capacidade básica de 40.000 leituras por segundo. Para gerenciar picos no tráfego de leitura pontual, os nós podem reduzir o escalonamento horizontal automaticamente em incrementos de 40.000 leituras por segundo, atingindo um máximo de 120.000 leituras por segundo por nó.
Esse recurso de escalonamento vertical se integra ao escalonamento automático do Bigtable. Se a capacidade máxima na memória for atingida em todos os nós do cluster e o escalonamento automático estiver ativo, o Bigtable vai provisionar automaticamente mais nós para aumentar ainda mais a capacidade de processamento na memória.
O escalonamento vertical em um nó se aplica apenas a leituras na memória por segundo e funciona com ou sem o escalonamento automático no nível do cluster ativado. O escalonamento vertical além da base de 40.000 leituras por segundo é faturado aplicando um multiplicador ao custo por hora do nó. Para mais informações, consulte preços e limites.
Limitações
As seguintes limitações se aplicam ao nível na memória:
- O armazenamento na memória exige SSD.
- A leitura na memória só aceita operações de leitura pontual de linha única.
- Na memória, não há serviço de verificações de dados nem suporte a consultas SQL.
- Os perfis de app na memória só são compatíveis com roteamento de cluster único.
- Os limites na memória restringem o tamanho da linha a 1 MiB por chave de linha. O Bigtable lê do armazenamento permanente as linhas que excedem esse limite.
- Na memória, é necessário ter a versão 2.77.0 ou mais recente da biblioteca de cliente do Bigtable para Java ou a versão 26.80.0 ou mais recente do BOM.
- Os clusters de chaves de criptografia gerenciadas pelo cliente (CMEK) não são compatíveis com a memória.
A seguir
- Saiba como ativar o nível na memória.