全部产品
Search
文档中心

Tablestore:Baca Data Menggunakan Iterator

更新时间:Jul 06, 2025

Topik ini menjelaskan cara menggunakan Tablestore SDK for Java untuk membaca data dari Tablestore dengan menggunakan iterator.

Prasyarat

Klien telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien Tablestore.

Deskripsi metode

public Iterator<Row> createRangeIterator(RangeIteratorParameter rangeIteratorParameter) throws TableStoreException, ClientException

Parameter RangeIteratorParameter

Parameter

Tipe

Deskripsi

tableName (wajib)

String

Nama tabel data.

inclusiveStartPrimaryKey (wajib)

PrimaryKey

Informasi primary key awal.

  • Data yang dikembalikan termasuk primary key awal.

  • Jumlah dan tipe kolom primary key yang Anda tentukan harus sesuai dengan tabel.

  • Saat membaca data dalam arah maju, primary key awal harus lebih kecil dari primary key akhir.

  • Saat membaca data dalam arah mundur, primary key awal harus lebih besar dari primary key akhir.

  • PrimaryKeyValue.INF_MIN menunjukkan nilai minimum. PrimaryKeyValue.INF_MAX menunjukkan nilai maksimum.

exclusiveEndPrimaryKey (wajib)

PrimaryKey

Informasi primary key akhir.

  • Data yang dikembalikan tidak termasuk primary key akhir.

  • Jumlah dan tipe kolom primary key yang Anda tentukan harus sesuai dengan tabel.

  • PrimaryKeyValue.INF_MIN menunjukkan nilai minimum. PrimaryKeyValue.INF_MAX menunjukkan nilai maksimum.

direction (opsional)

Direction

Arah pembacaan data.

  • FORWARD: membaca data dalam arah maju. Ini adalah nilai default.

  • BACKWARD: membaca data dalam arah mundur.

maxVersions (opsional)

OptionalValue<Integer>

Jumlah maksimum versi.

  • Anda harus menentukan jumlah maksimum versi atau rentang versi.

  • Jika jumlah versi yang memenuhi kondisi permintaan melebihi jumlah maksimum yang ditentukan, data dengan jumlah versi yang ditentukan akan dikembalikan dalam urutan menurun berdasarkan nomor versi.

timeRange (opsional)

OptionalValue<TimeRange>

Rentang versi yang dibaca.

  • Anda harus menentukan jumlah maksimum versi atau rentang versi.

  • Setiap kolom atribut dalam tabel Tablestore dapat memiliki beberapa versi. Setelah Anda menentukan rentang versi, hanya data dalam rentang tersebut yang akan dikembalikan.

maxCount (opsional)

int

Jumlah maksimum baris yang dibaca menggunakan iterator. Nilai harus lebih besar dari 0.

bufferSize (opsional)

int

Ukuran buffer. Nilai harus lebih besar dari 0. Jika jumlah baris yang memenuhi kondisi permintaan melebihi ukuran buffer yang ditentukan, setiap permintaan mengembalikan jumlah baris yang ditentukan dan primary key awal dari baris berikutnya yang akan dibaca.

columnsToGet (opsional)

Set<String>

Kolom yang dibaca. Kolom dapat berupa kolom primary key atau kolom atribut.

  • Jika columnsToGet tidak ditentukan, seluruh baris dikembalikan.

  • Jika columnsToGet ditentukan dan baris tidak mengandung salah satu kolom yang ditentukan, baris tersebut tidak dikembalikan.

filter (opsional)

OptionalValue<Filter>

Kondisi filter. Untuk informasi lebih lanjut, lihat Konfigurasikan filter.

  • Jika parameter columnsToGet dan filter ditentukan, baris yang memenuhi kondisi permintaan difilter berdasarkan parameter columnsToGet, kemudian difilter berdasarkan kondisi filter.

Contoh kode

Berikut adalah contoh kode yang menunjukkan cara menggunakan iterator untuk membaca data dari tabel test_table mulai dari nilai primary key row1.

public static void createRangeIteratorExample(SyncClient client) {
    // Konstruksi kondisi permintaan iteratif.
    RangeIteratorParameter rangeIteratorParameter = new RangeIteratorParameter("test_table");
    // Tentukan primary key awal untuk permintaan iteratif.
    PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
    rangeIteratorParameter.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
    // Tentukan primary key akhir untuk permintaan iteratif. Hasilnya tidak termasuk primary key akhir.
    primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.INF_MAX);
    rangeIteratorParameter.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
    // Tentukan versi yang akan diperiksa.
    rangeIteratorParameter.setMaxVersions(1);

    // Panggil createRangeIterator untuk mendapatkan iterator.
    Iterator<Row> iterator = client.createRangeIterator(rangeIteratorParameter);
    while(iterator.hasNext()) {
        Row row = iterator.next();
        System.out.println(row);
    }
}

Anda dapat merujuk pada contoh kode berikut untuk mengonfigurasi parameter saat membaca data menggunakan iterator.

  • Tentukan arah pembacaan data.

    // Tentukan bahwa data dibaca dalam arah mundur.
    rangeIteratorParameter.setDirection(Direction.BACKWARD);
    // Tentukan primary key awal untuk permintaan iteratif. Saat membaca data dalam arah mundur, primary key awal harus lebih besar dari primary key akhir.
    PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.INF_MAX);
    rangeIteratorParameter.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
    // Tentukan primary key akhir untuk permintaan iteratif. Hasilnya tidak termasuk primary key akhir.
    primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
    rangeIteratorParameter.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
  • Tentukan rentang versi untuk data yang dibaca. Hanya data dalam rentang ini yang akan dikembalikan.

    // Tetapkan rentang versi untuk memeriksa data dari satu hari yang lalu hingga waktu saat ini.
    rangeIteratorParameter.setTimeRange(new TimeRange(System.currentTimeMillis() - 86400*1000, System.currentTimeMillis()));
  • Tentukan jumlah maksimum baris yang dibaca menggunakan iterator.

    rangeIteratorParameter.setMaxCount(20);
  • Tentukan ukuran buffer.

    rangeIteratorParameter.setBufferSize(5);
  • Tentukan kolom atribut yang akan dibaca.

    rangeIteratorParameter.addColumnsToGet("col2");

Referensi