Todos os produtos
Search
Central de documentação

Tablestore:Usar um índice secundário para ler dados

Última atualização: Jul 03, 2026

Tablestore oferece métodos de leitura de linha única e de intervalo para acessar dados em tabelas de índice. Caso a tabela de índice contenha as colunas de atributo desejadas, leia os dados diretamente dela. Se não contiver, consulte a tabela principal para obter as informações necessárias.

Pré-requisitos

Observações de uso

  • Tabelas de índice servem exclusivamente para leitura de dados.

  • Quando as colunas de atributo que você deseja retornar não estiverem na tabela de índice, será necessário consultar a tabela de dados associada a esse índice para obter as colunas requeridas.

Ler uma única linha de dados

Para ler uma única linha de dados, chame a operação GetRow. Consulte também Ler uma única linha de dados para mais detalhes.

Parâmetros

Ao chamar a operação GetRow para ler dados de uma tabela de índice, atente-se aos pontos abaixo:

  • Defina o parâmetro tableName com o nome da tabela de índice.

  • O Tablestore adiciona automaticamente as colunas de chave primária da tabela de dados que não foram especificadas como colunas de índice à tabela de índice, tratando-as como colunas de chave primária do próprio índice. Por isso, ao definir as colunas de chave primária de uma linha na tabela de índice, especifique tanto as colunas de índice usadas na criação quanto as colunas de chave primária da tabela de dados.

Exemplos

O código de exemplo a seguir demonstra como ler uma linha de dados em uma tabela de índice com base na chave primária dessa linha:

public static void GetRowfromIndex()
{
    OTSClient otsClient = Config.GetClient();
    // Construct the primary key. When you construct the primary key, you must specify the primary key columns of the data table that are not specified as index columns. 
    PrimaryKey primaryKey = new PrimaryKey
    {
        { "col0", new ColumnValue(0) },
        { "pk1", new ColumnValue(0) },
        { "pk2", new ColumnValue("abc") }
    };

    try
    {
        // Construct a query request object. The entire row is read if no attribute column is specified. 
        var request = new GetRowRequest(IndexName, primaryKey);

        // Call the GetRow operation to query data. 
        var response = otsClient.GetRow(request);

        Console.WriteLine("Primary Key: " + response.PrimaryKey);
        Console.WriteLine("Attribute Column: " + response.Columns[0]);

        // If no exception is returned, the operation is successful. 
        Console.WriteLine("Get row succeeded.");
    }
    catch (Exception ex)
    {
        // If an exception is returned, the operation fails. Handle the exception. 
        Console.WriteLine("Get row failed, exception:{0}", ex.Message);
    }
}

Ler dados cujos valores de chave primária estão dentro de um intervalo específico

Utilize a operação GetRange para ler dados cujos valores de chave primária se encontram em um determinado intervalo. Veja também Ler dados cujos valores de chave primária estão dentro de um intervalo específico para mais informações.

Parâmetros

Na chamada da operação GetRange para leitura em tabelas de índice, considere os seguintes aspectos:

  • Especifique o nome da tabela de índice no parâmetro tableName.

  • Como o Tablestore inclui automaticamente as colunas de chave primária da tabela de dados (não definidas como colunas de índice) na tabela de índice como suas chaves primárias, é obrigatório especificar tanto as colunas de índice originais quanto as chaves primárias da tabela de dados ao definir as chaves primárias inicial e final do intervalo de consulta.

Exemplos

O trecho de código abaixo ilustra a leitura de dados dentro de um intervalo específico em uma tabela de índice. Neste cenário, a primeira coluna de chave primária da tabela de índice é col1, e o valor definido para essa coluna no intervalo é 0.

public static void GetRangeFromIndexTable()
{
    Console.WriteLine("Start getRange from index...");
    OTSClient otsClient = Config.GetClient();
    // Specify the value of the first primary key column col1 and scan the data. 
    PrimaryKey inclusiveStartPrimaryKey = new PrimaryKey
    {
        { "col1", new ColumnValue(0) },
        { "pk1",  ColumnValue.INF_MIN },
        { "pk2", ColumnValue.INF_MIN }
    };

    PrimaryKey exclusiveEndPrimaryKey = new PrimaryKey
    {
        { "col1", new ColumnValue(0) },
        { "pk1",  ColumnValue.INF_MAX },
        { "pk2", ColumnValue.INF_MAX }
    };

    GetRangeRequest request = new GetRangeRequest(IndexName, GetRangeDirection.Forward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey);

    GetRangeResponse response = otsClient.GetRange(request);
    IList<Row> rows = response.RowDataList;
    PrimaryKey nextStartPrimaryKey = response.NextPrimaryKey;
    while (nextStartPrimaryKey != null)
    {
        request = new GetRangeRequest(TableName, GetRangeDirection.Forward, nextStartPrimaryKey, exclusiveEndPrimaryKey);
        response = otsClient.GetRange(request);
        nextStartPrimaryKey = response.NextPrimaryKey;
        foreach (var row in response.RowDataList)
        {
            rows.Add(row);
        }
    }

    foreach (var row in rows)
    {
        PrintRow(row);
    }

    Console.WriteLine("TotalRowsRead: " + rows.Count);
}

private static void PrintRow(Row row)
{
    Console.WriteLine("-----------------");

    foreach (KeyValuePair<string, ColumnValue> entry in row.GetPrimaryKey())
    {
        Console.WriteLine(entry.Key + ":" + entry.Value);
    }

    foreach (Column entry in row.GetColumns())
    {
        Console.WriteLine(entry.Name + ":" + entry.Value);
    }

    Console.WriteLine("-----------------");
}             

Perguntas frequentes

Referências

  • Caso seu negócio exija consultas multidimensionais e análise de dados, crie um índice de pesquisa e defina os atributos necessários como campos desse índice. Assim, você poderá consultar e analisar dados usando o índice de pesquisa, realizando buscas baseadas em colunas que não são de chave primária, consultas booleanas e pesquisas aproximadas. Também é possível obter valores máximos e mínimos, contabilizar linhas e agrupar resultados. Para saber mais, consulte Índice de pesquisa.

  • Se preferir executar instruções SQL para consultar e analisar dados, utilize o recurso de consulta SQL. Para mais detalhes, veja Consulta SQL.