All Products
Search
Document Center

Tablestore:Membaca rentang baris

Last Updated:Aug 06, 2026

Gunakan Tablestore SDK for Java untuk membaca baris berurutan dari tabel model Kolom Lebar dalam rentang kunci primer.

Prasyarat

Instal Tablestore SDK for Java dan inisialisasi klien.

Deskripsi

Panggil getRange untuk membaca baris secara berurutan dalam urutan maju atau mundur dalam rentang kunci primer. Anda dapat menentukan kolom yang dikembalikan, rentang versi data, serta kondisi filter.

public GetRangeResponse getRange(GetRangeRequest getRangeRequest) throws TableStoreException, ClientException
Catatan

Satu kali pembacaan rentang mengembalikan maksimal 5.000 baris atau data sebesar 4 MB. Jika salah satu batas tercapai, gunakan nextStartPrimaryKey dalam respons untuk melanjutkan pembacaan.

Contoh berikut melakukan pemindaian maju pada get_range_demo, membaca semua baris dengan kunci primer lebih besar dari atau sama dengan row1, dan hanya mengembalikan versi terbaru dari setiap kolom.

String tableName = "get_range_demo";

RangeRowQueryCriteria criteria = new RangeRowQueryCriteria(tableName);

// Kunci primer awal (inklusif)
PrimaryKeyBuilder startPkBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
startPkBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
criteria.setInclusiveStartPrimaryKey(startPkBuilder.build());

// Kunci primer akhir (eksklusif); INF_MAX menyatakan tak hingga positif
PrimaryKeyBuilder endPkBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
endPkBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.INF_MAX);
criteria.setExclusiveEndPrimaryKey(endPkBuilder.build());

criteria.setMaxVersions(1);

GetRangeResponse response = client.getRange(new GetRangeRequest(criteria));
for (Row row : response.getRows()) {
    System.out.println(row);
}

Parameter

GetRangeRequest mencakup parameter berikut.

Name

Type

Description

rangeRowQueryCriteria (required)

RangeRowQueryCriteria

Kriteria untuk membaca rentang baris.

transactionId (optional)

String

ID transaksi lokal. Tetapkan parameter ini hanya saat Anda membaca data dalam transaksi lokal.

Untuk informasi tentang cara memperoleh dan menggunakan ID tersebut, lihat Use local transactions.

Kriteria kueri rentang

rangeRowQueryCriteria bertipe RangeRowQueryCriteria dan mencakup parameter berikut.

Name

Type

Description

tableName (required)

String

Nama tabel.

inclusiveStartPrimaryKey (required)

PrimaryKey

Kunci primer awal inklusif. Untuk pembacaan maju, nilainya harus lebih kecil daripada kunci primer akhir. Untuk pembacaan mundur, nilainya harus lebih besar daripada kunci primer akhir. Skemanya harus sesuai dengan skema tabel. Gunakan PrimaryKeyValue.INF_MIN dan PrimaryKeyValue.INF_MAX untuk merepresentasikan tak hingga negatif dan positif.

exclusiveEndPrimaryKey (required)

PrimaryKey

Kunci primer akhir eksklusif. Skemanya harus sesuai dengan skema tabel. Gunakan PrimaryKeyValue.INF_MIN dan PrimaryKeyValue.INF_MAX untuk merepresentasikan tak hingga negatif dan positif.

direction (optional)

Direction

Arah pembacaan. Nilai default adalah FORWARD. Tetapkan parameter ini ke BACKWARD untuk pembacaan mundur.

maxVersions (optional)

Integer

Jumlah maksimum versi data yang dikembalikan untuk setiap kolom atribut. Jika terdapat lebih banyak versi yang sesuai, Tablestore mengembalikan versi dari yang terbaru ke yang terlama. Tetapkan minimal salah satu dari maxVersions dan timeRange.

timeRange (optional)

TimeRange

Rentang versi data. Hanya versi dalam rentang yang dikembalikan. Tetapkan minimal salah satu dari maxVersions dan timeRange.

limit (optional)

Integer

Jumlah maksimum baris yang dikembalikan dalam satu panggilan. Nilainya harus lebih besar dari 0. Saat batas tercapai, gunakan nextStartPrimaryKey dalam respons untuk melanjutkan pembacaan.

columnsToGet (optional)

Set<String>

Kolom yang akan dikembalikan. Jika Anda tidak menentukan parameter ini, seluruh baris dikembalikan. Jika Anda menentukannya, baris yang tidak mengandung kolom yang ditentukan tidak dikembalikan.

filter (optional)

Filter

Kondisi filter. Jika Anda menentukan columnsToGet dan filter, Tablestore terlebih dahulu memilih kolom yang dikembalikan lalu menerapkan filter.

Untuk informasi tentang cara mengonfigurasi filter, lihat Use filters.

Respons

GetRangeResponse mencakup bidang spesifik operasi berikut.

Field

Type

Description

rows

List<Row>

Baris yang dikembalikan dalam panggilan saat ini, diperoleh dengan memanggil getRows.

nextStartPrimaryKey

PrimaryKey

Kunci primer awal untuk panggilan berikutnya, diperoleh dengan memanggil getNextStartPrimaryKey. Jika seluruh rentang telah selesai dibaca, nilai null dikembalikan.

Contoh skenario

Iterasi berpaginasi

nextStartPrimaryKey dalam respons merupakan kunci primer awal halaman berikutnya. Panggil getRange dalam loop hingga nextStartPrimaryKey bernilai null untuk memindai semua baris yang sesuai.

String tableName = "get_range_demo";

RangeRowQueryCriteria criteria = new RangeRowQueryCriteria(tableName);

PrimaryKeyBuilder startPkBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
startPkBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.INF_MIN);
criteria.setInclusiveStartPrimaryKey(startPkBuilder.build());

PrimaryKeyBuilder endPkBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
endPkBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.INF_MAX);
criteria.setExclusiveEndPrimaryKey(endPkBuilder.build());

criteria.setMaxVersions(1);

int totalRows = 0;
while (true) {
    GetRangeResponse response = client.getRange(new GetRangeRequest(criteria));
    totalRows += response.getRows().size();

    // Respons saat ini belum mengembalikan semua baris; gunakan nextStartPrimaryKey untuk mengambil halaman berikutnya.
    PrimaryKey nextStart = response.getNextStartPrimaryKey();
    if (nextStart == null) {
        break;
    }
    criteria.setInclusiveStartPrimaryKey(nextStart);
}
System.out.println("Total rows scanned: " + totalRows);

Pemindaian mundur

Gunakan setDirection(Direction.BACKWARD) untuk memindai secara mundur. Kunci primer awal harus lebih besar daripada kunci primer akhir.

String tableName = "get_range_demo";

RangeRowQueryCriteria criteria = new RangeRowQueryCriteria(tableName);
criteria.setDirection(Direction.BACKWARD);

// Untuk pemindaian mundur, kunci primer awal harus lebih besar daripada kunci primer akhir
PrimaryKeyBuilder startPkBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
startPkBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.INF_MAX);
criteria.setInclusiveStartPrimaryKey(startPkBuilder.build());

PrimaryKeyBuilder endPkBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
endPkBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
criteria.setExclusiveEndPrimaryKey(endPkBuilder.build());

criteria.setMaxVersions(1);

GetRangeResponse response = client.getRange(new GetRangeRequest(criteria));
System.out.println("Rows (backward): " + response.getRows().size());

Filter bersyarat

Gunakan setFilter untuk hanya mengembalikan baris yang memenuhi kondisi nilai kolom tertentu.

String tableName = "get_range_demo";

RangeRowQueryCriteria criteria = new RangeRowQueryCriteria(tableName);

PrimaryKeyBuilder startPkBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
startPkBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.INF_MIN);
criteria.setInclusiveStartPrimaryKey(startPkBuilder.build());

PrimaryKeyBuilder endPkBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
endPkBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.INF_MAX);
criteria.setExclusiveEndPrimaryKey(endPkBuilder.build());

criteria.setMaxVersions(1);

// Mengembalikan hanya baris di mana col1 sama dengan "val1"
SingleColumnValueFilter filter = new SingleColumnValueFilter(
        "col1",
        SingleColumnValueFilter.CompareOperator.EQUAL,
        ColumnValue.fromString("val1"));
filter.setPassIfMissing(false);
criteria.setFilter(filter);

GetRangeResponse response = client.getRange(new GetRangeRequest(criteria));
System.out.println("Rows (filtered): " + response.getRows().size());