Visão geral do particionamento geográfico

Esta página apresenta o particionamento geográfico e explica como ele funciona no Spanner.

O Spanner oferece configurações de instâncias regionais e multirregionais para você replicar os dados em diferentes locais geográficos. O particionamento geográfico permite segmentar e armazenar linhas na tabela de banco de dados em diferentes configurações de instâncias.

Benefícios e casos de uso

O particionamento geográfico permite particionar linhas no banco de dados, oferecendo os seguintes benefícios:

  • Latência regional em um banco de dados global: ao usar o particionamento geográfico, o Spanner gerencia seus dados em um único banco de dados unificado em locais geograficamente distribuídos, garantindo baixa latência para acesso regional. O uso do particionamento geográfico simplifica as operações e reduz a complexidade em comparação com o gerenciamento de vários bancos de dados fragmentados.
  • Recursos de banco de dados global: o particionamento geográfico oferece recursos de banco de dados como transações globais, movimentação de dados entre regiões e aplicação de exclusividade em regiões geográficas.
  • Conformidade com a residência de dados: o Spanner oferece compromissos de residência de dados no nível de posicionamento. Para mais informações, consulte Compatibilidade da residência de dados para bancos de dados que usam o particionamento geográfico.

Confira alguns casos de uso comuns:

  • Dados relacionados ao usuário: particionamento geográfico de dados relacionados ao usuário para processar e armazenar dados em uma região mais próxima do usuário.

  • Dados localizados: informações específicas do local, como trânsito e eventos especiais.

Como funciona o particionamento geográfico

Todas as instâncias do Spanner têm uma partição principal chamada default. Se você não criar outras partições de instância, todos os objetos de banco de dados serão armazenados na partição padrão, que está no mesmo local da configuração da instância. Se você quiser particionar os dados em um banco de dados, crie outras partições de instância.

Para usar o particionamento geográfico em um banco de dados:

  1. Crie outras partições de instância na sua instância. Essas partições de instância criadas pelo usuário têm a própria configuração (regional ou multirregional) e contagem de nós.

  2. Crie o banco de dados como faria normalmente. O banco de dados tem um posicionamento padrão associado à partição de instância padrão da instância.

  3. Crie posicionamentos no banco de dados associados às outras partições de instância. O banco de dados pode interagir com as outras partições de instância criadas na mesma instância.

  4. Crie tabelas de posicionamento que tenham um atributo de chave de posicionamento. Use a chave de posicionamento nas instruções DML para especificar em qual partição de instância os dados da linha residem. Se você criar tabelas sem posicionamento no banco de dados, o Spanner vai armazenar esses dados na partição de instância padrão.

A chave de posicionamento de cada linha em uma tabela de posicionamento precisa ser atribuída a um dos seguintes:

  • Um valor que corresponda ao nome de um dos posicionamentos criados pelo usuário definidos para esse banco de dados; ou

  • O valor da chave de posicionamento, default, que armazena os dados no posicionamento padrão.

Para instruções sobre como usar partições de instância, consulte Criar e gerenciar partições de instância.

Considerações importantes

Considere o seguinte antes de criar partições de instância, posicionamentos e tabelas de posicionamento:

  • Local da partição de instância: selecione cuidadosamente as regiões de partição de instância que oferecem mais benefícios para seu aplicativo.

    • É necessário criar partições de instância em uma instância com uma configuração de instância multirregional.

    • Para melhorar a latência, recomendamos que você selecione um local de partição de instância multirregional padrão que tenha regiões de leitura/gravação e somente leitura que cubram todas as jurisdições exigidas pelo aplicativo. Em seguida, crie outras partições de instância (que podem ser regionais) com regiões líderes que correspondam às regiões na partição de instância multirregional padrão.

  • Número de partições de instância: muitas partições de instância podem gerar sobrecarga, enquanto poucas podem não oferecer benefícios suficientes. É possível criar no máximo dez partições de instância por instância.

Limitações

As seguintes limitações se aplicam durante a versão de prévia e estão sujeitas a alterações ou remoção após a versão GA ou posterior:

  • A partição de instância padrão precisa ser uma configuração multirregional.
  • A partição de instância adicional precisa ser uma configuração multirregional.
  • Não é possível criar uma partição de instância usando uma configuração birregional.
  • Não é possível criar partições de instância única.
  • Para cada partição de instância, a capacidade de computação precisa ser de pelo menos um nó (1.000 unidades de processamento).
  • Para uma determinada instância, não é possível criar mais de uma partição de instância que use a mesma configuração de instância de base. Por exemplo, em test-instance, não é possível criar duas partições, partition-1 e partition-2, que usem us-central1 como a configuração de partição de instância.
  • Para cada nó na partição de instância, é possível colocar no máximo 100 milhões de linhas de posicionamento. É possível conferir o número de linhas de posicionamento que foram colocadas em cada uma das partições de instância na página "Partições de instância" do Google Cloud console.
  • Para cada nó na partição de instância de destino, o Spanner pode mover cerca de 10 linhas de posicionamento por segundo.
  • Não é possível criar backups incrementais ou copiar o backup.
  • Não é possível ativar o escalonamento automático de somente leitura assimétrica em partições de instância não padrão.
  • Não é possível mover a partição de instância para uma configuração de instância diferente.
  • Não é possível mover uma instância que tenha bancos de dados usando posicionamentos adicionais que apontam para a partição de instância padrão.
  • Os fluxos de alterações não oferecem suporte a dados particionados.
  • Se você usar uma instrução DML INSERT ou DELETE para uma tabela de posicionamento, essa instrução precisará ser a única na transação.
  • O modo de transação de leitura/gravação permite referenciar apenas as chaves primárias de uma tabela de posicionamento na cláusula WHERE. Se você precisar referenciar uma coluna de chave não primária de uma tabela de posicionamento na cláusula WHERE, use uma das seguintes alternativas:
    • Se você precisar apenas de acesso somente leitura, mude para o modo de transação somente leitura.
    • Se você precisar fazer atualizações, use o modo de transação DML particionada ou encontre as chaves primárias em uma consulta de transação somente leitura e, em seguida, em uma transação de leitura/gravação separada, referencie as chaves primárias retornadas na cláusula WHERE.
  • Não é possível usar esquemas nomeados.
  • Não é possível criar partições de instância em instâncias de teste sem custo financeiro ou instâncias de tamanho granular menores que um nó (1.000 unidades de processamento).
  • Não é possível alterar um posicionamento. Em vez disso, você pode criar um novo posicionamento, usar DML particionada para atualizar o posicionamento dos dados para um novo posicionamento e, em seguida, descartar o posicionamento original.
  • A partição de instância padrão precisa ser uma configuração multirregional.

Controle de acesso com o IAM

Você precisa ter as permissões spanner.instancePartitions.create, spanner.instancePartitions.update e spanner.instancePartitions.delete para criar e gerenciar partições de instância. Se você precisar apenas visualizar as partições de instância, precisará ter a permissão spanner.instancePartitions.list ou spanner.instancePartitions.get. Para mais informações, consulte a Visão geral do IAM.

Para informações sobre como conceder permissões do IAM do Spanner, consulte Aplicar permissões do IAM.

Monitoramento

O Spanner oferece várias métricas para ajudar você a monitorar as partições de instância. Depois de criar uma partição de instância adicional, você verá um filtro suspenso adicional para Partições de instância na página "Insights do sistema" do Google Cloud console. A seleção padrão é mostrar métricas para Todas as partições de instância. Use o menu suspenso para filtrar as métricas de uma partição de instância específica.

Para saber mais sobre como monitorar os recursos do Spanner, consulte Monitorar instâncias com o Cloud Monitoring.

Backups

É possível criar backups completos para bancos de dados que usam o particionamento geográfico. Não é possível excluir a partição de instância se ela for usada em um backup. Para mais informações, consulte Criar backups.

Observações sobre o uso:

  • O Spanner armazena backups de dados particionados geograficamente no mesmo local de posicionamento dos dados originais no momento da versão do backup.
  • Para restaurar backups que contêm dados particionados geograficamente, a instância de destino precisa atender às seguintes condições:

    • A instância de destino precisa usar os mesmos nomes de partição de instância do backup original.
    • Cada partição de instância na instância de destino precisa usar a mesma configuração de instância do backup original.

Escalonador automático gerenciado

É possível ativar o escalonador automático gerenciado em partições de instância. Quando você ativa o escalonador automático gerenciado, o Spanner ajusta automaticamente o tamanho da partição de instância. O escalonador automático gerenciado reage a mudanças na carga de trabalho ou nas necessidades de armazenamento da partição de instância à medida que a carga aumenta ou diminui. O escalonador automático gerenciado aumenta, adicionando capacidade de computação à partição de instância, ou diminui, removendo a capacidade de computação da partição de instância.

Preços

Não há cobrança adicional pelo uso do particionamento geográfico. Você recebe a cobrança padrão do Spanner pela quantidade de capacidade de computação usada pela instância e pela quantidade de armazenamento usada pelo banco de dados.

Para mais informações, consulte os preços do Spanner.

A seguir