All Products
Search
Document Center

Tablestore:Membaca data

Last Updated:Sep 30, 2026

Tablestore menyediakan API GetRow untuk membaca satu baris data, serta API BatchGetRow dan GetRange untuk membaca beberapa baris data.

Catatan

Unit dasar sebuah tabel adalah baris, yang terdiri dari kolom kunci primer dan kolom atribut. Kolom kunci primer wajib ada, dan nama serta tipe datanya harus sama untuk semua baris. Kolom atribut bersifat opsional, dan atributnya dapat berbeda-beda antar baris. Untuk informasi selengkapnya, lihat Wide table model.

Catatan

Saat membaca data dari tabel yang memiliki kolom kunci primer auto-increment, Anda harus menyediakan kunci primer lengkap, termasuk nilai kolom auto-increment tersebut. Untuk informasi selengkapnya, lihat Auto-increment primary key column.

Penting

Jika Anda tidak memiliki nilai kolom kunci primer auto-increment, Anda dapat melakukan kueri rentang pada kolom kunci primer pertama untuk membaca data tersebut.

Membaca satu baris data

Anda dapat memanggil operasi GetRow untuk membaca satu baris data. Operasi ini berguna jika Anda mengetahui kunci primer lengkap dan hanya perlu membaca beberapa baris.

Saat membaca satu baris, Anda dapat mengonfigurasi kondisi berikut untuk memfilter data:

  • Secara default, semua kolom dikembalikan. Anda dapat mengonfigurasi operasi agar hanya mengembalikan kolom tertentu.

  • Gunakan filter untuk mengembalikan baris yang memenuhi kondisi filter tertentu. Untuk informasi selengkapnya, lihat Filters.

  • Jika Anda telah mengonfigurasi beberapa versi data untuk tabel, Anda dapat menentukan jumlah maksimum versi yang akan dibaca. Anda juga dapat membaca data dari rentang waktu tertentu atau dengan nomor versi tertentu. Untuk informasi selengkapnya tentang versi data, lihat Data versions and lifecycle.

Operasi baca memiliki dua kemungkinan hasil:

  • Jika baris tersebut ada, operasi akan mengembalikan kolom kunci primer dan kolom atribut dari baris tersebut.

  • Jika baris tersebut tidak ada, hasilnya tidak menyertakan baris tersebut, dan tidak ada error yang dilaporkan.

Membaca data secara batch

Anda dapat memanggil operasi BatchGetRow untuk membaca beberapa baris dalam satu permintaan atau membaca data dari beberapa tabel sekaligus. Operasi ini berguna jika Anda mengetahui kunci primer lengkap dan perlu membaca banyak baris atau data dari beberapa tabel.

Operasi BatchGetRow terdiri dari beberapa sub-operasi GetRow. Proses pembuatan sub-operasi sama dengan operasi GetRow.

Saat membaca data secara batch, Anda dapat mengonfigurasi kondisi berikut untuk memfilter data:

  • Membaca data dari beberapa tabel dalam satu permintaan.

    Satu permintaan dapat membaca maksimal 100 baris.

  • Secara default, semua kolom dikembalikan. Anda dapat mengonfigurasi operasi agar hanya mengembalikan kolom tertentu.

    Semua baris dalam pembacaan batch menggunakan kondisi parameter yang sama. Misalnya, ColumnsToGet=[colA] berarti hanya kolom colA yang diambil untuk semua baris yang ditentukan.

  • Gunakan filter untuk mengambil baris yang memenuhi kondisi filter tertentu. Untuk informasi selengkapnya, lihat Filters.

  • Jika Anda telah mengonfigurasi beberapa versi data untuk tabel, Anda dapat menentukan jumlah maksimum versi yang akan dibaca. Anda juga dapat membaca data dari rentang waktu tertentu atau dengan nomor versi tertentu. Untuk informasi selengkapnya tentang versi data, lihat Data versions and lifecycle.

Sub-operasi dalam operasi BatchGetRow dieksekusi secara independen, dan Tablestore mengembalikan hasil untuk setiap sub-operasi.

Membaca data dalam rentang

Anda dapat memanggil operasi GetRange untuk membaca data dalam rentang tertentu. Operasi ini berguna jika Anda dapat menentukan rentang kunci primer lengkap atau awalan kunci (key prefix).

Catatan

Dalam tabel Tablestore, semua baris diurutkan berdasarkan kunci primer. Kunci primer tabel secara berurutan terdiri dari semua kolom kunci primer. Oleh karena itu, baris-baris tersebut tidak diurutkan berdasarkan kolom kunci primer tertentu.

Operasi GetRange mengikuti prinsip pencocokan paling kiri. Tablestore membandingkan nilai secara berurutan dari kolom kunci primer pertama hingga kolom kunci primer terakhir untuk membaca data yang nilai kunci primernya berada dalam rentang yang ditentukan. Misalnya, kunci primer tabel data terdiri dari kolom kunci primer berikut: PK1, PK2, dan PK3. Saat data dibaca, Tablestore pertama-tama menentukan apakah nilai PK1 suatu baris berada dalam rentang yang ditentukan untuk kolom kunci primer pertama. Jika nilai PK1 suatu baris berada dalam rentang tersebut, Tablestore berhenti menentukan apakah nilai kolom kunci primer lainnya berada dalam rentang yang ditentukan untuk masing-masing kolom kunci primer dan mengembalikan baris tersebut. Jika nilai PK1 suatu baris tidak berada dalam rentang tersebut, Tablestore melanjutkan penentuan apakah nilai kolom kunci primer lainnya berada dalam rentang yang ditentukan untuk masing-masing kolom kunci primer dengan cara yang sama seperti PK1.

Saat membaca data dalam rentang, Anda dapat mengonfigurasi kondisi berikut untuk memfilter data:

  • Tentukan awalan kunci (key prefix) dan gunakan titik virtual INF_MIN (infinity minimum) dan INF_MAX (infinity maximum) untuk kolom kunci primer lainnya. Anda juga dapat menentukan rentang kunci primer lengkap untuk membaca data.

    Penting

    Jika Anda tidak dapat menentukan awalan kunci, Anda dapat melakukan pemindaian tabel penuh (full table scan) dengan mengatur seluruh rentang kunci primer dari INF_MIN ke INF_MAX. Operasi ini mengonsumsi sumber daya komputasi dalam jumlah besar. Gunakan dengan hati-hati.

    Jika rentangnya besar, pemindaian akan berhenti ketika jumlah baris yang dipindai atau volume data melebihi batas tertentu. Operasi akan mengembalikan baris yang diambil dan informasi tentang kunci primer berikutnya. Anda dapat menggunakan informasi kunci primer berikutnya yang dikembalikan untuk mengirim permintaan lain guna mengambil sisa baris dalam rentang tersebut.

    Jika salah satu kondisi berikut terpenuhi, operasi GetRange mungkin berhenti dan mengembalikan data:

    • Jumlah data yang dipindai mencapai 4 MB.

    • Jumlah baris yang dipindai mencapai 5.000.

    • Jumlah baris yang dikembalikan mencapai batas atas.

    • Throughput baca tidak mencukupi untuk membaca baris data berikutnya karena seluruh throughput baca yang dicadangkan telah habis digunakan.

  • Baca jumlah maksimum baris tertentu dalam urutan maju atau mundur. Misalnya, Anda dapat membaca maksimal 5 baris dalam urutan maju.

  • Secara default, semua kolom dikembalikan. Anda dapat mengonfigurasi operasi agar hanya mengembalikan kolom tertentu.

  • Gunakan filter untuk mengambil baris yang memenuhi kondisi filter tertentu. Untuk informasi selengkapnya, lihat Filters.

    Semua baris dalam pembacaan rentang menggunakan kondisi parameter yang sama. Misalnya, ColumnsToGet=[colA] berarti hanya kolom colA yang diambil untuk semua baris dalam rentang tersebut.

  • Jika Anda telah mengonfigurasi beberapa versi data untuk tabel, Anda dapat menentukan jumlah maksimum versi yang akan dibaca. Anda juga dapat membaca data dari rentang waktu tertentu atau dengan nomor versi tertentu. Untuk informasi selengkapnya tentang versi data, lihat Data versions and lifecycle.

Saat Anda menggunakan GetRange untuk memindai volume data yang besar, Tablestore hanya melakukan satu kali pemindaian per permintaan. Pemindaian berhenti jika jumlah baris melebihi 5.000 atau ukuran data melebihi 4 MB. Data yang melebihi batas tersebut tidak dikembalikan. Anda harus menggunakan paginasi untuk mengambil data berikutnya.

Cara penggunaan

Gunakan konsol

Anda dapat menggunakan konsol untuk mengkueri satu baris atau mengkueri data dalam rentang.

  1. Masuk ke Tablestore console.

  2. Pada halaman Overview, temukan instans dan klik Instance Management di kolom Actions.

  3. Pada tab Instance Details, temukan tabel di bagian Data Table List dan klik Query/Search di kolom Actions.

  4. Pada tab Data Management, klik Query Data. Lalu, pilih apakah akan membaca satu baris atau membaca data dalam rentang.

    Membaca satu baris data

    1. Pada kotak dialog Query Data, atur Query Range ke Single Row Query dan pilih tabel yang akan dikueri.

    2. Secara default, semua kolom dikembalikan. Untuk hanya mengembalikan kolom atribut tertentu, nonaktifkan Get All Columns dan masukkan kolom atribut yang diinginkan.

      Pisahkan beberapa kolom atribut dengan koma (,).

    3. Masukkan Primary Key Value untuk baris target.

      Kelengkapan dan akurasi nilai kunci primer memengaruhi hasil kueri.

    4. Masukkan Max Versions untuk menentukan jumlah versi yang akan dikembalikan.

    5. Klik OK.

    Membaca data dalam rentang

    1. Pada kotak dialog Query Data, atur Query Range ke Range Query dan pilih tabel yang akan dikueri.

    2. Secara default, semua kolom dikembalikan. Untuk hanya mengembalikan kolom atribut tertentu, nonaktifkan Get All Columns dan masukkan kolom atribut yang diinginkan.

      Pisahkan beberapa kolom atribut dengan koma (,).

    3. Masukkan kolom kunci primer awal dan akhir.

    4. Penting
      • Kueri rentang mengevaluasi kolom kunci primer pertama terlebih dahulu. Jika nilai kolom kunci primer pertama sama, sistem kemudian mengevaluasi kolom kunci primer kedua. Aturan ini berlaku untuk semua kolom kunci primer berikutnya.

      • Rentang baca merupakan interval tertutup-kiri dan terbuka-kanan. Artinya, awal rentang inklusif dan akhir rentang eksklusif.

    5. Masukkan Max Versions untuk menentukan jumlah versi yang akan dikembalikan.

    6. Atur arah pengurutan untuk hasil kueri. Anda dapat memilih Forward Query atau Backward Query.

    7. Klik OK.

Gunakan command-line interface (CLI)

Anda dapat menggunakan command-line interface (CLI) untuk menjalankan perintah berikut guna membaca data.

  • Jalankan perintah get untuk membaca satu baris data. Untuk informasi selengkapnya, lihat Read data.

    Contoh berikut membaca baris di mana kolom kunci primer pertama memiliki nilai "86" dan kolom kunci primer kedua memiliki nilai 6771.

    get --pk '["86",6771]'
  • Jalankan perintah scan untuk membaca data dalam rentang. Untuk informasi selengkapnya, lihat Export data.

    Contoh berikut membaca data dalam urutan terbalik dari rentang kunci primer antara ["86",7000] dan ["86",6770], dan hanya mengembalikan kolom pid.

    scan --begin '["86",7000]' --end '["86",6770]' --backward --columns pid

Gunakan SDK

Anda dapat menggunakan Java SDK, Go SDK, Python SDK, Node.js SDK, .NET SDK, atau PHP SDK untuk membaca data. Bagian ini menggunakan kit pengembangan perangkat lunak Java (SDK) sebagai contoh.

Membaca satu baris data

Saat membaca data, Anda dapat menentukan versi data, kolom yang akan dibaca, filter, dan filter ekspresi reguler.

  • Membaca versi data terbaru dan kolom tertentu

    Kode contoh berikut menunjukkan cara membaca data versi terbaru dari kolom yang ditentukan pada satu baris dalam tabel data.

    private static void getRow(SyncClient client, String pkValue) {
        // Membuat kunci primer.
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
    
        // Menentukan nama tabel dan kunci primer untuk membaca satu baris data.
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
        // Mengatur parameter MaxVersions ke 1 untuk membaca versi data terbaru.
        criteria.setMaxVersions(1);
        GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
        Row row = getRowResponse.getRow();
    
        System.out.println("Pembacaan selesai. Hasil:");
        System.out.println(row);
    
        // Menentukan kolom yang ingin dibaca.
        criteria.addColumnsToGet("Col0");
        getRowResponse = client.getRow(new GetRowRequest(criteria));
        row = getRowResponse.getRow();
    
        System.out.println("Pembacaan selesai. Hasil:");
        System.out.println(row);
    } 
  • Membaca data dengan filter

    Kode contoh berikut menunjukkan cara membaca data versi terbaru dari satu baris dalam tabel data dan menggunakan filter untuk memfilter data berdasarkan nilai kolom Col0.

    private static void getRow(SyncClient client, String pkValue) {
        // Membuat kunci primer.
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
    
        // Menentukan nama tabel dan kunci primer untuk membaca satu baris data.
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
        // Mengatur parameter MaxVersions ke 1 untuk membaca versi data terbaru.
        criteria.setMaxVersions(1);
    
        // Mengonfigurasi filter untuk mengembalikan baris di mana nilai kolom Col0 adalah 0.
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("Col0",
                SingleColumnValueFilter.CompareOperator.EQUAL, ColumnValue.fromLong(0));
        // Jika kolom Col0 tidak ada, baris tersebut tidak dikembalikan.
        singleColumnValueFilter.setPassIfMissing(false);
        criteria.setFilter(singleColumnValueFilter);
    
        GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
        Row row = getRowResponse.getRow();
    
        System.out.println("Pembacaan selesai. Hasil:");
        System.out.println(row);
    }
  • Menggunakan filter ekspresi reguler saat membaca data

    Kode contoh berikut menunjukkan cara membaca data kolom Col1 dari satu baris dalam tabel data dan menggunakan ekspresi reguler untuk memfilter data dalam kolom tersebut.

    private static void getRow(SyncClient client, String pkValue) {
        // Menentukan nama tabel data.
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>");
     
        // Membuat kunci primer.
        PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue))
            .build();
        criteria.setPrimaryKey(primaryKey);
     
        // Mengatur parameter MaxVersions ke 1 untuk membaca versi data terbaru.
        criteria.setMaxVersions(1);
     
        // Mengonfigurasi filter. Baris dikembalikan ketika cast<int>(regex(Col1)) lebih besar dari 100.
        RegexRule regexRule = new RegexRule("t1:([0-9]+),", RegexRule.CastType.VT_INTEGER);
        SingleColumnValueRegexFilter filter =  new SingleColumnValueRegexFilter("Col1",
            regexRule,SingleColumnValueRegexFilter.CompareOperator.GREATER_THAN, ColumnValue.fromLong(100));
        criteria.setFilter(filter);
     
        GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
        Row row = getRowResponse.getRow();
    
        System.out.println("Pembacaan selesai. Hasil:");
        System.out.println(row);
    }

Membaca data secara batch

Kode contoh berikut menunjukkan cara mengonfigurasi kondisi versi, kolom yang akan dibaca, dan filter untuk membaca 10 baris data.

private static void batchGetRow(SyncClient client) {
    // Menentukan nama tabel data.
    MultiRowQueryCriteria multiRowQueryCriteria = new MultiRowQueryCriteria("<TABLE_NAME>");
    // Menentukan 10 baris yang ingin dibaca.
    for (int i = 0; i < 10; i++) {
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pk" + i));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
        multiRowQueryCriteria.addRow(primaryKey);
    }
    // Menambahkan kondisi.
    multiRowQueryCriteria.setMaxVersions(1);
    multiRowQueryCriteria.addColumnsToGet("Col0");
    multiRowQueryCriteria.addColumnsToGet("Col1");
    SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("Col0",
            SingleColumnValueFilter.CompareOperator.EQUAL, ColumnValue.fromLong(0));
    singleColumnValueFilter.setPassIfMissing(false);
    multiRowQueryCriteria.setFilter(singleColumnValueFilter);

    BatchGetRowRequest batchGetRowRequest = new BatchGetRowRequest();
    // Operasi BatchGetRow memungkinkan Anda membaca data dari beberapa tabel. Setiap parameter multiRowQueryCriteria menentukan kondisi kueri untuk satu tabel. Anda dapat menambahkan beberapa parameter multiRowQueryCriteria untuk membaca data dari beberapa tabel.
    batchGetRowRequest.addMultiRowQueryCriteria(multiRowQueryCriteria);

    BatchGetRowResponse batchGetRowResponse = client.batchGetRow(batchGetRowRequest);

    System.out.println("Apakah semua operasi berhasil:" + batchGetRowResponse.isAllSucceed());
    System.out.println("Pembacaan selesai. Hasil:");
    for (BatchGetRowResponse.RowResult rowResult : batchGetRowResponse.getSucceedRows()) {
        System.out.println(rowResult.getRow());
    }
    if (!batchGetRowResponse.isAllSucceed()) {
        for (BatchGetRowResponse.RowResult rowResult : batchGetRowResponse.getFailedRows()) {
            System.out.println("Baris yang gagal:" + batchGetRowRequest.getPrimaryKey(rowResult.getTableName(), rowResult.getIndex()));
            System.out.println("Penyebab kegagalan:" + rowResult.getError());
        }

        /**
         * Anda dapat menggunakan metode createRequestForRetry untuk membuat permintaan lain guna mencoba ulang operasi pada baris yang gagal. Dalam contoh ini, hanya permintaan coba ulang yang dibuat.
         * Kami menyarankan agar Anda menggunakan kebijakan coba ulang kustom di SDK Tablestore sebagai metode coba ulang. Dengan cara ini, Anda dapat mencoba ulang baris yang gagal setelah operasi batch dilakukan. Setelah Anda menentukan kebijakan coba ulang, Anda tidak perlu menambahkan kode coba ulang untuk memanggil operasi.
         */
        BatchGetRowRequest retryRequest = batchGetRowRequest.createRequestForRetry(batchGetRowResponse.getFailedRows());
    }
}

Membaca data dalam rentang

  • Membaca data dalam rentang yang ditentukan

    Kode contoh berikut menunjukkan cara membaca data yang nilai kunci primernya berada dalam rentang yang ditentukan dalam arah maju. Jika nilai parameter nextStartPrimaryKey kosong dalam respons, semua data yang nilai kunci primernya berada dalam rentang yang ditentukan telah dibaca. Jika tidak, Anda harus mengirim permintaan lain hingga semua data yang nilai kunci primernya berada dalam rentang yang ditentukan dikembalikan.

    private static void getRange(SyncClient client, String startPkValue, String endPkValue) {
        // Menentukan nama tabel data.
        RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
    
        // Menentukan kunci primer awal.
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(startPkValue));
        rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
    
        // Menentukan kunci primer akhir.
        primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(endPkValue));
        rangeRowQueryCriteria.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
    
        rangeRowQueryCriteria.setMaxVersions(1);
    
        System.out.println("Hasil GetRange:");
        while (true) {
            GetRangeResponse getRangeResponse = client.getRange(new GetRangeRequest(rangeRowQueryCriteria));
            for (Row row : getRangeResponse.getRows()) {
                System.out.println(row);
            }
    
            // Jika nilai parameter nextStartPrimaryKey tidak null, lanjutkan operasi baca.
            if (getRangeResponse.getNextStartPrimaryKey() != null) {
                rangeRowQueryCriteria.setInclusiveStartPrimaryKey(getRangeResponse.getNextStartPrimaryKey());
            } else {
                break;
            }
        }
    }         
  • Membaca data berdasarkan rentang yang ditentukan oleh kolom kunci primer pertama

    Kode contoh berikut menunjukkan cara membaca data dalam rentang yang ditentukan oleh nilai kolom kunci primer pertama dalam arah maju. Dalam contoh ini, nilai awal kolom kunci primer kedua diatur ke INF_MIN, dan nilai akhir kolom kunci primer kedua diatur ke INF_MAX. Jika nilai parameter nextStartPrimaryKey null dalam respons, semua data dalam rentang yang ditentukan telah dibaca. Jika tidak, Anda harus mengirim permintaan lain hingga semua data dalam rentang yang ditentukan oleh nilai kolom kunci primer pertama dikembalikan.

    private static void getRange(SyncClient client, String startPkValue, String endPkValue) {
        // Menentukan nama tabel data.
        RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
        // Menentukan kunci primer awal. Dalam contoh ini, dua kolom kunci primer digunakan.
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(startPkValue));// Mengatur nilai kolom kunci primer pertama ke nilai tertentu.
        primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MIN);// Mengatur nilai kolom kunci primer kedua ke nilai tak hingga kecil.
        rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
    
        // Menentukan kunci primer akhir.
        primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(endPkValue));// Mengatur nilai kolom kunci primer pertama ke nilai tertentu.
        primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MAX);// Mengatur nilai kolom kunci primer kedua ke nilai tak hingga besar.
        rangeRowQueryCriteria.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
    
        rangeRowQueryCriteria.setMaxVersions(1);
    
        System.out.println("Hasil GetRange:");
        while (true) {
            GetRangeResponse getRangeResponse = client.getRange(new GetRangeRequest(rangeRowQueryCriteria));
            for (Row row : getRangeResponse.getRows()) {
                System.out.println(row);
            }
    
            // Jika nilai parameter nextStartPrimaryKey tidak null, lanjutkan operasi baca.
            if (getRangeResponse.getNextStartPrimaryKey() != null) {
                rangeRowQueryCriteria.setInclusiveStartPrimaryKey(getRangeResponse.getNextStartPrimaryKey());
            } else {
                break;
            }
        }
    }    
  • Membaca data dalam rentang yang ditentukan dan menerapkan filter ekspresi reguler pada kolom tertentu

    Kode contoh berikut menunjukkan cara membaca data yang nilai kunci primernya berada dalam rentang ["pk:2020-01-01.log", "pk:2021-01-01.log") dari kolom Col1 dan menggunakan ekspresi reguler untuk memfilter data dalam kolom Col1.

    private static void getRange(SyncClient client) {
        // Menentukan nama tabel data.
        RangeRowQueryCriteria criteria = new RangeRowQueryCriteria("<TABLE_NAME>");
     
        // Menentukan ["pk:2020-01-01.log", "pk:2021-01-01.log") sebagai rentang kunci primer data yang ingin dibaca. Rentang ini merupakan interval tertutup-kiri dan terbuka-kanan.
        PrimaryKey pk0 = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("2020-01-01.log"))
            .build();
        PrimaryKey pk1 = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("2021-01-01.log"))
            .build();
        criteria.setInclusiveStartPrimaryKey(pk0);
        criteria.setExclusiveEndPrimaryKey(pk1);
     
        // Mengatur parameter MaxVersions ke 1 untuk membaca versi data terbaru.
        criteria.setMaxVersions(1);
     
        // Mengonfigurasi filter. Baris dikembalikan ketika cast<int>(regex(Col1)) lebih besar dari 100.
        RegexRule regexRule = new RegexRule("t1:([0-9]+),", RegexRule.CastType.VT_INTEGER);
        SingleColumnValueRegexFilter filter =  new SingleColumnValueRegexFilter("Col1",
            regexRule,SingleColumnValueRegexFilter.CompareOperator.GREATER_THAN,ColumnValue.fromLong(100));
        criteria.setFilter(filter);
    
        while (true) {
            GetRangeResponse resp = client.getRange(new GetRangeRequest(criteria));
            for (Row row : resp.getRows()) {
                // lakukan sesuatu
                System.out.println(row);
            }
            if (resp.getNextStartPrimaryKey() != null) {
                criteria.setInclusiveStartPrimaryKey(resp.getNextStartPrimaryKey());
            } else {
                break;
            }
       }
    }

Deskripsi penagihan

Anda dikenai biaya berdasarkan jumlah Capacity Unit (CU) yang dikonsumsi oleh suatu operasi. Biaya untuk CU baca dan tulis berbasis meteran terpisah dari biaya untuk CU baca dan tulis yang dicadangkan. Jenis instans menentukan apakah CU berbasis meteran atau CU yang dicadangkan yang dikonsumsi.

Catatan

Untuk informasi selengkapnya tentang jenis instans dan CU, lihat Instances dan Read/write throughput.

Membaca data mengonsumsi Read Capacity Unit (RCU) tetapi tidak mengonsumsi Write Capacity Unit (WCU). RCU yang dikonsumsi dihitung sebagai berikut:

  • RCU yang dikonsumsi oleh operasi GetRow

    Jumlah RCU yang dikonsumsi didasarkan pada ukuran total data yang dibaca, yaitu jumlah ukuran data kunci primer dan kolom atribut yang diambil. Ukuran total ini dibagi dengan 4 KB dan dibulatkan ke atas ke bilangan bulat terdekat. Jika baris yang ditentukan tidak ada, operasi tersebut mengonsumsi satu RCU.

  • RCU yang dikonsumsi oleh operasi BatchGetRow

    RCU untuk operasi BatchGetRow dihitung dengan memperlakukan setiap RowInBatchGetRowRequest sebagai operasi GetRow terpisah.

  • RCU yang dikonsumsi oleh operasi GetRange

    Jumlah RCU yang dikonsumsi didasarkan pada ukuran total semua data yang dipindai, yaitu jumlah ukuran data kunci primer dan kolom atribut yang dipindai untuk semua baris dalam rentang. Ukuran total ini dibagi dengan 4 KB dan dibulatkan ke atas ke bilangan bulat terdekat. Misalnya, jika pemindaian mencakup 10 baris dan ukuran gabungan kunci primer dan kolom atribut yang dipindai untuk setiap baris adalah 330 byte, ukuran data total adalah 3,3 KB (10 baris × 330 byte). Operasi ini mengonsumsi 1 RCU.