Utilize o Tablestore SDK for Java para ler uma linha de uma tabela do modelo Wide Column usando sua chave primária completa.
Pré-requisitos
Instale o Tablestore SDK for Java e inicialize o cliente.
Descrição
Chame getRow para ler uma linha pela chave primária completa. É possível especificar as colunas retornadas, o intervalo de versões dos dados e as condições de filtro.
public GetRowResponse getRow(GetRowRequest getRowRequest) throws TableStoreException, ClientException
Defina pelo menos um dos parâmetros: maxVersions ou timeRange. Caso contrário, o servidor retornará um erro de parâmetro.
O exemplo a seguir lê a linha com chave primária row1 da tabela get_row_demo e retorna apenas a versão mais recente de cada coluna.
String tableName = "get_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria(tableName, primaryKey);
criteria.setMaxVersions(1);
GetRowResponse response = client.getRow(new GetRowRequest(criteria));
System.out.println("Row: " + response.getRow());
Parâmetros
GetRowRequest contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
rowQueryCriteria (obrigatório) |
|
Critérios para leitura da linha. |
|
transactionId (opcional) |
|
ID da transação local. Defina este parâmetro somente ao ler dados em uma transação local. Para obter informações sobre como adquirir e usar o ID, consulte Use local transactions. |
Critérios de consulta de linha única
rowQueryCriteria é do tipo SingleRowQueryCriteria e contém os parâmetros abaixo.
|
Nome |
Tipo |
Descrição |
|
tableName (obrigatório) |
|
Nome da tabela. |
|
primaryKey (obrigatório) |
|
Chave primária da linha. Especifique todas as colunas de chave primária na mesma ordem e com os mesmos tipos definidos no esquema da tabela. As colunas de chave primária aceitam os tipos |
|
maxVersions (opcional) |
|
Número máximo de versões de dados a serem retornadas. Se houver mais versões correspondentes, o Tablestore as retorna da mais nova para a mais antiga. Defina pelo menos um entre |
|
timeRange (opcional) |
|
Intervalo de versões dos dados. Apenas as versões dentro desse intervalo são retornadas. Configure pelo menos um dos parâmetros: |
|
columnsToGet (opcional) |
|
Colunas a serem retornadas. Se você não especificar este parâmetro, toda a linha será retornada. Ao defini-lo, caso a linha não possua nenhuma das colunas indicadas, o resultado será |
|
filter (opcional) |
|
Condição de filtro. Quando Para detalhes sobre a configuração do filtro, veja Use filters. |
Resposta
GetRowResponse inclui o seguinte campo específico da operação.
|
Campo |
Tipo |
Descrição |
|
|
|
Linha consultada obtida pela chamada de |
Exemplos
Ler colunas de atributo específicas
Use addColumnsToGet para definir os nomes das colunas de atributo desejadas. Somente essas colunas aparecerão na resposta.
String tableName = "get_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria(tableName, primaryKey);
criteria.setMaxVersions(1);
// Read only col1 and col2
criteria.addColumnsToGet("col1");
criteria.addColumnsToGet("col2");
GetRowResponse response = client.getRow(new GetRowRequest(criteria));
System.out.println("Row (selected columns): " + response.getRow());
Ler por intervalo de versões
Empregue setTimeRange para determinar um período temporal de versões. O sistema retornará exclusivamente as versões compreendidas nesse intervalo.
String tableName = "get_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria(tableName, primaryKey);
// Read all versions from the past day
long now = System.currentTimeMillis();
criteria.setTimeRange(new TimeRange(now - 86400 * 1000L, now));
criteria.setMaxVersions(Integer.MAX_VALUE);
GetRowResponse response = client.getRow(new GetRowRequest(criteria));
System.out.println("Row (time range): " + response.getRow());
Ler com filtro
Aplique setFilter para estabelecer um filtro de valor de coluna. A linha só será devolvida pelo Tablestore se satisfizer a condição definida.
String tableName = "get_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria(tableName, primaryKey);
criteria.setMaxVersions(1);
// Return the row only when col1 equals "val1"
SingleColumnValueFilter filter = new SingleColumnValueFilter(
"col1",
SingleColumnValueFilter.CompareOperator.EQUAL,
ColumnValue.fromString("val1"));
// Skip the row when the column is missing
filter.setPassIfMissing(false);
criteria.setFilter(filter);
GetRowResponse response = client.getRow(new GetRowRequest(criteria));
System.out.println("Row (filtered): " + response.getRow());