A Global Table sincroniza dados automaticamente entre várias regiões para oferecer recuperação de desastres entre regiões. Utilize a Global Table quando seu negócio entre regiões exigir acesso de baixa latência, alta disponibilidade, leituras e gravações na réplica mais próxima e failover de recuperação de desastres.
Como funciona
A Global Table utiliza a tecnologia de replicação multirregião do Tablestore para estabelecer canais de sincronização de dados entre instâncias em múltiplas regiões. Quando os dados de uma tabela em uma região são alterados, o sistema sincroniza a mudança automaticamente com as tabelas de réplica em outras regiões, garantindo a consistência dos dados entre regiões. As réplicas de tabela suportam expansão e remoção dinâmica em diferentes instâncias e regiões.
O processo de replicação ocorre automaticamente em segundo plano, sem necessidade de intervenção manual. Esse mecanismo atinge um objetivo de ponto de recuperação (RPO) aceitável, mantendo a consistência dos dados e atendendo às necessidades de recuperação de desastres e continuidade de negócios da maioria dos sistemas.
No uso diário, usuários e aplicações podem ler e gravar na réplica mais próxima, reduzindo a latência de acesso. Em caso de falha regional ou desastre grave, como interrupção de data center ou desastre natural, inicie rapidamente um failover de recuperação de desastres com base em múltiplas réplicas para reconstruir aplicações e dados críticos, assegurando a continuidade do negócio.

A Global Table oferece os seguintes recursos:
Recuperação de desastres entre regiões — Réplicas de tabelas entre regiões. Se ocorrer uma falha no nível da região, as réplicas em outras regiões continuam a fornecer o service.
Acesso de baixa latência — Usuários ou aplicações leem e gravam na réplica mais próxima, diminuindo a latência das operações.
Consistência eventual — Adota um modelo de consistência eventual. Múltiplas réplicas são sincronizadas de forma assíncrona e os dados tornam-se consistentes eventualmente.
Resolução automática de conflitos — O sistema usa o algoritmo LWW (Last Write Wins) para resolver automaticamente conflitos de gravação simultâneos entre regiões.
Modos de sincronização
A Global Table suporta dois modos de sincronização. Selecione o modo ao criar a Global Table.
Modo ativo-passivo — Apenas a réplica primária aceita gravações por meio do endpoint de sua instância. Todas as outras réplicas são somente leitura, exceto durante um failover ativo-passivo. Use este modo para recuperação de desastres entre regiões e para escalar a capacidade de leitura com réplicas somente leitura.
Modo ativo-ativo — Múltiplas réplicas aceitam gravações através de seus respectivos endpoints de instância. Defina o modo de leitura/gravação para cada instância de destino. Utilize este modo quando precisar gravar em várias regiões e manter um conjunto de dados global. Ambos os modos usam consistência eventual: as réplicas sincronizam de forma assíncrona e os dados tornam-se consistentes eventualmente. No modo ativo-ativo e durante um failover ativo-passivo, gravações simultâneas na mesma linha são resolvidas pelo algoritmo LWW. Para mais informações, consulte Limits.
Cenários
A Global Table é adequada para cenários de negócios que exigem alta disponibilidade, leituras e gravações entre regiões com baixa latência e recuperação de desastres entre regiões. Os cenários típicos incluem:
Backup entre regiões — Caso a região primária falhe, alterne para a região secundária para continuar fornecendo services de leitura e garantir a continuidade dos negócios. Por exemplo, as tabelas de usuários primária e secundária de um sistema de e-commerce são armazenadas no Tablestore nas regiões china (Hangzhou) e china (Beijing). Se a região china (Hangzhou) falhar, a região china (Beijing) continua a fornecer services de consulta. Modo recomendado: ativo-passivo.
Gravar em uma região, ler em várias regiões — Grave dados na região mais próxima e leia da réplica mais próxima em outras regiões. Ideal para acelerar o acesso remoto. Por exemplo, as gravações primárias de um service são direcionadas à região china (Hangzhou), e réplicas somente leitura são implantadas nas regiões china (Beijing) e china (Shanghai) para atender à demanda por leituras entre regiões de baixa latência. Modo recomendado: ativo-passivo com réplicas somente leitura.
Gravar em várias regiões, ler globalmente — A gravação em múltiplas regiões cria um conjunto de dados global e fornece leituras eventualmente consistentes. Indicado para cenários que exigem acesso a um conjunto de dados global, como distribuição entre regiões de perfis de usuários de jogos e sistemas de mensagens sociais. Modo recomendado: ativo-ativo.
Limites
Revise os limites abaixo antes de criar uma Global Table. Alguns limites determinam se a criação da Global Table será bem-sucedida. Para mais informações, consulte Limits.
Regiões suportadas — A Global Table está disponível nas regiões china (Hangzhou), china (Shanghai), china (Qingdao), china (Beijing), china (Zhangjiakou), china (Hohhot), china (Ulanqab), china (Shenzhen), china (Guangzhou) e china (Chengdu). Devido a requisitos de conformidade de dados e outros motivos, não é possível criar uma Global Table entre regiões de países diferentes. Para verificar as regiões suportadas pela Global Table, consulte Supported regions.
Tipos de tabela — Apenas tabelas de dados são suportadas. A sincronização entre regiões de tabelas de séries temporais, índices de pesquisa e índices secundários não é suportada.
Número de réplicas — Uma única Global Table suporta até 10 regiões.
Latência de sincronização — O RPO de sincronização geralmente fica dentro de alguns segundos, dependendo das regiões, condições de rede e volume de dados. O service não oferece garantias de confiabilidade para a latência de transmissão de dados.
Configuração imutável — Não é possível modificar as propriedades de uma Global Table, como a configuração de TTL ou colunas predefinidas.
Tabelas em modo de coluna — As tabelas de dados existentes são criadas no modo de coluna por padrão e não podem ser atualizadas diretamente para uma Global Table.
Recriação de uma Global Table — Ao utilizar o recurso Global Table pela segunda vez, tabelas duplicadas existentes não podem restabelecer o relacionamento de sincronização. Exclua primeiro os índices de pesquisa e os índices secundários, em seguida exclua a tabela e então crie uma Global Table. O segundo uso refere-se ao cenário em que uma tabela de dados que anteriormente fazia parte de uma Global Table, mas cujo relacionamento de sincronização foi removido, é criada novamente como uma Global Table.
Risco de sobrescrita de dados — Nas gravações diárias no modo ativo-ativo e durante um failover ativo-passivo, gravações síncronas e gravações de usuários podem modificar a mesma linha de dados simultaneamente. A linha com o número de versão mais alto sobrescreve a linha com o número de versão mais baixo (LWW), e os dados da gravação de versão inferior são sobrescritos ou descartados.
Pré-requisitos
Instâncias criadas tanto na região primária quanto em cada região de réplica de destino. Para instruções, consulte Create an instance.
A tabela base deve atender aos requisitos de configuração da Global Table. Para usar uma tabela de dados existente como tabela base, certifique-se de que ela cumpra os requisitos listados na tabela a seguir.
|
Parâmetro |
Valor necessário para uma Global Table |
Descrição |
|
Time to live |
-1 |
Os dados nunca expiram. |
|
Max versions |
1 |
O número máximo de versões é 1. |
|
Row versioning |
Enabled |
Define a tabela para o modo de linha. Não é possível desativar a opção Enable Row Versioning após ativá-la. Após ativar o versionamento de linha, aplicam-se as seguintes limitações: uma única linha suporta até 256 colunas; não é possível especificar manualmente um número de versão ao gravar dados (o sistema o gera automaticamente); e cada operação Update lê primeiro a versão atual da linha, o que introduz uma pequena carga adicional de leitura. |
|
Max version offset |
MaxInt32 (2147483647) |
Define o deslocamento de versão para o valor máximo Int32, o que significa que não há limite. |
Tabelas existentes fora do modo de linha não suportam a criação de Global Tables. Para utilizar tal tabela, entre em contato com o suporte técnico para ativar esse recurso.
Criar uma Global Table
Crie a tabela base na região primária e depois converta-a em uma Global Table com regiões de réplica nas regiões de destino.
Etapa 1: Preparar a tabela base
Na região primária, crie uma tabela de dados para servir como base para a Global Table.
-
Acesse a página Instance Management.
Faça login no console do Tablestore.
Na barra de navegação superior, selecione um grupo de recursos e uma região.
Na página Overview, clique em um alias de instância ou clique em Manage Instance na coluna Actions da instância.
Na aba Instance Details, clique em Create Table.
Na caixa de diálogo Create Table, defina Data Table Name e Primary Key.
Ative a chave Advanced Settings e, em seguida, ative a chave Quick Set Global Table Dependency. O sistema configura automaticamente as dependências necessárias para a Global Table, conforme descrito em Prerequisites.
Em Data Table Name, insira
exampletable. Na seção Primary Key, adicione duas chaves primárias: defina o nome da primeira chave primária comouser_id, defina o tipo como String e configure-a como chave de partição; defina o nome da segunda chave primária comoregion_ide o tipo como String.Clique em Create.
Etapa 2: Criar a Global Table
Converta a tabela base em uma Global Table e adicione regiões de réplica. Após a criação da Global Table, o sistema cria automaticamente as tabelas de dados correspondentes nas regiões de réplica selecionadas e estabelece canais de sincronização de dados.
Na região primária, na aba Tables, clique em Create Global Table na coluna Actions da tabela base. Alternativamente, clique no nome da tabela de dados, acesse a aba Global Table e clique em Create Sync Relationship para continuar.
Na caixa de diálogo Create Global Table, defina os parâmetros com base no modo de sincronização escolhido.
Se já existir uma tabela de dados com o mesmo nome da Global Table na instância de destino, a criação da Global Table falhará.
Configurar modo ativo-passivo
Na área Current Resource, defina Global Sync Mode como Primary/Standby Mode (Cross-Region Replication).
Na área Target Table, selecione a região e o nome da instância de destino. É possível adicionar várias instâncias de destino de uma só vez. Após criar a Global Table, o sistema cria automaticamente as tabelas de destino nas instâncias das regiões selecionadas, com os mesmos nomes da tabela base atual. A permissão de leitura/gravação da instância de destino é Read-only.
Configurar modo ativo-ativo
Na área Current Resource, defina Global Sync Mode como Multi-Read Multi-Write (Cross-Region Replication).
Na área Target Table, selecione a região, o nome da instância e o modo de leitura/gravação da instância de destino. É possível adicionar várias instâncias de destino de uma só vez. Após criar a Global Table, o sistema cria automaticamente as tabelas de destino nas instâncias das regiões selecionadas, com os mesmos nomes da tabela base atual.
Clique em OK.
Para confirmar o sucesso, na caixa de diálogo Create Global Table, clique em View List. A nova Global Table aparecerá na aba Global Table.
Etapa 3: Verificar e usar a Global Table
Após criar a Global Table, verifique a sincronização de dados realizando testes básicos de leitura e gravação.
-
Gravar dados de teste — Grave dados de teste na tabela de dados da região primária.
Na região primária, na aba Tables, clique em Query na coluna Actions da tabela base.
Na aba Query Data, clique em Insert.
Na caixa de diálogo Insert, defina as chaves primárias, clique em Add Column para adicionar um atributo e, em seguida, clique em OK.
Verificar a sincronização de dados — Aguarde de 1 a 3 segundos e consulte os dados em uma região de réplica.
Na região primária, na aba Tables, clique em Query na coluna Actions da tabela base.
Na aba Global Table da tabela base, clique no nome de uma tabela de réplica em uma região de réplica.
Na aba Query Data da tabela de réplica, visualize os dados sincronizados da tabela base. A tabela de réplica contém os mesmos dados que você gravou na região primária, confirmando que a sincronização foi bem-sucedida.
Leituras e gravações na Global Table
As operações data read e data write nas tabelas de réplica de uma Global Table são idênticas às de uma tabela de dados padrão.
Para leituras reais, obtenha o endpoint da instância onde a tabela de réplica correspondente está localizada.
No modo ativo-passivo, apenas a réplica primária permite gravações através do endpoint de sua instância. Todas as outras réplicas são somente leitura, exceto durante um failover ativo-passivo.
No modo ativo-ativo, todas as réplicas graváveis permitem gravações através de seus respectivos endpoints de instância.
No modo ativo-ativo, gravações síncronas e gravações de usuários podem modificar a mesma linha simultaneamente. A linha com o número de versão mais alto sobrescreve a gravação de versão inferior (LWW), e os dados da versão inferior são descartados. Para mais informações, consulte Limits.
Gerenciar uma Global Table
Alternar a réplica primária (modo ativo-passivo)
A alternância da réplica primária aplica-se apenas a Global Tables no modo ativo-passivo. Nesse modo, se a tabela de réplica primária falhar ou se for necessário trocar a região de gravação, defina outra tabela de réplica como a nova réplica primária para continuar fornecendo services.
Durante um failover, tanto a tabela de réplica primária atual quanto a tabela de réplica selecionada como nova primária ficam legíveis e graváveis, o que cria risco de inconsistência de dados. Confirme que os dados estão consistentes antes de alternar o caminho de gravação da aplicação. Gravações simultâneas são resolvidas pelo algoritmo LWW. Para mais informações, consulte Limits.
Na aba Global Table, clique em Switch to Primary Table na coluna Actions da tabela passiva.
Na caixa de diálogo Modify Primary/Standby Relationship, envie a tarefa de failover da tabela primária para iniciar a sincronização de dados. A sincronização continua por um período que depende de fatores como volume de dados e recursos do sistema.
Na etapa Data Synchronization, clique em Start Data Synchronization.
Na caixa de diálogo Primary/Standby Table Switch, clique em View Details para verificar o status de RPO da sincronização.
Confirme que os dados nas tabelas primária e passiva estão consistentes e, em seguida, clique em Confirm Write Endpoint Switch na coluna Sync Mode de qualquer tabela.
Na etapa Application Layer Write Path Switch, confirme que a sincronização foi concluída e que você alterou todos os endpoints de gravação em sua aplicação para o endpoint da nova primária. Em seguida, clique em Complete Switch.
Após alternar o caminho de gravação, confirme a troca da tabela primária o mais rápido possível. Isso desativa a capacidade de gravação da tabela primária original. Clique em View na coluna Sync Mode de qualquer tabela.
Na etapa Confirm Switch, clique em Switch Primary Table. Após o sucesso do failover, a réplica primária original fornece capacidade somente leitura, e a nova réplica primária fornece capacidade de leitura e gravação.
Para cancelar o failover da tabela ativo-passivo, clique em Cancel Primary Table Switch, conclua a confirmação de cancelamento e clique em OK na caixa de diálogo de confirmação.
Adicionar uma região global
Adicione uma ou mais regiões globais a uma Global Table.
Na aba Global Table, clique em Add Global Region na coluna Actions de uma tabela de réplica.
Na caixa de diálogo Add Global Region, selecione a região e o nome da instância de destino. Para adicionar várias regiões globais, clique em Add Instance e continue.
Clique em OK.
Se já existir uma tabela de dados com o mesmo nome da Global Table na instância de destino, a adição da região global falhará.
Editar as instâncias de destino (modo ativo-ativo)
Edite as instâncias de destino de uma Global Table para adicionar uma instância de destino ou alterar o modo de leitura/gravação de uma instância existente.
Na aba Global Table, clique em Edit na coluna Actions de uma tabela de réplica.
-
Na caixa de diálogo Edit Global Table, execute uma das seguintes operações:
Adicionar uma instância de destino — Selecione a região, o nome da instância e o modo de leitura/gravação da instância de destino. Para adicionar várias regiões globais, clique em Add Instance e continue.
Modificar o modo de leitura/gravação de uma instância — Selecione o modo de leitura/gravação de uma instância existente.
Clique em OK.
Se já existir uma tabela de dados com o mesmo nome da Global Table na instância de destino, a adição da região global falhará.
Remover o relacionamento de sincronização
Remover o relacionamento de sincronização interrompe a sincronização de dados de uma tabela de réplica. Para parar a sincronização de todas as regiões de uma Global Table, remova o relacionamento de sincronização de cada tabela de réplica separadamente. Para remover a sincronização apenas de uma região específica, execute a operação exclusivamente na tabela de réplica dessa região.
No modo ativo-passivo, você deve remover primeiro as tabelas passivas e, em seguida, a réplica primária.
Modo ativo-passivo
Na aba Global Table, use um dos seguintes métodos para iniciar a remoção do relacionamento de sincronização:
Remover uma única réplica — Clique em Remove Sync na coluna Actions de uma tabela de réplica.
Remover várias réplicas em lote — Selecione as tabelas de réplica a serem removidas e clique em Remove Sync abaixo da lista.
Antes de excluir uma tabela de dados, exclua manualmente seus índices de pesquisa associados. Caso contrário, a exclusão da tabela de dados falhará. Na caixa de diálogo de confirmação, clique em OK.
Modo ativo-ativo
Na aba Global Table, clique em Unsync na coluna Actions de uma tabela de réplica. Na caixa de diálogo de confirmação, clique em OK.
O sistema iniciará a remoção do relacionamento de sincronização. Aguarde a conclusão do processo.
Integração para desenvolvedores
É possível utilizar Global Tables por meio da Java SDK.
Melhores práticas
Siga estas melhores práticas ao aplicar a Global Table em um ambiente de produção:
Criar uma Global Table para uma tabela existente — As APIs originais de leitura e gravação permanecem inalteradas. Os dados são sincronizados automaticamente com a nova réplica, que pode compartilhar a carga de leitura.
Criar uma Global Table do zero — Finalize o esquema da tabela, crie a tabela base e, em seguida, crie a Global Table. Não é possível modificar o esquema de uma Global Table, portanto, certifique-se de que a tabela base passe em todos os testes antes de criar a Global Table.
Vincular dinamicamente uma nova réplica — Adicione novas réplicas dinamicamente enquanto usa uma Global Table, sem afetar as operações de leitura e gravação das réplicas existentes. A nova réplica contém os dados mais recentes da Global Table.
Desvincular uma réplica existente — Se uma tabela de réplica não for mais necessária, desvincule-a primeiro. Após a desvinculação, a réplica deixa de sincronizar dados de outras réplicas, mas a tabela e seus dados são mantidos. Para excluir a réplica, exclua-a manualmente após a desvinculação.
Escolher uma combinação adequada de regiões — Selecione regiões primárias e secundárias apropriadas com base na distribuição de usuários e nos requisitos de negócios.
Planejar o failover da região primária — No modo ativo-passivo, quando a região primária estiver indisponível, selecione primeiro uma nova tabela de réplica primária no console e, em seguida, alterne o caminho de gravação da camada de aplicação. Depois que os dados forem sincronizados com a nova tabela de réplica primária, alterne-a para a tabela de réplica primária. Pode ocorrer uma breve interrupção de gravação durante o failover, portanto, implemente um mecanismo de nova tentativa no lado do negócio. Gerencie a ordem e o momento dos failovers de aplicações e services para evitar perda de dados.
Faturamento
As Global Tables geram taxas de armazenamento de dados, leituras de dados, gravações de dados e tráfego de replicação entre regiões.
O método de faturamento para armazenamento de dados e operações de leitura/gravação em cada tabela de réplica é o mesmo de uma tabela de dados padrão. Para mais informações, consulte Billing overview.
As seguintes taxas se aplicam:
Taxa de armazenamento de dados: Cada tabela de réplica armazena dados independentemente. A cobrança é feita separadamente pela quantidade real de dados armazenados na região de cada tabela.
Taxa de leitura de dados: Cobre operações de leitura local em todas as tabelas de réplica.
Taxa de gravação de dados: Operações de gravação só podem ser realizadas em réplicas graváveis. Taxas de gravação são cobradas apenas na tabela onde os dados são gravados diretamente. Tabelas de réplica que sincronizam dados via replicação assíncrona não incorrem em taxas de gravação.
-
Taxa de tráfego de replicação entre regiões: Cobrada pelo tráfego de transferência de dados entre regiões gerado quando os dados são replicados assincronicamente para cada tabela de réplica.
ImportanteA taxa de tráfego de replicação entre regiões para cada réplica é calculada separadamente. A taxa é cobrada da instância da qual os dados são extraídos.
Perguntas frequentes
Como modifico a configuração de uma Global Table, como definir o TTL ou adicionar colunas personalizadas?
Atualmente, não é possível modificar diretamente a configuração de uma Global Table. Para modificar a configuração, desvincule completamente a Global Table primeiro, faça as modificações e recrie a Global Table. Antes de recriar a Global Table, direcione todas as operações de leitura e gravação para a réplica primária para evitar afetar as leituras e gravações da camada superior e, em seguida, exclua as outras réplicas.
Como excluo uma tabela de réplica?
Primeiro, desvincule a tabela de réplica da Global Table. Após a desvinculação bem-sucedida, exclua a tabela de réplica da lista de tabelas da instância no console.
No modo ativo-passivo, como leio de uma tabela de réplica de uma instância não primária?
Na aba Global Table da tabela base na instância primária, visualize o nome da instância da tabela de réplica associada e, em seguida, use o endpoint dessa instância para ler dados.
No modo de linha, se a operação UpdateRow atualizar valores em colunas diferentes da mesma linha em regiões diferentes (supondo que a atualize primeiro e b atualize depois), como ficarão os dados da linha?
Os dados da linha serão eventualmente consistentes. O valor final corresponde aos dados de toda a linha na réplica de b. Os dados específicos podem se enquadrar em um dos dois casos a seguir:
Se a tabela de réplica atual ainda não tiver sincronizado a atualização a antes da atualização b, a linha conterá o valor de b, mas não o valor de a.
Se a tabela de réplica atual já tiver sincronizado a atualização a antes da atualização b, a linha conterá tanto os valores de b quanto de a.