Todos os produtos
Search
Central de documentação

Tablestore:Ler dados

Última atualização: Jun 23, 2026

O Tablestore fornece a API GetRow para ler uma única linha de dados e as APIs BatchGetRow e GetRange para ler várias linhas de dados.

Métodos de consulta

O Tablestore fornece as operações GetRow, BatchGetRow e GetRange para leitura de dados. Antes de ler os dados, selecione o método de consulta adequado com base no cenário real.

null

Para ler dados de uma tabela que contém uma coluna de chave primária de autoincremento, certifique-se de ter consultado os valores de todas as colunas de chave primária, incluindo os valores da coluna de chave primária de autoincremento. Para mais informações, consulte Configurar uma coluna de chave primária de autoincremento. Se nenhum valor estiver registrado na coluna de chave primária de autoincremento, chame a operação GetRange para especificar o intervalo de leitura de dados com base nos valores de chave primária a partir da primeira coluna de chave primária.

Método de consulta

Descrição

Cenário

Ler uma única linha de dados

Chame a operação GetRow para ler uma única linha de dados.

Indicado para cenários em que todas as colunas de chave primária de uma tabela podem ser determinadas e o número de linhas a serem lidas é pequeno.

Ler várias linhas de dados de uma vez

Chame a operação BatchGetRow para ler várias linhas de dados de uma ou mais tabelas de uma vez.

A operação BatchGetRow consiste em várias operações GetRow. O processo de construção de uma suboperação é o mesmo do processo de chamada da operação GetRow.

Indicado para cenários em que todas as colunas de chave primária de uma tabela podem ser determinadas e o número de linhas a serem lidas é grande, ou quando os dados devem ser lidos de várias tabelas.

Ler dados cujos valores de chave primária estejam em um intervalo específico

Chame a operação GetRange para ler dados cujos valores de chave primária estejam no intervalo especificado.

A operação GetRange permite ler dados cujos valores de chave primária estejam no intervalo especificado na direção progressiva ou regressiva. Também é possível especificar o número de linhas a serem lidas. Se o intervalo for grande e o número de linhas verificadas ou o volume de dados verificados exceder o limite superior, a verificação será interrompida, e as linhas lidas e as informações sobre a chave primária da próxima linha serão retornadas. Inicie uma nova solicitação a partir da posição em que a última operação parou e leia as linhas restantes com base nas informações da chave primária da próxima linha retornadas pela operação anterior.

Indicado para cenários em que o intervalo de todas as colunas de chave primária de uma tabela ou o prefixo das colunas de chave primária pode ser determinado.

null

Se não for possível determinar o prefixo das colunas de chave primária, especifique a coluna de chave primária inicial cujos dados são do tipo INF_MIN e a coluna de chave primária final cujos dados são do tipo INF_MAX para determinar o intervalo de todas as colunas de chave primária da tabela. Esta operação verifica todos os dados da tabela, mas consome uma grande quantidade de recursos computacionais. Prossiga com cautela.

Pré-requisitos

Ler uma única linha de dados

Chame a operação GetRow para ler uma única linha de dados. Após chamar a operação GetRow, um dos seguintes resultados pode ser retornado:

  • Se a linha existir, as colunas de chave primária e as colunas de atributo da linha serão retornadas.

  • Se a linha não existir, nenhuma linha será retornada e nenhum erro será reportado.

Operação de API

// Return a row of data in a table. 
// @param GetRowRequest             Encapsulate the parameters required to call the GetRow operation. 
// @return  GetRowResponse          The content of the response to the GetRow operation. 
GetRow(request *GetRowRequest) (*GetRowResponse, error)                   

Parâmetros

Parâmetro

Descrição

TableName

O nome da tabela.

PrimaryKey

As informações de chave primária da linha. As informações de chave primária consistem no nome da coluna de chave primária, tipo da chave primária e valor da chave primária.

null

O número e os tipos das colunas de chave primária especificados devem ser iguais ao número e aos tipos reais das colunas de chave primária na tabela.

ColumnsToGet

As colunas que você deseja ler. É possível especificar nomes de colunas de chave primária ou colunas de atributo.

  • Se nenhuma coluna for especificada, todos os dados da linha serão retornados.

  • Se colunas forem especificadas, mas a linha não contiver as colunas indicadas, o valor retornado será nulo. Se a linha contiver algumas das colunas especificadas, os dados dessas colunas serão retornados.

null
  • Por padrão, o Tablestore retorna dados de todas as colunas de uma linha ao consultá-la. Use o parâmetro ColumnsToGet para retornar dados de colunas específicas. Se col0 e col1 forem adicionados ao parâmetro ColumnsToGet, somente os valores das colunas col0 e col1 serão retornados.

  • Se os parâmetros ColumnsToGet e Filter forem especificados, o Tablestore consultará as colunas indicadas pelo parâmetro ColumnsToGet e retornará as linhas que atendem às condições do filtro.

MaxVersion

O número máximo de versões de dados que podem ser lidas.

null

Especifique pelo menos um dos parâmetros MaxVersion e TimeRange.

  • Se somente o parâmetro MaxVersion for especificado, os dados do número indicado de versões serão retornados da entrada mais recente para a mais antiga.

  • Se somente o parâmetro TimeRange for especificado, todos os dados cujas versões estejam no intervalo de tempo indicado ou os dados da versão especificada serão retornados.

  • Se ambos os parâmetros MaxVersion e TimeRange forem especificados, os dados do número indicado de versões no intervalo de tempo especificado serão retornados da entrada mais recente para a mais antiga.

TimeRange

O intervalo de tempo das versões ou uma versão específica a ser lida. Para mais informações, consulte TimeRange.

null

Especifique pelo menos um dos parâmetros MaxVersion e TimeRange.

  • Se somente o parâmetro MaxVersion for especificado, os dados do número indicado de versões serão retornados da entrada mais recente para a mais antiga.

  • Se somente o parâmetro TimeRange for especificado, todos os dados cujas versões estejam no intervalo de tempo indicado ou os dados da versão especificada serão retornados.

  • Se ambos os parâmetros MaxVersion e TimeRange forem especificados, os dados do número indicado de versões no intervalo de tempo especificado serão retornados da entrada mais recente para a mais antiga.

  • Para consultar dados cujas versões estejam em um intervalo de tempo específico, especifique os parâmetros start_time e end_time. O parâmetro start_time indica o timestamp inicial. O parâmetro end_time indica o timestamp final. O intervalo especificado é um intervalo fechado à esquerda e aberto à direita no formato [start_time, end_time).

  • Para consultar dados de uma versão específica, especifique o parâmetro specific_time. O parâmetro specific_time indica um timestamp específico.

Somente um entre specific_time e [start_time, end_time) é necessário.

Valores válidos do parâmetro TimeRange: 0 a INT64.MAX. Unidade: milissegundo.

Filter

O filtro a ser usado para filtrar os resultados da consulta no lado do servidor. Somente as linhas que atendem às condições do filtro serão retornadas. Para mais informações, consulte Filtros.

null

Se os parâmetros ColumnsToGet e Filter forem especificados, o Tablestore consultará as colunas indicadas pelo parâmetro ColumnsToGet e retornará as linhas que atendem às condições do filtro.

Código de exemplo

O código de exemplo a seguir demonstra como ler uma linha de dados:

getRowRequest := new(tablestore.GetRowRequest)
criteria := new(tablestore.SingleRowQueryCriteria);
putPk := new(tablestore.PrimaryKey)
putPk.AddPrimaryKeyColumn("pk1", "pk1value1")
putPk.AddPrimaryKeyColumn("pk2", int64(2))
putPk.AddPrimaryKeyColumn("pk3", []byte("pk3"))

criteria.PrimaryKey = putPk
getRowRequest.SingleRowQueryCriteria = criteria
getRowRequest.SingleRowQueryCriteria.TableName = tableName 
getRowRequest.SingleRowQueryCriteria.MaxVersion = 1  
getResp, err := client.GetRow(getRowRequest)
if err != nil {
    fmt.Println("getrow failed with error:", err)
} else {
    fmt.Println("get row col0 result is ",getResp.Columns[0].ColumnName, getResp.Columns[0].Value,)
}                   

Para consultar o código de exemplo detalhado, acesse GetRow@GitHub.

Ler várias linhas de dados de uma vez

Chame a operação BatchGetRow para ler várias linhas de dados de uma ou mais tabelas ao mesmo tempo. A operação BatchGetRow consiste em várias operações GetRow. Ao chamar a operação BatchGetRow, o processo de construção de cada operação GetRow é o mesmo do processo de construção ao chamar a operação GetRow individualmente.

Ao chamar a operação BatchGetRow, cada operação GetRow é executada separadamente. O Tablestore retorna a resposta de cada operação GetRow separadamente.

Observações de uso

  • Ao chamar a operação BatchGetRow para ler várias linhas de uma vez, a leitura de algumas linhas pode falhar. Nesse caso, o Tablestore não retorna exceções, mas retorna BatchGetRowResponse com as informações das linhas que falharam. Portanto, ao chamar a operação BatchGetRow, verifique os valores retornados para determinar se os dados de cada linha foram lidos com êxito.

  • A operação BatchGetRow usa as mesmas configurações de parâmetros para todas as linhas. Por exemplo, se o parâmetro ColumnsToGet estiver definido como [colA], somente o valor da coluna colA será lido de todas as linhas.

  • A operação BatchGetRow permite ler no máximo 100 linhas de uma vez.

Parâmetros

Para mais informações sobre parâmetros, consulte a tabela de Parâmetros na seção "Ler uma única linha de dados".

Operação de API

// Return multiple rows of data from a table. 
// @param BatchGetRowRequest             Encapsulate the parameters required to call the BatchGetRow operation. 
// @return  BatchGetRowResponse          The content of the response to the BatchGetRow operation. 
BatchGetRow(request *BatchGetRowRequest) (*BatchGetRowResponse, error)                    

Código de exemplo

O código de exemplo a seguir demonstra como ler 10 linhas de dados de uma vez:

batchGetReq := &tablestore.BatchGetRowRequest{}
mqCriteria := &tablestore.MultiRowQueryCriteria{}

for i := 0; i < 10; i++ {
    pkToGet := new(tablestore.PrimaryKey)
    pkToGet.AddPrimaryKeyColumn("pk1", "pk1value1")
    pkToGet.AddPrimaryKeyColumn("pk2", int64(i))
    pkToGet.AddPrimaryKeyColumn("pk3", []byte("pk3"))
    mqCriteria.AddRow(pkToGet)
    mqCriteria.MaxVersion = 1
}
mqCriteria.TableName = tableName
batchGetReq.MultiRowQueryCriteria = append(batchGetReq.MultiRowQueryCriteria, mqCriteria)
batchGetResponse, err := client.BatchGetRow(batchGetReq)

if err != nil {
    fmt.Println("batchget failed with error:", err)
} else {
    fmt.Println("batchget finished")
}                    

Para consultar o código de exemplo detalhado, acesse BatchGetRow@GitHub.

Ler dados cujos valores de chave primária estejam em um intervalo específico

Chame a operação GetRange para ler dados cujos valores de chave primária estejam no intervalo especificado.

A operação GetRange permite ler dados cujos valores de chave primária estejam no intervalo especificado na direção progressiva ou regressiva. Também é possível especificar o número de linhas a serem lidas. Se o intervalo for grande e o número de linhas verificadas ou o volume de dados verificados exceder o limite superior, a verificação será interrompida, e as linhas lidas e as informações sobre a chave primária da próxima linha serão retornadas. Inicie uma nova solicitação a partir da posição em que a última operação parou e leia as linhas restantes com base nas informações da chave primária da próxima linha retornadas pela operação anterior.

null

Nas tabelas do Tablestore, todas as linhas são ordenadas por chave primária. A chave primária de uma tabela consiste sequencialmente em todas as colunas de chave primária. Portanto, as linhas não são ordenadas com base em uma coluna de chave primária específica.

Observações de uso

A operação GetRange segue o princípio de correspondência mais à esquerda. O Tablestore compara valores sequencialmente, da primeira coluna de chave primária até a última, para ler dados cujos valores de chave primária estejam no intervalo especificado. Por exemplo, a chave primária de uma tabela de dados consiste nas seguintes colunas de chave primária: PK1, PK2 e PK3. Ao ler os dados, o Tablestore primeiro verifica se o valor de PK1 de uma linha está no intervalo especificado para a primeira coluna de chave primária. Se o valor de PK1 estiver no intervalo, o Tablestore para de verificar os valores das demais colunas de chave primária da linha e retorna a linha. Se o valor de PK1 não estiver no intervalo, o Tablestore continua verificando os valores das demais colunas de chave primária da linha da mesma forma que para PK1.

Se uma das condições a seguir for atendida, a operação GetRange poderá parar e retornar dados:

  • O volume de dados verificados atinge 4 MB.

  • O número de linhas verificadas atinge 5.000.

  • O número de linhas retornadas atinge o limite superior.

  • O throughput de leitura é insuficiente para ler a próxima linha de dados porque todo o throughput de leitura reservado foi consumido.

Operação de API

// Query multiple rows of data whose primary key values are in the specified range in a table. 
// @param GetRangeRequest            Encapsulate the parameters required to call the GetRange operation. 
// @return GetRangeResponse          The content of the response to the GetRange operation. 
GetRange(request *GetRangeRequest) (*GetRangeResponse,error)                   

Parâmetros

Parâmetro

Descrição

TableName

O nome da tabela.

Direction

A ordem de classificação das linhas na resposta.

  • Se este parâmetro for definido como FORWARD, o valor de chave primária inicial deverá ser menor que o valor de chave primária final, e as linhas na resposta serão ordenadas de forma crescente por valores de chave primária.

  • Se este parâmetro for definido como BACKWARD, o valor de chave primária inicial deverá ser maior que o valor de chave primária final, e as linhas na resposta serão ordenadas de forma decrescente por valores de chave primária.

Por exemplo, uma tabela possui dois valores de chave primária A e B, sendo o Valor A menor que o Valor B. Se o parâmetro Direction for definido como FORWARD e um intervalo [A, B) for especificado para a tabela, o Tablestore retornará as linhas cujos valores de chave primária sejam maiores ou iguais ao Valor A e menores que o Valor B em ordem crescente, do Valor A ao Valor B. Se o parâmetro Direction for definido como BACKWARD e um intervalo [B, A) for especificado para a tabela, o Tablestore retornará as linhas cujos valores de chave primária sejam menores ou iguais ao Valor B e maiores que o Valor A em ordem decrescente, do Valor B ao Valor A.

StartPrimaryKey

As informações de chave primária inicial e final do intervalo de leitura. As colunas de chave primária inicial e final devem ser colunas de chave primária válidas ou colunas virtuais cujos dados sejam do tipo INF_MIN e INF_MAX. O número de colunas no intervalo especificado por colunas virtuais deve ser igual ao número de colunas de chave primária da tabela especificada.

INF_MIN indica um valor infinitamente pequeno. Todos os valores de outros tipos são maiores que um valor do tipo INF_MIN. INF_MAX indica um valor infinitamente grande. Todos os valores de outros tipos são menores que um valor do tipo INF_MAX.

  • O parâmetro StartPrimaryKey especifica a coluna e o valor de chave primária inicial. Se uma linha contiver a coluna de chave primária inicial, os dados dessa linha serão retornados.

  • O parâmetro EndPrimaryKey especifica a coluna e o valor de chave primária final. Se uma linha contiver a coluna de chave primária final, os dados dessa linha não serão retornados.

As linhas da tabela são ordenadas de forma crescente com base nos valores de chave primária. O intervalo de leitura de dados é um intervalo fechado à esquerda e aberto à direita. Na leitura em direção progressiva, as linhas cujos valores de chave primária sejam maiores ou iguais ao valor de chave primária inicial e menores que o valor de chave primária final serão retornadas.

EndPrimaryKey

Limit

O número máximo de linhas que podem ser retornadas. O valor deste parâmetro deve ser maior que 0.

O Tablestore interrompe uma operação quando o número máximo de linhas retornáveis na direção progressiva ou regressiva é atingido, mesmo que algumas linhas no intervalo especificado não tenham sido retornadas. Use o valor do parâmetro NextStartPrimaryKey retornado na resposta para ler dados na próxima solicitação.

ColumnsToGet

As colunas que você deseja ler. É possível especificar nomes de colunas de chave primária ou colunas de atributo.

  • Se nenhuma coluna for especificada, todos os dados da linha serão retornados.

  • Se colunas forem especificadas, mas a linha não contiver as colunas indicadas, o valor retornado será nulo. Se a linha contiver algumas das colunas especificadas, os dados dessas colunas serão retornados.

null
  • Por padrão, o Tablestore retorna dados de todas as colunas de uma linha ao consultá-la. Use o parâmetro ColumnsToGet para retornar dados de colunas específicas. Se col0 e col1 forem adicionados ao parâmetro ColumnsToGet, somente os valores das colunas col0 e col1 serão retornados.

  • Se uma linha estiver no intervalo especificado para leitura com base nos valores de chave primária, mas não contiver as colunas indicadas para retorno, a resposta excluirá essa linha.

  • Se os parâmetros ColumnsToGet e Filter forem especificados, o Tablestore consultará as colunas indicadas pelo parâmetro ColumnsToGet e retornará as linhas que atendem às condições do filtro.

MaxVersions

O número máximo de versões de dados que podem ser lidas.

null

Especifique pelo menos um dos parâmetros MaxVersion e TimeRange.

  • Se somente o parâmetro MaxVersion for especificado, os dados do número indicado de versões serão retornados da entrada mais recente para a mais antiga.

  • Se somente o parâmetro TimeRange for especificado, todos os dados cujas versões estejam no intervalo de tempo indicado ou os dados da versão especificada serão retornados.

  • Se ambos os parâmetros MaxVersion e TimeRange forem especificados, os dados do número indicado de versões no intervalo de tempo especificado serão retornados da entrada mais recente para a mais antiga.

TimeRange

O intervalo de tempo das versões ou uma versão específica a ser lida. Para mais informações, consulte TimeRange.

null

Especifique pelo menos um dos parâmetros MaxVersion e TimeRange.

  • Se somente o parâmetro MaxVersion for especificado, os dados do número indicado de versões serão retornados da entrada mais recente para a mais antiga.

  • Se somente o parâmetro TimeRange for especificado, todos os dados cujas versões estejam no intervalo de tempo indicado ou os dados da versão especificada serão retornados.

  • Se ambos os parâmetros MaxVersion e TimeRange forem especificados, os dados do número indicado de versões no intervalo de tempo especificado serão retornados da entrada mais recente para a mais antiga.

  • Para consultar dados cujas versões estejam em um intervalo de tempo específico, especifique os parâmetros start_time e end_time. O parâmetro start_time indica o timestamp inicial. O parâmetro end_time indica o timestamp final. O intervalo especificado é um intervalo fechado à esquerda e aberto à direita no formato [start_time, end_time).

  • Para consultar dados de uma versão específica, especifique o parâmetro specific_time. O parâmetro specific_time indica um timestamp específico.

Somente um entre specific_time e [start_time, end_time) é necessário.

Valores válidos do parâmetro TimeRange: 0 a INT64.MAX. Unidade: milissegundo.

Filter

O filtro a ser usado para filtrar os resultados da consulta no lado do servidor. Somente as linhas que atendem às condições do filtro serão retornadas. Para mais informações, consulte Filtros.

null

Se os parâmetros ColumnsToGet e Filter forem especificados, o Tablestore consultará as colunas indicadas pelo parâmetro ColumnsToGet e retornará as linhas que atendem às condições do filtro.

NextStartPrimaryKey

As informações de chave primária inicial da próxima solicitação de leitura. O valor do parâmetro NextStartPrimaryKey pode ser usado para determinar se todos os dados foram lidos.

  • Se o valor do parâmetro NextStartPrimaryKey não estiver vazio na resposta, ele poderá ser usado como informação de chave primária inicial para a próxima operação GetRange.

  • Se o valor do parâmetro NextStartPrimaryKey estiver vazio na resposta, todos os dados dentro do intervalo foram retornados.

Código de exemplo

O código de exemplo a seguir demonstra como ler dados cujos valores de chave primária estejam no intervalo especificado:

getRangeRequest := &tablestore.GetRangeRequest{}
rangeRowQueryCriteria := &tablestore.RangeRowQueryCriteria{}
rangeRowQueryCriteria.TableName = tableName

startPK := new(tablestore.PrimaryKey)
startPK.AddPrimaryKeyColumnWithMinValue("pk1")
startPK.AddPrimaryKeyColumnWithMinValue("pk2")
startPK.AddPrimaryKeyColumnWithMinValue("pk3")
endPK := new(tablestore.PrimaryKey)
endPK.AddPrimaryKeyColumnWithMaxValue("pk1")
endPK.AddPrimaryKeyColumnWithMaxValue("pk2")
endPK.AddPrimaryKeyColumnWithMaxValue("pk3")
rangeRowQueryCriteria.StartPrimaryKey = startPK
rangeRowQueryCriteria.EndPrimaryKey = endPK
rangeRowQueryCriteria.Direction = tablestore.FORWARD
rangeRowQueryCriteria.MaxVersion = 1
rangeRowQueryCriteria.Limit = 10
getRangeRequest.RangeRowQueryCriteria = rangeRowQueryCriteria

getRangeResp, err := client.GetRange(getRangeRequest)

fmt.Println("get range result is " ,getRangeResp)

for {
    if err != nil {
        fmt.Println("get range failed with error:", err)
    }
    for _, row := range getRangeResp.Rows {
        fmt.Println("range get row with key", row.PrimaryKey.PrimaryKeys[0].Value, row.PrimaryKey.PrimaryKeys[1].Value, row.PrimaryKey.PrimaryKeys[2].Value)
    }
    if getRangeResp.NextStartPrimaryKey == nil {
        break
    } else {
        fmt.Println("next pk is :", getRangeResp.NextStartPrimaryKey.PrimaryKeys[0].Value, getRangeResp.NextStartPrimaryKey.PrimaryKeys[1].Value, getRangeResp.NextStartPrimaryKey.PrimaryKeys[2].Value)
        getRangeRequest.RangeRowQueryCriteria.StartPrimaryKey = getRangeResp.NextStartPrimaryKey
        getRangeResp, err = client.GetRange(getRangeRequest)
    }
    fmt.Println("continue to query rows")
}
fmt.Println("range get row finished")

Para consultar o código de exemplo detalhado, acesse GetRange@GitHub.