Nesta página, apresentamos o particionamento geográfico e explicamos como ele funciona no Spanner.
O Spanner oferece configurações de instância regionais e multirregionais para você replicar os dados em diferentes localizações geográficas. Com o particionamento geográfico, você segmenta mais os dados brutos e os armazena na tabela de banco de dados em diferentes configurações de instância.
Benefícios e casos de uso
Com o particionamento geográfico, é possível particionar linhas no banco de dados, o que oferece 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 distribuídos geograficamente, 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 do posicionamento. Para mais informações, consulte compatibilidade de residência de dados para bancos de dados que usam particionamento geográfico.
Veja 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 de instância principal chamada
default. Se você não criar outras partições de instância, todos os objetos do banco de dados serão armazenados na partição padrão, que está no mesmo local que a configuração da instância. Se você quiser particionar
os dados em um banco de dados, crie mais partições de instância na
instância.
Para usar o particionamento geográfico em um banco de dados:
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.
Crie seu 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.
Crie posições no banco de dados que estejam associadas às partições de instância adicionais. Seu banco de dados pode interagir com as partições de instância adicionais que foram criadas na mesma instância.
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 estão. 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 corresponde ao nome de uma das posições criadas pelo usuário definidas 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 as partições, os posicionamentos e as tabelas de posicionamento de instâncias:
Local da partição da instância: selecione com cuidado as regiões de partição da instância que oferecem mais benefícios para seu aplicativo.
É preciso 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 padrão multirregional 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 padrão multirregional.
Número de partições de instância: um número excessivo de partições de instância pode levar a sobrecarga, enquanto um número muito pequeno pode não oferecer benefícios suficientes. É possível criar no máximo 10 partições por instância.
Limitações
As limitações a seguir se aplicam durante a versão de pré-lançamento e estão sujeitas a alterações ou remoção após a versão de GA ou depois:
- 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.
- 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 base. Por exemplo, em
test-instance, não é possível criar duas partições,partition-1epartition-2, que usemus-central1como a configuração de partição da instância. - Para cada nó na partição da 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 console do Google Cloud .
- Para cada nó na partição da 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 somente leitura assimétrico em partições de instância não padrão.
- Não é possível mover a partição da instância para uma configuração de instância diferente.
- Não é possível mover uma instância que tenha bancos de dados usando posições adicionais que apontem para a partição de instância padrão.
- Os fluxos de alterações não são compatíveis com dados particionados.
- Se você usar uma instrução DML
INSERTouDELETEpara uma tabela de posicionamento, essa instrução precisará ser a única na transação. - O modo de transação de leitura e 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áusulaWHERE, 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 e gravação separada, faça referência às 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 uma posição. Em vez disso, é possível criar uma nova posição, usar a DML particionada para atualizar a posição dos dados para uma nova posição e, em seguida, remover a posição original.
Controle de acesso com o IAM
É necessário 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ê só precisa visualizar
as partições da instância, é necessário ter a permissão spanner.instancePartitions.list
ou spanner.instancePartitions.get. Para mais informações, consulte a Visão geral do IAM.
Para saber como conceder permissões do IAM do Spanner, consulte Aplicar permissões do IAM.
Monitoramento
O Spanner fornece várias métricas para ajudar a monitorar as partições de instância. Depois de criar uma partição de instância adicional, você vai ver um filtro suspenso extra para Partições de instância na página "Insights do sistema" no console do Google Cloud . 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 seus recursos do Spanner, consulte Monitorar instâncias com o Cloud Monitoring.
Backups
É possível criar backups completos para bancos de dados que usam 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 com particionamento geográfico no mesmo local de posicionamento dos dados originais no momento da versão do backup.
Para restaurar backups que contêm dados de particionamento geográfico, 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 da instância para você. O escalonador automático gerenciado reage a mudanças na carga de trabalho ou nas necessidades de armazenamento da partição da instância à medida que a carga aumenta ou diminui. O escalonador automático gerenciado aumenta a escala vertical, adicionando capacidade de computação à partição da instância, ou reduz a escala vertical, removendo a capacidade de computação da partição da instância.
Preços
Não há cobrança adicional pelo uso do particionamento geográfico. Você vai receber a cobrança do preço padrão do Spanner pela quantidade de capacidade de computação que sua instância usa e pela quantidade de armazenamento que seu banco de dados usa.
Para mais informações, consulte os preços do Spanner.
A seguir
- Saiba como criar e gerenciar partições de instância.
- Saiba como criar e gerenciar posicionamentos de dados.