O Tablestore oferece métodos de leitura de linha única e de intervalo para consultar dados em tabelas de índice. Se a tabela de índice contiver as colunas de atributo a serem recuperadas, leia os dados diretamente dela. Caso contrário, consulte os dados na tabela primária.
Pré-requisitos
Antes de começar, certifique-se de que:
Uma instância do OTSClient esteja inicializada. Para mais informações, consulte Initialize a Tablestore client.
Um índice secundário esteja criado. Para mais informações, consulte Crie um índice secundário.
Precauções
As tabelas de índice servem apenas para a leitura de dados.
A primeira coluna de chave primária de uma tabela de índice secundário local deve ser igual à primeira coluna de chave primária da tabela primária.
Se as colunas de atributo a serem recuperadas não estiverem na tabela de índice, consulte os dados na tabela primária.
Notas de uso
As tabelas de índice são somente leitura. Use GetRow ou GetRange para ler dados de uma tabela de índice.
Para um índice secundário local (LSI), a primeira coluna de chave primária da tabela de índice deve corresponder à primeira coluna de chave primária da tabela de dados.
defina
table_namecomo o nome da tabela de índice, e não da tabela de dados.O Tablestore adiciona automaticamente à tabela de índice as colunas de chave primária da tabela de dados que não foram especificadas como colunas de índice. Ao especificar os valores de chave primária, inclua tanto as colunas de índice quanto as colunas de chave primária da tabela de dados adicionadas automaticamente.
-
Se as colunas de atributo a serem retornadas não estiverem projetadas na tabela de índice, consulte diretamente a tabela de dados para recuperar essas colunas.
Leitura de uma única linha
Chame a operação GetRow para ler uma única linha de uma tabela de índice. Para obter detalhes sobre os parâmetros, consulte Read a single row.
Exemplo
O exemplo a seguir lê uma linha de uma tabela de índice ao especificar sua chave primária:
$request = [ 'table_name' => '<INDEX_NAME>', // Name of the index table. 'primary_key' => [ // Primary key of the row to read. // For an LSI, the first column must match the first // primary key column of the data table. ['PK0', 123], ['Col1', "abc"], ['PK1', 'abc'] ], 'max_versions' => 1, // Read only the latest version. 'columns_to_get' => ['Col1'] // Attribute columns to return. ]; $response = $otsClient->getRow($request);Leitura de dados em um intervalo de chave primária
Chame a operação GetRange para ler linhas cujos valores de chave primária estejam dentro de um intervalo especificado. Para obter detalhes sobre os parâmetros, consulte Read data in a range.
Cada chamada de GetRange retorna até 5.000 linhas ou 4 MB de dados, o limite que for atingido primeiro. Se a resposta incluir
next_start_primary_key, use esse valor como o novoinclusive_start_primary_keyem uma chamada subsequente de GetRange para recuperar as linhas restantes.Exemplo
O exemplo a seguir lê linhas de uma tabela de índice em que a coluna de índice
Col1é igual a"abc", abrangendo todos os valores dePK0ePK1:// Define the start primary key. Use INF_MIN for open-ended range columns. // For an LSI, the first column must match the first primary key column of the data table. $startPK = [ ['Col1', "abc"], ['PK0', null, PrimaryKeyTypeConst::CONST_INF_MIN], // Start from the minimum value. ['PK1', null, PrimaryKeyTypeConst::CONST_INF_MIN] // Start from the minimum value. ]; // Define the end primary key. Use INF_MAX for open-ended range columns. $endPK = [ ['Col1', "abc"], ['PK0', null, PrimaryKeyTypeConst::CONST_INF_MAX], // End at the maximum value. ['PK1', null, PrimaryKeyTypeConst::CONST_INF_MAX] // End at the maximum value. ]; $request = [ 'table_name' => '<INDEX_NAME>', // Name of the index table. 'max_versions' => 1, // Read only the latest version. 'direction' => DirectionConst::CONST_FORWARD, // Read in ascending order. 'inclusive_start_primary_key' => $startPK, 'exclusive_end_primary_key' => $endPK, 'limit' => 10 // Maximum rows per call. ]; $response = $otsClient->getRange($request); print "Read capacity units consumed: {$response['consumed']['capacity_unit']['read']}\n"; foreach ($response['rows'] as $rowData) { // Process each row. } // If next_start_primary_key is present, more rows are available. // Call GetRange again with next_start_primary_key as inclusive_start_primary_key. if (!empty($response['next_start_primary_key'])) { // Continue reading from $response['next_start_primary_key']. }Perguntas frequentes
Próximos passos
Para consultas multidimensionais e análise de dados — como consultas em colunas que não são de chave primária, consultas booleanas, consultas difusas, agregações e agrupamentos — crie um índice de pesquisa. Para mais informações, consulte Search index.
Para consultar e analisar dados usando instruções SQL, use o recurso de consulta SQL. Para mais informações, consulte SQL query.