O recurso de índice secundário permite consultar dados usando a chave primária da tabela e as colunas do índice secundário criado para ela. Para consultar dados usando colunas de atributo, crie um índice secundário na tabela e acelere as consultas. Ao criar o índice, defina suas colunas de índice ou de atributo como as colunas predefinidas da tabela. Depois de criado, use o índice secundário 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 Secondary index.
É possível criar uma ou mais tabelas de índice ao criar uma tabela de dados chamando a operação CreateTable. Para obter mais informações, consulte Create a data table.
Pré-requisitos
Inicialize uma instância do OTSClient. Para obter mais informações, consulte Initialize a Tablestore client.
-
Crie uma tabela de dados com o parâmetro max_versions definido como 1. O parâmetro time_to_live da tabela de dados deve atender a uma das seguintes condições:
O parâmetro time_to_live da tabela de dados está definido como -1, o que significa que os dados na tabela nunca expiram.
O parâmetro time_to_live da tabela de dados está definido como um valor diferente de -1 e as operações de atualização na tabela estão proibidas.
Especifique colunas predefinidas para a tabela de dados.
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 fornecer dimensões de consulta adicionais. Os índices secundários são classificados em índices secundários globais e índices secundários locais. Os dois tipos de índice possuem modos de sincronização de dados e requisitos de chave primária diferentes. Para obter mais informações, consulte Overview.
Chame createIndex para criar um índice secundário para uma tabela de dados existente. Para criar um ou mais índices secundários junto com uma tabela de dados, configure os esquemas de índice na requisição createTable. Para obter mais informações, consulte Create a data table.
public CreateIndexResponse createIndex(CreateIndexRequest createIndexRequest)
throws TableStoreException, ClientException
O código de 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);
Operação de API
/**
* Create a secondary index.
* @api
*
* @param [] $request
* The request parameter, which is the name of the data table.
* @return [] The response.
* @throws OTSClientException The exception that is returned when a parameter error occurs or the Tablestore server returns a verification error.
* @throws OTSServerException The exception that is returned when the Tablestore server returns an error.
* @example "src/examples/CreateIndex.php"
*/
public function createIndex(array $request)
Parâmetros
|
Parâmetro |
Descrição |
|
table_name |
O nome da tabela de dados. |
|
index_meta |
As informações de esquema da tabela de índice. As informações de esquema contêm os seguintes itens:
|
|
include_base_data |
Especifica se os dados existentes da tabela de dados devem ser incluídos na tabela de índice. Valor padrão: false.
|
Exemplos
Crie um índice secundário global
Se você não especificar os parâmetros index_type e index_update_mode ao criar um índice secundário, o Tablestore cria um índice secundário global.
$request = array(
'table_name' => '<TABLE_NAME>', // Specify the name of the data table.
//'include_base_data' => true, // Set the include_base_data parameter to true to include the existing data of the data table to the index table.
'index_meta' => array(
'name' => '<INDEX_NAME>', // Specify the name of the index table.
'primary_key' => array('Col1'), // Specify the primary key column of the index table.
'defined_column' => array('Col2') // Specify the attribute column of the index table.
)
);
$otsClient->createIndex($request);
Também é possível especificar os parâmetros index_type e index_update_mode para criar um índice secundário global.
$request = array(
'table_name' => '<TABLE_NAME>', // Specify the name of the data table.
//'include_base_data' => true, // Set the include_base_data parameter to true to include the existing data of the data table to the index table.
'index_meta' => array(
'name' => '<INDEX_NAME>', // Specify the name of the index table.
'primary_key' => array('Col1'), // Specify the primary key column of the index table.
'defined_column' => array('Col2') // Specify the attribute column of the index table.
'index_type' => IndexTypeConst::GLOBAL_INDEX,
'index_update_mode' => IndexUpdateModeConst::ASYNC_INDEX
)
);
$otsClient->createIndex($request);
Crie um índice secundário local
O código de exemplo a seguir mostra como criar um índice secundário local:
$createLocalRequest = array (
'table_name' => '<TABLE_NAME>', // Specify the name of the data table.
//'include_base_data' => true, // Set the include_base_data parameter to true to include the existing data of the data table to the index table.
'index_meta' => array (
'name' => '<INDEX_NAME>', // Specify the name of the index table.
'primary_key' => array('PK0', 'Col1'), // Specify the primary key column of 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.
'defined_column' => array('Col2') // Specify the attribute column of the index table.
'index_type' => IndexTypeConst::LOCAL_INDEX,
'index_update_mode' => IndexUpdateModeConst::SYNC_INDEX
)
);
$otsClient->createIndex($createLocalRequest);
Referências
Após criar um índice secundário, use-o para ler uma única linha de dados ou dados cujos valores de chave primária estejam dentro de um intervalo específico. Para obter mais informações, consulte Use a secondary index to read data.
Exclua um índice secundário que não seja mais utilizado. Para obter mais informações, consulte Delete a secondary index.