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.
-
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:
|
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.