全部产品
Search
文档中心

Tablestore:Baca beberapa baris data secara bersamaan

更新时间:Jul 06, 2025

Topik ini menjelaskan cara membaca beberapa baris data dari Tablestore menggunakan SDK Java. Anda dapat menanyakan data dari beberapa tabel.

Catatan penggunaan

Anda dapat membaca maksimal 100 baris data dalam satu operasi pembacaan batch.

Prasyarat

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

Metode

public BatchGetRowResponse batchGetRow(BatchGetRowRequest batchGetRowRequest) throws TableStoreException, ClientException

Parameter BatchGetRowRequest

  • criteriasGroupByTable (wajib) Map<String, MultiRowQueryCriteria>: Informasi tentang operasi pembacaan batch. MultiRowQueryCriteria mencakup parameter berikut.

    Catatan

    Saat menanyakan data dari beberapa tabel, satu objek MultiRowQueryCriteria sesuai dengan satu tabel. Semua baris dalam objek MultiRowQueryCriteria menggunakan kriteria query yang sama.

    Parameter

    Tipe

    Deskripsi

    tableName (wajib)

    String

    Nama tabel data.

    rowKeys (wajib)

    List<PrimaryKey>

    Daftar kolom primary key.

    maxVersions (opsional)

    OptionalValue<Integer>

    Jumlah maksimum versi.

    • Anda harus menentukan setidaknya salah satu dari jumlah maksimum versi atau rentang versi.

    • Jika jumlah versi data yang memenuhi kondisi query melebihi jumlah maksimum versi yang ditentukan, data dengan jumlah versi yang ditentukan akan dikembalikan dari yang terbaru hingga yang tertua.

    timeRange (opsional)

    OptionalValue<TimeRange>

    Rentang versi yang akan dibaca.

    • Anda harus menentukan setidaknya salah satu dari jumlah maksimum versi atau rentang versi.

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

    columnsToGet (opsional)

    Set<String>

    Kolom yang akan dibaca, yang bisa berupa kolom primary key atau kolom atribut.

    • Jika columnsToGet tidak ditentukan, seluruh baris akan dikembalikan.

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

    filter (opsional)

    OptionalValue<Filter>

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

    • Jika columnsToGet dan filter keduanya ditentukan, baris yang memenuhi kondisi yang ditentukan oleh columnsToGet akan difilter terlebih dahulu, kemudian difilter berdasarkan kondisi filter.

Kode contoh

Contoh kode berikut membaca dua baris data dengan nilai primary key row1 dan row2 dari tabel test_table.

public static void batchGetRowExample(SyncClient client) {
    // Konstruksi kondisi query.
    MultiRowQueryCriteria multiRowQueryCriteria = new MultiRowQueryCriteria("test_table");
    // Tambahkan informasi primary key untuk baris pertama.
    PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
    multiRowQueryCriteria.addRow(primaryKeyBuilder.build());
    // Tambahkan informasi primary key untuk baris kedua.
    primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row2"));
    multiRowQueryCriteria.addRow(primaryKeyBuilder.build());
    // Tentukan versi yang akan diquery.
    multiRowQueryCriteria.setMaxVersions(1);

    // Panggil metode batchGetRow untuk melakukan query data batch.
    BatchGetRowRequest batchGetRowRequest = new BatchGetRowRequest();
    batchGetRowRequest.addMultiRowQueryCriteria(multiRowQueryCriteria);
    BatchGetRowResponse batchGetRowResponse = client.batchGetRow(batchGetRowRequest);

    // Kembalikan hasil.
    System.out.println("* RequestId: " + batchGetRowResponse.getRequestId());
    System.out.println("* Apakah semua berhasil: " + batchGetRowResponse.isAllSucceed());
    // Cetak baris yang berhasil dibaca.
    System.out.println("* Baris yang berhasil: ");
    for(BatchGetRowResponse.RowResult rowResult:batchGetRowResponse.getSucceedRows())
        System.out.println(rowResult.getRow());
    // Cetak baris yang gagal dibaca.
    if(!batchGetRowResponse.isAllSucceed()) {
        System.out.println("* Baris yang gagal: ");
        for(BatchGetRowResponse.RowResult rowResult:batchGetRowResponse.getFailedRows())
            System.out.println(rowResult.getTableName() + " | " + batchGetRowRequest.getPrimaryKey(rowResult.getTableName(), rowResult.getIndex()) + " | " + rowResult.getError());
    }
}

Anda dapat merujuk pada contoh kode berikut untuk mengonfigurasi parameter saat membaca data dalam batch.

  • Baca data dari beberapa tabel. Anda dapat membaca data dari beberapa tabel sekaligus dalam operasi pembacaan batch. Tentukan objek MultiRowQueryCriteria untuk setiap tabel.

    // Konstruksi kondisi query untuk tabel kedua.
    MultiRowQueryCriteria multiRowQueryCriteria1 = new MultiRowQueryCriteria("orders_small");
    // Tambahkan informasi primary key untuk baris pertama.
    primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    primaryKeyBuilder.addPrimaryKeyColumn("order_id", PrimaryKeyValue.fromString("90fb478c-1360-11f0-a34d-00163e30a2a9"));
    multiRowQueryCriteria1.addRow(primaryKeyBuilder.build());
    // Tentukan versi yang akan diquery.
    multiRowQueryCriteria1.setMaxVersions(1);
    // Tambahkan MultiRowQueryCriteria ke permintaan.
    batchGetRowRequest.addMultiRowQueryCriteria(multiRowQueryCriteria1);
  • Tentukan rentang versi yang akan dibaca. Hanya data dalam rentang versi tersebut yang akan dikembalikan.

    // Tentukan rentang versi untuk membaca data dari satu hari yang lalu hingga waktu saat ini.
    multiRowQueryCriteria.setTimeRange(new TimeRange(System.currentTimeMillis() - 86400*1000, System.currentTimeMillis()));
  • Tentukan kolom atribut yang akan dibaca.

    multiRowQueryCriteria.addColumnsToGet("col1");

Referensi