Crie um índice secundário global ou local para uma tabela de dados existente com o Tablestore SDK for Java.
Pré-requisitos
Instale o Tablestore SDK for Java e inicialize um cliente.
O valor de
maxVersionsda tabela de dados deve ser 1 e o valor detimeToLivedeve ser -1, ou os dados não podem ser atualizados pela chamada deUpdateRow.Para usar colunas fora da chave primária como colunas de índice ou de atributo, configure-as como colunas predefinidas.
Descrição
Um índice secundário usa um esquema de chave primária diferente, composto por colunas de chave primária e colunas predefinidas de uma tabela de dados, para oferecer dimensões adicionais de consulta. Existem dois tipos de índices secundários: globais e locais. Cada tipo possui modos distintos de sincronização de dados e requisitos específicos de chave primária. Para mais informações, consulte Overview.
Chame createIndex para criar um índice secundário em uma tabela de dados existente. Para criar um ou mais índices secundários junto com a tabela de dados, configure os esquemas de índice na solicitação createTable. Para mais informações, consulte Create a data table.
public CreateIndexResponse createIndex(CreateIndexRequest createIndexRequest)
throws TableStoreException, ClientException
O exemplo a seguir cria o índice secundário global example_global_index para example_table. O índice inclui os dados existentes.
IndexMeta indexMeta = new IndexMeta("example_global_index");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.addDefinedColumn("status");
CreateIndexRequest request =
new CreateIndexRequest("example_table", indexMeta, true);
client.createIndex(request);
Parâmetros
CreateIndexRequest contém os seguintes parâmetros:
|
Nome |
Tipo |
Descrição |
|
mainTableName (obrigatório) |
|
Nome da tabela de dados. |
|
indexMeta (obrigatório) |
|
Informações do esquema da tabela de índice. |
|
includeBaseData (obrigatório) |
|
Defina se a tabela de índice inclui os dados existentes da tabela de dados. Se definido como |
Esquema do índice
indexMeta é do tipo IndexMeta e contém os seguintes parâmetros:
|
Nome |
Tipo |
Descrição |
|
indexName (obrigatório) |
|
Nome da tabela de índice. Deve ser diferente do nome de qualquer tabela de dados ou de séries temporais existente. |
|
primaryKey (obrigatório) |
|
Lista ordenada dos nomes das colunas de índice. Especifique de uma a quatro colunas, que podem ser colunas de chave primária ou colunas predefinidas da tabela de dados. O Tablestore respeita a ordem de adição das colunas e anexa automaticamente as colunas de chave primária não especificadas da tabela de dados ao final da chave primária do índice. Em índices secundários locais, a primeira coluna de chave primária do índice deve ser idêntica à primeira coluna de chave primária da tabela de dados. |
|
definedColumns (opcional) |
|
Lista dos nomes das colunas de atributo da tabela de índice. Apenas colunas predefinidas da tabela de dados podem ser especificadas. |
|
indexType (opcional) |
|
Tipo do índice. Valores válidos: |
|
indexUpdateMode (opcional) |
|
Modo de atualização do índice. Índices secundários globais exigem |
Exemplos de cenários
Criar um índice secundário local
Para criar um índice secundário local, defina a primeira coluna de chave primária da tabela de dados como a primeira coluna de chave primária do índice. Configure também o tipo de índice como IT_LOCAL_INDEX e o modo de atualização como IUM_SYNC_INDEX.
IndexMeta indexMeta = new IndexMeta("example_local_index");
indexMeta.addPrimaryKeyColumn("user_id");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.addDefinedColumn("status");
indexMeta.setIndexType(IndexType.IT_LOCAL_INDEX);
indexMeta.setIndexUpdateMode(IndexUpdateMode.IUM_SYNC_INDEX);
CreateIndexRequest request =
new CreateIndexRequest("example_table", indexMeta, true);
client.createIndex(request);