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 nível na memória do Bigtable é um nível de memória integrado que faz parte do nó do Bigtable que permite a classificação de dados em níveis otimizada para custos e sem interrupções com base em padrões de acesso e necessidades de desempenho, tudo por uma única API. Usando o acesso direto à memória remota (RDMA, na sigla em inglês), a camada na memória do Bigtable reduz significativamente os tempos de resposta, mitiga 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 o nível na memória

Recomendamos que você ative o nível na memória para os seguintes casos de uso:

  • Requisitos de latência abaixo de milissegundos: cargas de trabalho que exigem latências de leitura inferiores a 1 ms, normalmente resolvidas ao colocar uma solução de cache autogerenciada na frente de um banco de dados.
  • Leituras de pontos de alta capacidade de processamento: aplicativos com requisitos de capacidade de processamento de tráfego de leitura altos em subconjuntos específicos de dados.
  • Mitigação de pontos de acesso: cargas de trabalho de alta capacidade de processamento que podem incluir picos de tráfego ou pontos de acesso 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 transferindo altos volumes de leitura para um nível na memória mais econômico.

Como funciona o nível na memória

O suporte à camada 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 um nível de memória com capacidade de processamento escalonável verticalmente. O Bigtable pode levar até 30 minutos para provisionar os nós de nível especializado na memória. Durante esse período, o Bigtable continua atendendo ao tráfego do armazenamento permanente.

É possível ativar a camada na memória no nível do cluster.

A camada na memória funciona da seguinte maneira:

  • Como receber dados na camada de memória: a camada na memória oferece comportamento de armazenamento em cache de leitura. Uma linha entra na camada de memória com operações de leitura por um perfil de app que você configura para a camada na memória. Uma operação de gravação de qualquer perfil de aplicativo atualiza o nível de memória se os dados da linha já estiverem no nível na memória.
  • Políticas de remoção e invalidação: o nível na memória usa a remoção menos recentemente usada (LRU, na sigla em inglês) no nível da linha e aplica uma política de invalidação de time to live (TTL) para maximizar a proporção de ocorrências do nível na memória.
  • Armazenamento em cache negativo: o nível na memória lembra se um recurso está ausente por um período para evitar a sobrecarga do back-end.
  • Segurança: o nível na 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 maneira independente quais dados serão carregados na memória com base no tráfego de leitura que recebe, clusters diferentes podem conter chaves de linha diferentes nos níveis de memória. O Bigtable carrega dados na memória do nível 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 de replicação padrão do Bigtable de consistência posterior.
  • Escalonamento automático vertical: o nível na memória oferece suporte ao escalonamento automático vertical no nível do nó, que funciona em conjunto com o escalonamento automático do Bigtable.

A camada na memória é otimizada para acesso de alto desempenho aos dados atuais. Para manter esse desempenho, apenas as versões mais recentes com carimbo de data/hora de uma linha residem no nível 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 disponibilizadas pelo armazenamento permanente.

Coerência de dados

O Bigtable garante que os dados da camada na memória sejam consistentes com os dados persistentes no SSD ou na camada de armazenamento de acesso infrequente. Essa arquitetura híbrida permite que o Bigtable forneça um modelo de armazenamento consistente em todos os níveis de armazenamento, permitindo que você acesse seus dados pela mesma interface semântica, independentemente de eles residirem fisicamente na RAM ou no armazenamento permanente. Com a camada na memória do Bigtable ativada, você mantém a consistência de leitura das gravações no nível do cluster.

Escalonamento vertical

Ativar o nível na memória permite que cada nó use o escalonamento vertical para modificar a capacidade de processamento do nível na memória. Com o nível na memória ativado, cada nó começa com uma capacidade base de 40.000 leituras por segundo. Para gerenciar picos no tráfego de leitura de pontos, os nós podem ser escalonados 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 do nível na memória for atingida em todos os nós do cluster e o escalonamento automático estiver ativo, o Bigtable provisionará automaticamente mais nós para aumentar ainda mais a capacidade do nível na memória.

O escalonamento vertical em um nó se aplica apenas às leituras por segundo da camada na memória e funciona independentemente de o escalonamento automático no nível do cluster estar ativado ou não. O escalonamento vertical além das 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:

  • A camada na memória requer armazenamento SSD.
  • O nível na memória só aceita operações de leitura de ponto único no nível da linha.
  • O nível na memória não exibe verificações de dados nem oferece suporte a consultas SQL.
  • Os perfis de app na camada na memória só aceitam roteamento de cluster único.
  • O nível na memória limita o tamanho da linha a 1 MiB por chave de linha. O Bigtable lê as linhas que excedem esse limite do armazenamento permanente.
  • O nível na memória requer as seguintes versões das bibliotecas de cliente do Bigtable:

    • Java versão 2.77.0 ou mais recente
    • BOM versão 26.80.0 ou mais recente
    • Go versão 1.52.0 ou mais recente

    Outras bibliotecas de cliente não são compatíveis.

  • Os clusters que têm chaves de criptografia gerenciadas pelo cliente (CMEK) ativadas não são compatíveis com o nível na memória.

  • A camada na memória é limitada a no máximo 10 nós por cluster.

A seguir