Todos os produtos
Search
Central de documentação

Tablestore:Criar um índice secundário

Última atualização: Jun 23, 2026

O recurso de índice secundário permite consultar dados com base na chave primária de uma tabela de dados e nas colunas de índice do índice secundário criado para essa tabela. Para consultar dados usando as colunas de atributo de uma tabela de dados, crie um índice secundário para acelerar as consultas. Ao criar um índice secundário para uma tabela de dados, defina as colunas de índice ou colunas de atributo do índice secundário como as colunas predefinidas especificadas na criação da tabela de dados. Após criar o índice secundário, utilize-o para consultar dados.

null
  • Os índices secundários são classificados em índices secundários globais e índices secundários locais. Para obter mais informações sobre o recurso de índice secundário, consulte Visão geral.

  • Você pode criar uma ou mais tabelas de índice ao criar uma tabela de dados chamando a operação CreateTable. Para obter mais informações, consulte Criar tabelas de dados.

Pré-requisitos

  • Uma instância de OTSClient está inicializada. Para obter mais informações, consulte Inicializar uma instância de OTSClient.

  • Uma tabela de dados com o parâmetro maxVersions definido como 1 foi criada. O parâmetro timeToLive da tabela de dados deve atender a uma das seguintes condições:

    • O parâmetro timeToLive da tabela de dados é definido como -1, o que significa que os dados na tabela de dados nunca expiram.

    • O parâmetro timeToLive da tabela de dados é definido com um valor diferente de -1, e as operações de atualização na tabela de dados são proibidas.

  • Colunas predefinidas estão especificadas para a tabela de dados.

Observações de uso

  • O nome de uma tabela de índice deve ser diferente do nome de uma tabela de série temporal ou tabela de dados existente.

  • Ao criar um índice secundário, o Tablestore adiciona automaticamente as colunas de chave primária da tabela de dados não especificadas como colunas de índice ao índice secundário como colunas de chave primária.

  • Ao criar um índice secundário local, a primeira coluna de chave primária da tabela de índice deve ser igual à primeira coluna de chave primária da tabela de dados.

Parâmetros

Parâmetro

Descrição

mainTableName

O nome da tabela de dados.

indexMeta

As informações de esquema da tabela de índice. As informações de esquema contêm os seguintes itens:

  • name: o nome da tabela de índice.

  • primaryKey: a chave primária da tabela de índice. A chave primária é uma combinação de todas as colunas de chave primária e algumas colunas predefinidas da tabela de dados.

    Para criar um índice secundário local, a primeira coluna de chave primária da tabela de índice deve ser igual à primeira coluna de chave primária da tabela de dados.

  • definedColumn: as colunas de atributo da tabela de índice. As colunas de atributo são uma combinação de colunas predefinidas da tabela de dados.

  • includeBaseData: especifica se os dados existentes da tabela de dados devem ser incluídos na tabela de índice.

    Se o parâmetro includeBaseData for definido como true, a tabela de índice incluirá os dados existentes da tabela de dados. Se o parâmetro includeBaseData for definido como false, a tabela de índice não incluirá os dados existentes da tabela de dados.

  • indexType: o tipo da tabela de índice. Valores válidos: IT_GLOBAL_INDEX e IT_LOCAL_INDEX.

    • Se o parâmetro indexType não for especificado ou for definido como IT_GLOBAL_INDEX, um índice secundário global será criado.

      O Tablestore sincroniza automaticamente os dados das colunas indexadas e colunas de chave primária da tabela de dados com as colunas da tabela de índice no modo assíncrono. A latência de sincronização é de alguns milissegundos.

    • Se o parâmetro indexType for definido como IT_LOCAL_INDEX, um índice secundário local será criado.

      O Tablestore sincroniza automaticamente os dados das colunas indexadas e colunas de chave primária da tabela de dados com as colunas da tabela de índice no modo síncrono. Após gravar dados na tabela de dados, é possível consultar os dados imediatamente na tabela de índice.

  • indexUpdateMode: o modo de atualização da tabela de índice. Valores válidos: IUM_ASYNC_INDEX e IUM_SYNC_INDEX.

    • Se o parâmetro indexUpdateMode não for especificado ou for definido como IUM_ASYNC_INDEX, o modo assíncrono será usado para atualizar o índice.

      Ao usar o recurso de índice secundário global, defina o parâmetro indexUpdateMode como IUM_ASYNC_INDEX.

    • Se o parâmetro indexUpdateMode for definido como IUM_SYNC_INDEX, o modo síncrono será usado para atualizar o índice.

      Ao usar o recurso de índice secundário local, defina o parâmetro indexUpdateMode como IUM_SYNC_INDEX.

Exemplos

Criar um índice secundário global

O código de exemplo a seguir mostra como criar um índice secundário global sem incluir os dados existentes da tabela de dados. Neste exemplo, as colunas de chave primária da tabela de dados são pk1 e pk2. A coluna de chave primária e a coluna de atributo especificadas para o índice secundário global são col1 e col2, respectivamente. As colunas de chave primária da tabela de índice são col1, pk1 e pk2. A coluna de atributo da tabela de índice é col2.

var client = require('./client');
var TableStore = require('./index.js');

client.createIndex({
    mainTableName: "<TABLE_NAME>", // Specify the name of the data table.
    indexMeta: {
        name: "<INDEX_NAME>", // Specify the name of the index table.
        primaryKey: ["col1"], // Specify a primary key column for the index table.
        definedColumn: ["col2"], // Specify an attribute column for the index table.
        includeBaseData: false, // Specify that the index table does not include the existing data of the data table for which the index table is created. If you want to include the existing data of the data table in the index table, set the includeBaseData parameter to true.
        indexUpdateMode: TableStore.IndexUpdateMode.IUM_ASYNC_INDEX,// By default, the index update mode is asynchronous update (IUM_ASYNC_INDEX).
        indexType: TableStore.IndexType.IT_GLOBAL_INDEX,// By default, the index type is global secondary index (IT_GLOBAL_INDEX).
    }
}, function (err, data) {
    if (err) {
        console.log('error:', err);
        return;
    }
    console.log('success:', JSON.stringify(data, null, 2));
});

Criar um índice secundário local

O código de exemplo a seguir mostra como criar um índice secundário local sem incluir os dados existentes da tabela de dados. Neste exemplo, as colunas de chave primária da tabela de dados são pk1 e pk2. As colunas de chave primária especificadas para o índice secundário local são col1 e pk1. A coluna de atributo especificada para o índice secundário local é col2. As colunas de chave primária da tabela de índice são col1, pk1 e pk2. A coluna de atributo da tabela de índice é col2.

var client = require('./client');
var TableStore = require('./index.js');

client.createIndex({
    mainTableName: "<TABLE_NAME>", // Specify the name of the data table.
    indexMeta: {
        name: "<INDEX_TABLE>", // Specify the name of the index table.
        primaryKey: ["pk1","col1"], // Specify primary key columns for the index table. The first primary key column of the index table must be the same as the first primary key column of the data table.
        definedColumn: ["col2"], // Specify an attribute column for the index table.
        includeBaseData: false, // Specify that the index table does not include the existing data of the data table for which the index table is created. If you want to include the existing data of the data table in the index table, set the includeBaseData parameter to true.
        indexUpdateMode: TableStore.IndexUpdateMode.IUM_SYNC_INDEX// Set the indexUpdateMode parameter to IUM_SYNC_INDEX, which indicates that the index is updated in synchronous mode. If you set the indexType parameter to IT_LOCAL_INDEX, you must set the indexUpdateMode parameter to IUM_SYNC_INDEX.
        indexType: TableStore.IndexType.IT_LOCAL_INDEX, // Set the indexType parameter to IT_LOCAL_INDEX, which indicates a local secondary index.
    }
}, function (err, data) {
    if (err) {
        console.log('error:', err);
        return;
    }
    console.log('success:', JSON.stringify(data, null, 2));
});

Referências

  • Após criar um índice secundário, utilize-o para ler uma única linha de dados ou dados cujos valores de chave primária estejam em um intervalo específico. Para obter mais informações, consulte Usar um índice secundário para ler dados.

  • É possível excluir um índice secundário que não é mais utilizado. Para obter mais informações, consulte Excluir um índice secundário.