Todos os produtos
Search
Central de documentação

Tablestore:Criar uma tabela global

Última atualização: Jul 03, 2026

Crie uma tabela global no Tablestore para replicar dados entre regiões, garantindo alta disponibilidade e acesso com baixa latência.

Observações de uso

Escolha um modo de serviço antes de criar a tabela global:

  • Modo ativo-passivo (PRIMARY_SECONDARY): A região primária processa leituras e gravações, enquanto as secundárias operam em somente leitura. Os dados fluem da região primária para as secundárias. Use este modo para leituras locais, recuperação de desastres e standby ativo.

  • Modo multiativo (PEER_TO_PEER): Todas as regiões processam leituras e gravações. O sistema resolve conflitos no nível de linha ou coluna pela estratégia last-writer-wins (LWW), mantendo a versão com o timestamp mais recente. Adote este modo para operações de leitura e escrita com baixa latência em várias regiões.

Após o sucesso da solicitação de criação, o sistema replica os dados entre regiões de forma assíncrona. Chame DescribeGlobalTable para monitorar o status. A tabela global estará pronta quando o status mudar para active.

Pré-requisitos

Antes de começar, verifique se você possui:

  • Instâncias criadas nas regiões de source e de destino

  • Uma tabela na região de source com a seguinte configuração: tempo de vida (TTL) definido como -1 (dados nunca expiram), máximo de versões definido como 1, deslocamento máximo de versão ilimitado (Integer.MAX_VALUE) e versionamento de linhas ativado (updateFullRow definido como True)

    Importante

    Ativar o versionamento de linhas impõe os seguintes limites:

    • Uma única linha pode conter no máximo 256 colunas

    • O sistema gera os números de versão automaticamente; não é possível especificá-los manualmente durante a gravação de dados

    • Cada operação Update lê primeiro a versão atual da linha, o que aumenta ligeiramente a carga de leitura

  • Um cliente configurado

    Importante

    Se você inicializar o cliente com a AccessKey de um usuário do Resource Access Management (RAM), esse usuário precisará ter permissão para criar tabelas globais. Para consultar as definições necessárias de Action, veja Operações da API do Tablestore.

Método

public CreateGlobalTableResponse createGlobalTable(CreateGlobalTableRequest createGlobalTableRequest) throws TableStoreException, ClientException

Parâmetros de CreateGlobalTableRequest

  • baseTable (Obrigatório) BaseTable: Tabela base. Por padrão, as operações de escrita têm como alvo a tabela base. Este parâmetro inclui os seguintes subparâmetros:

    Nome

    Tipo

    Descrição

    regionId (Obrigatório)

    String

    ID da região. Exemplo: cn-hangzhou.

    instanceName (Obrigatório)

    String

    Nome da instância.

    tableName (Obrigatório)

    String

    Nome da tabela base, que também corresponde ao nome da tabela global.

  • placements (Obrigatório) List<Placement>: Configurações de posicionamento das tabelas associadas. Inclui os seguintes subparâmetros:

    Nome

    Tipo

    Descrição

    regionId (Obrigatório)

    String

    ID da região. Exemplo: cn-beijing.

    instanceName (Obrigatório)

    String

    Nome da instância.

    writable (Obrigatório)

    boolean

    Define se a tabela aceita operações de escrita. O valor padrão é false. Defina como false para o modo ativo-passivo (secundária somente leitura) ou como true para o modo multiativo.

  • syncMode (Obrigatório) SyncMode: Modo de sincronização de dados. Apenas ROW (sincronização no nível de linha) é suportado.

  • serveMode (Opcional) ServeMode: Modo de serviço. Valores válidos:

    • PRIMARY_SECONDARY (Padrão): Modo ativo-passivo. A região primária permite leitura e escrita, enquanto as secundárias são somente leitura. O sistema sincroniza os dados da região primária para as secundárias. Recomendado para cenários de leituras locais, recuperação de desastres e standby ativo.

    • PEER_TO_PEER: Modo multiativo. Todas as regiões permitem leitura e escrita. O sistema resolve conflitos no nível de linha ou coluna usando last-writer-wins (LWW), preservando a versão com o timestamp mais recente. Indicado para operações de leitura e escrita com baixa latência em múltiplas regiões.

Exemplos

Criar uma tabela global no modo ativo-passivo

private static void createGlobalTableExample(SyncClient client){
    // Construct the request.
    CreateGlobalTableRequest req = new CreateGlobalTableRequest(
            // Configure the base table. The table must already exist.
            new GlobalTableTypes.BaseTable(
                    // The region ID of the base table.
                    "cn-hangzhou",
                    // The instance name of the base table.
                    "i-gt-test",
                    // The name of the base table. This is also the name of the global table.
                    "t-gt-test-1"
            ),
            // The synchronization mode. Only ROW (row-level synchronization) is supported.
            GlobalTableTypes.SyncMode.ROW
    );

    // Add associated tables. You can add multiple tables.
    req.addPlacement(new GlobalTableTypes.Placement(
            // The region ID of the associated table.
            "cn-shanghai",
            // The instance name of the associated table. The instance must already exist.
            // The instance cannot contain a table with the same name as the base table. The system creates the table automatically.
            "i-dest-test",
            // false = read-only secondary in active-passive mode.
            false
    ));

    // Set the service mode to active-passive (PRIMARY_SECONDARY).
    req.setServeMode(GlobalTableTypes.ServeMode.PRIMARY_SECONDARY);

    // Send the request.
    CreateGlobalTableResponse createResp = client.createGlobalTable(req);

    // Print the response.
    System.out.println("Global table creation initiated.");
    System.out.println("RequestId: " + createResp.getRequestId());
    System.out.println("GlobalTableId: " + createResp.getGlobalTableId());
}

Criar uma tabela global no modo multiativo

private static void createGlobalTableExample(SyncClient client){
    // Construct the request.
    CreateGlobalTableRequest req = new CreateGlobalTableRequest(
            // Configure the base table. The table must already exist.
            new GlobalTableTypes.BaseTable(
                    // The region ID of the base table.
                    "cn-hangzhou",
                    // The instance name of the base table.
                    "i-gt-test",
                    // The name of the base table. This is also the name of the global table.
                    "t-gt-test-1"
            ),
            // The synchronization mode. Only ROW (row-level synchronization) is supported.
            GlobalTableTypes.SyncMode.ROW
    );

    // Add associated tables. You can add multiple tables.
    req.addPlacement(new GlobalTableTypes.Placement(
            // The region ID of the associated table.
            "cn-shanghai",
            // The instance name of the associated table. The instance must already exist.
            // The instance cannot contain a table with the same name as the base table. The system creates the table automatically.
            "i-dest-test",
            // true = all regions accept writes in multi-active mode.
            true
    ));

    // Set the service mode to multi-active (PEER_TO_PEER).
    req.setServeMode(GlobalTableTypes.ServeMode.PEER_TO_PEER);

    // Send the request.
    CreateGlobalTableResponse createResp = client.createGlobalTable(req);

    // Print the response.
    System.out.println("Global table creation initiated.");
    System.out.println("RequestId: " + createResp.getRequestId());
    System.out.println("GlobalTableId: " + createResp.getGlobalTableId());
}