All Products
Search
Document Center

Tablestore:Membaca data

Last Updated:Apr 11, 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 untuk setiap baris. Untuk informasi lebih lanjut, lihat Wide table model.

Note

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 lebih lanjut, 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 lebih lanjut, 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 lebih lanjut 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 mencakup 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 lebih lanjut, 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 lebih lanjut 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 terdiri secara berurutan 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 hingga INF_MAX. Operasi ini mengonsumsi banyak sumber daya komputasi. 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.

    • 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 lebih lanjut, 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 lebih lanjut tentang versi data, lihat Data versions and lifecycle.

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

Cara penggunaan

Gunakan konsol

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

  1. Login 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 di kiri dan terbuka di 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 lebih lanjut, 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 lebih lanjut, lihat Export data.

    Contoh berikut membaca data dalam urutan terbalik dari rentang kunci primer antara ["86",7000] dan ["86",6770], serta 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) {
        // Construct the primary key. 
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
    
        // Specify the table name and primary key to read a row of data. 
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
        // Set the MaxVersions parameter to 1 to read the latest version of data. 
        criteria.setMaxVersions(1);
        GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
        Row row = getRowResponse.getRow();
    
        System.out.println("Read complete. Result:");
        System.out.println(row);
    
        // Specify the columns that you want to read. 
        criteria.addColumnsToGet("Col0");
        getRowResponse = client.getRow(new GetRowRequest(criteria));
        row = getRowResponse.getRow();
    
        System.out.println("Read complete. Result:");
        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) {
        // Construct the primary key. 
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
    
        // Specify the table name and primary key to read a row of data. 
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
        // Set the MaxVersions parameter to 1 to read the latest version of data. 
        criteria.setMaxVersions(1);
    
        // Configure a filter to return a row in which the value of the Col0 column is 0. 
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("Col0",
                SingleColumnValueFilter.CompareOperator.EQUAL, ColumnValue.fromLong(0));
        // If the Col0 column does not exist, the row is not returned. 
        singleColumnValueFilter.setPassIfMissing(false);
        criteria.setFilter(singleColumnValueFilter);
    
        GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
        Row row = getRowResponse.getRow();
    
        System.out.println("Read complete. Result:");
        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) {
        // Specify the name of the data table. 
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>");
     
        // Construct the primary key. 
        PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue))
            .build();
        criteria.setPrimaryKey(primaryKey);
     
        // Set the MaxVersions parameter to 1 to read the latest version of data. 
        criteria.setMaxVersions(1);
     
        // Configure a filter. A row is returned when cast<int>(regex(Col1)) is greater than 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("Read complete. Result:");
        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) {
    // Specify the name of the data table. 
    MultiRowQueryCriteria multiRowQueryCriteria = new MultiRowQueryCriteria("<TABLE_NAME>");
    // Specify 10 rows that you want to read. 
    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);
    }
    // Add conditions. 
    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();
    // The BatchGetRow operation allows you to read data from multiple tables. Each multiRowQueryCriteria parameter specifies query conditions for one table. You can add multiple multiRowQueryCriteria parameters to read data from multiple tables. 
    batchGetRowRequest.addMultiRowQueryCriteria(multiRowQueryCriteria);

    BatchGetRowResponse batchGetRowResponse = client.batchGetRow(batchGetRowRequest);

    System.out.println("Whether all operations are successful:" + batchGetRowResponse.isAllSucceed());
    System.out.println("Read complete. Result:");
    for (BatchGetRowResponse.RowResult rowResult : batchGetRowResponse.getSucceedRows()) {
        System.out.println(rowResult.getRow());
    }
    if (!batchGetRowResponse.isAllSucceed()) {
        for (BatchGetRowResponse.RowResult rowResult : batchGetRowResponse.getFailedRows()) {
            System.out.println("Failed rows:" + batchGetRowRequest.getPrimaryKey(rowResult.getTableName(), rowResult.getIndex()));
            System.out.println("Cause of failures:" + rowResult.getError());
        }

        /**
         * You can use the createRequestForRetry method to construct another request to retry the operations on failed rows. In this example, only the retry request is constructed. 
         * We recommend that you use the custom retry policy in Tablestore SDKs as the retry method. This way, you can retry failed rows after batch operations are performed. After you specify the retry policy, you do not need to add retry code to call the operation. 
         */
        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) {
        // Specify the name of the data table. 
        RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
    
        // Specify the start primary key. 
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(startPkValue));
        rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
    
        // Specify the end primary key. 
        primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(endPkValue));
        rangeRowQueryCriteria.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
    
        rangeRowQueryCriteria.setMaxVersions(1);
    
        System.out.println("GetRange result:");
        while (true) {
            GetRangeResponse getRangeResponse = client.getRange(new GetRangeRequest(rangeRowQueryCriteria));
            for (Row row : getRangeResponse.getRows()) {
                System.out.println(row);
            }
    
            // If the value of the nextStartPrimaryKey parameter is not null, continue the read operation. 
            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) {
        // Specify the name of the data table. 
        RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
        // Specify the start primary key. In this example, two primary key columns are used. 
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(startPkValue));// Set the value of the first primary key column to a specific value. 
        primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MIN);// Set the value of the second primary key column to an infinitely small value. 
        rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
    
        // Specify the end primary key. 
        primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(endPkValue));// Set the value of the first primary key column to a specific value. 
        primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MAX);// Set the value of the second primary key column to an infinitely great value. 
        rangeRowQueryCriteria.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
    
        rangeRowQueryCriteria.setMaxVersions(1);
    
        System.out.println("GetRange result:");
        while (true) {
            GetRangeResponse getRangeResponse = client.getRange(new GetRangeRequest(rangeRowQueryCriteria));
            for (Row row : getRangeResponse.getRows()) {
                System.out.println(row);
            }
    
            // If the value of the nextStartPrimaryKey parameter is not null, continue the read operation. 
            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) {
        // Specify the name of the data table. 
        RangeRowQueryCriteria criteria = new RangeRowQueryCriteria("<TABLE_NAME>");
     
        // Specify ["pk:2020-01-01.log", "pk:2021-01-01.log") as the range of the primary key of the data that you want to read. The range is a left-closed, right-open interval. 
        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);
     
        // Set the MaxVersions parameter to 1 to read the latest version of data. 
        criteria.setMaxVersions(1);
     
        // Configure a filter. A row is returned when cast<int>(regex(Col1)) is greater than 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()) {
                // do something
                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. Tipe instans menentukan apakah CU berbasis meteran atau CU yang dicadangkan yang dikonsumsi.

Catatan

Untuk informasi lebih lanjut tentang tipe 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 totalnya adalah 3,3 KB (10 baris × 330 byte). Operasi ini mengonsumsi 1 RCU.