Todos os produtos
Search
Central de documentação

Tablestore:Batch read rows

Última atualização: Jul 09, 2026

Leia várias linhas de uma ou mais tabelas em uma única solicitação com o Tablestore SDK for Java. Cada linha retorna um resultado independente, o que permite buscar registros detalhados em lote pela chave primária.

Pré-requisitos

Instale o Tablestore SDK for Java e inicialize o cliente.

Descrição

public BatchGetRowResponse batchGetRow(BatchGetRowRequest batchGetRowRequest) throws TableStoreException, ClientException

Leia múltiplas linhas em uma única solicitação. Um objeto BatchGetRowRequest contém um ou mais objetos MultiRowQueryCriteria, adicionados ao chamar addMultiRowQueryCriteria. Cada MultiRowQueryCriteria refere-se a uma tabela específica. Todas as linhas nesse critério compartilham as mesmas condições de consulta, como maxVersions, columnsToGet e filter.

O servidor processa cada linha independentemente; uma falha em uma linha não afeta as demais. Chame isAllSucceed, getSucceedRows ou getFailedRows para inspecionar os resultados no nível da linha.

Nota

Uma única chamada a BatchGetRow pode recuperar até 100 linhas.

O exemplo a seguir lê duas linhas (chaves primárias row1 e row2) da tabela batch_get_demo e retorna apenas a versão mais recente de cada coluna.

String tableName = "batch_get_demo";

MultiRowQueryCriteria criteria = new MultiRowQueryCriteria(tableName);

// Add primary key for row 1
PrimaryKeyBuilder pkb1 = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pkb1.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
criteria.addRow(pkb1.build());

// Add primary key for row 2
PrimaryKeyBuilder pkb2 = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pkb2.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row2"));
criteria.addRow(pkb2.build());

criteria.setMaxVersions(1);

BatchGetRowRequest request = new BatchGetRowRequest();
request.addMultiRowQueryCriteria(criteria);

BatchGetRowResponse response = client.batchGetRow(request);
System.out.println("RequestId: " + response.getRequestId());
System.out.println("All Succeeded: " + response.isAllSucceed());

for (BatchGetRowResponse.RowResult rowResult : response.getSucceedRows()) {
    System.out.println("Succeeded: " + rowResult.getRow());
}
if (!response.isAllSucceed()) {
    for (BatchGetRowResponse.RowResult fail : response.getFailedRows()) {
        System.out.println("Failed: table=" + fail.getTableName()
                + " index=" + fail.getIndex()
                + " error=" + fail.getError());
    }
}

Os parâmetros obrigatórios são tableName, rowKeys e um entre maxVersions ou timeRange. Consulte a tabela de Parâmetros para ver o esquema completo.

Parâmetros

Um objeto MultiRowQueryCriteria carrega as condições de consulta em lote para uma única tabela.

Name

Type

Description

tableName (required)

String

Nome da tabela a ser lida.

rowKeys (required)

List<PrimaryKey>

Lista de chaves primárias, adicionada ao chamar addRow(PrimaryKey). Todas as linhas neste critério compartilham as mesmas condições de consulta.

maxVersions (one required)

OptionalValue<Integer>

Número máximo de versões a serem lidas. Defina pelo menos um entre maxVersions ou timeRange.

Se uma coluna tiver mais versões do que o valor definido em maxVersions, apenas as versões mais recentes serão retornadas, até o limite de maxVersions.

timeRange (one required)

OptionalValue<TimeRange>

Intervalo de tempo para leitura. Defina pelo menos um entre maxVersions ou timeRange.

Cada coluna de atributo pode ter múltiplas versões. Após definir um intervalo de tempo, o Tablestore retorna apenas as versões dentro desse intervalo.

columnsToGet (optional)

Set<String>

Colunas a serem lidas — podem ser colunas de chave primária ou colunas de atributo.

  • Se você não defina columnsToGet, o Tablestore retorna a linha inteira.

  • Caso defina columnsToGet, mas a linha não contenha nenhuma das colunas especificadas, o Tablestore retorna null.

filter (optional)

OptionalValue<Filter>

Condição de filtro. Para mais detalhes, consulte Usar filtros.

Ao defina tanto columnsToGet quanto filter, o Tablestore primeiro seleciona as colunas especificadas em columnsToGet e depois aplica o filter às linhas.

Cenários

Leitura em várias tabelas

Para ler dados de múltiplas tabelas em uma única solicitação, crie um objeto MultiRowQueryCriteria por tabela e adicione cada um à solicitação usando addMultiRowQueryCriteria.

String tableA = "batch_get_demo";
String tableB = "batch_get_demo_2";

BatchGetRowRequest request = new BatchGetRowRequest();

// Query conditions for table A
MultiRowQueryCriteria criteriaA = new MultiRowQueryCriteria(tableA);
PrimaryKeyBuilder pkA = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pkA.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
criteriaA.addRow(pkA.build());
criteriaA.setMaxVersions(1);
request.addMultiRowQueryCriteria(criteriaA);

// Query conditions for table B
MultiRowQueryCriteria criteriaB = new MultiRowQueryCriteria(tableB);
PrimaryKeyBuilder pkB = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pkB.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("rowA"));
criteriaB.addRow(pkB.build());
criteriaB.setMaxVersions(1);
request.addMultiRowQueryCriteria(criteriaB);

BatchGetRowResponse response = client.batchGetRow(request);
System.out.println("Total succeeded rows: " + response.getSucceedRows().size());

Leitura com filtro

Chame setFilter para anexar um filtro de valor de coluna ao critério. Todas as linhas neste MultiRowQueryCriteria usam o mesmo filtro, e o Tablestore retorna apenas as linhas correspondentes.

String tableName = "batch_get_demo";

MultiRowQueryCriteria criteria = new MultiRowQueryCriteria(tableName);

PrimaryKeyBuilder pkb1 = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pkb1.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
criteria.addRow(pkb1.build());
PrimaryKeyBuilder pkb2 = PrimaryKeyBuilder.createPrimaryKeyBuilder();
pkb2.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row2"));
criteria.addRow(pkb2.build());

criteria.setMaxVersions(1);

// Return only rows where col1 equals "val1"
SingleColumnValueFilter filter = new SingleColumnValueFilter(
        "col1",
        SingleColumnValueFilter.CompareOperator.EQUAL,
        ColumnValue.fromString("val1"));
filter.setPassIfMissing(false);
criteria.setFilter(filter);

BatchGetRowRequest request = new BatchGetRowRequest();
request.addMultiRowQueryCriteria(criteria);

BatchGetRowResponse response = client.batchGetRow(request);
int matched = 0;
for (BatchGetRowResponse.RowResult rowResult : response.getSucceedRows()) {
    if (rowResult.getRow() != null) {
        matched++;
    }
}
System.out.println("Rows matching filter: " + matched);

Referências