全部产品
Search
文档中心

Tablestore:Baca data

更新时间:Jul 02, 2025

Tablestore menyediakan berbagai operasi untuk membaca data. Anda dapat menggunakan operasi GetRow untuk membaca satu baris data, BatchGetRow untuk membaca beberapa baris sekaligus, dan GetRange untuk membaca data dengan nilai kunci primer dalam rentang tertentu.

Catatan

Baris merupakan unit dasar dalam tabel, yang terdiri dari kolom kunci primer dan kolom atribut. Setiap baris memerlukan kolom kunci primer dengan nama dan tipe data yang sama di seluruh tabel. Kolom atribut bersifat opsional dan dapat berbeda antar baris dalam tabel. Untuk informasi lebih lanjut, lihat Ikhtisar.

Catatan penggunaan

Untuk membaca data dari tabel dengan kolom kunci primer auto-increment, pastikan semua nilai kolom kunci primer termasuk nilai kolom auto-increment telah ditentukan. Informasi lebih lanjut dapat ditemukan di Konfigurasi Kolom Kunci Primer Auto-Increment.

Penting

Jika nilai kolom kunci primer auto-increment tidak tersedia, Anda dapat menggunakan operasi GetRange untuk menentukan rentang pembacaan berdasarkan nilai kunci primer kolom pertama.

Baca satu baris data

Gunakan operasi GetRow untuk membaca satu baris data. Metode ini cocok untuk skenario di mana semua kolom kunci primer dapat ditentukan dan jumlah baris yang dibaca sedikit.

Saat membaca satu baris data, gunakan metode berikut untuk memfilter data sesuai kebutuhan bisnis:

  • Tentukan kolom yang ingin dibaca. Jika tidak ditentukan, semua kolom akan dikembalikan.

  • Gunakan filter untuk mendapatkan data yang sesuai dengan kondisi. Lihat Konfigurasikan Filter untuk detail lebih lanjut.

  • Tentukan jumlah maksimum atau rentang waktu versi data yang ingin dibaca jika fitur max versions diaktifkan. Informasi lebih lanjut dapat ditemukan di Versi Data dan TTL.

Setelah memanggil operasi GetRow, hasil berikut mungkin dikembalikan:

  • Jika baris ada, kolom kunci primer dan atributnya akan dikembalikan.

  • Jika baris tidak ada, tidak ada baris yang dikembalikan dan tidak ada kesalahan yang dilaporkan.

Baca beberapa baris data sekaligus

Anda dapat memanggil operasi BatchGetRow untuk membaca beberapa baris data dari satu atau lebih tabel secara bersamaan. Metode ini cocok digunakan dalam skenario di mana semua kolom kunci primer dari tabel dapat ditentukan, serta saat jumlah baris yang akan dibaca cukup besar atau data perlu dibaca dari beberapa tabel.

Operasi BatchGetRow terdiri dari beberapa operasi GetRow. Proses pembuatan setiap operasi GetRow sama seperti saat memanggil operasi GetRow secara langsung.

Saat membaca beberapa baris data sekaligus, gunakan metode berikut untuk memfilter data sesuai kebutuhan bisnis:

  • Baca data dari beberapa tabel sekaligus.

    Operasi BatchGetRow dapat membaca hingga 100 baris sekaligus.

  • Tentukan kolom yang ingin dibaca. Jika tidak ditentukan, semua kolom akan dikembalikan.

    Operasi BatchGetRow menggunakan pengaturan parameter yang sama untuk semua baris. Sebagai contoh, jika parameter ColumnsToGet diatur ke [colA], maka hanya nilai kolom colA yang akan dibaca dari semua baris.

  • Gunakan filter untuk mendapatkan data yang sesuai dengan kondisi. Lihat Konfigurasikan Filter untuk detail lebih lanjut.

  • Tentukan jumlah maksimum atau rentang waktu versi data yang ingin dibaca jika fitur max versions diaktifkan. Informasi lebih lanjut dapat ditemukan di Versi Data dan TTL.

Setiap operasi GetRow dalam BatchGetRow dilakukan secara terpisah, dan Tablestore mengembalikan respons untuk setiap operasi GetRow secara individual.

Baca data yang nilai kunci primernya berada dalam rentang tertentu

Gunakan operasi GetRange untuk membaca data dengan nilai kunci primer dalam rentang tertentu. Metode ini cocok untuk skenario di mana rentang semua kolom kunci primer atau awalan kolom kunci primer dapat ditentukan.

Catatan

Dalam tabel Tablestore, semua baris diurutkan berdasarkan kunci primer. Kunci primer terdiri dari semua kolom kunci primer secara berurutan, sehingga baris 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 tertentu. Sebagai contoh, jika kunci primer tabel data terdiri dari kolom PK1, PK2, dan PK3, Tablestore pertama-tama memeriksa apakah nilai PK1 dari suatu baris berada dalam rentang yang ditentukan untuk kolom kunci primer pertama. Jika nilai PK1 memenuhi rentang tersebut, Tablestore menghentikan evaluasi kolom kunci primer lainnya dan langsung mengembalikan baris tersebut. Namun, jika nilai PK1 tidak memenuhi rentang, Tablestore melanjutkan dengan cara serupa untuk mengevaluasi nilai kolom kunci primer lainnya (PK2 dan PK3) terhadap rentang yang ditentukan.

Saat membaca data dengan nilai kunci primer dalam rentang tertentu, gunakan metode berikut untuk memfilter data sesuai kebutuhan bisnis:

  • Jika awalan kolom kunci primer ditentukan, gunakan kolom virtual bertipe INF_MIN dan INF_MAX untuk menentukan rentang, atau tentukan rentang semua kolom kunci primer untuk membaca data.

    Penting

    Jika awalan kolom kunci primer tidak dapat ditentukan, atur kolom kunci primer awal ke INF_MIN dan kolom kunci primer akhir ke INF_MAX untuk menentukan rentang semua kolom kunci primer. Operasi ini memindai seluruh tabel tetapi mengonsumsi banyak sumber daya komputasi. Lanjutkan dengan hati-hati.

    Jika rentangnya besar dan jumlah baris yang dipindai atau volume data yang dipindai melebihi batas atas, pemindaian berhenti, dan baris yang dibaca serta informasi tentang kunci primer baris berikutnya dikembalikan. Anda dapat mengajukan permintaan untuk mulai dari tempat operasi terakhir berhenti dan membaca baris yang tersisa berdasarkan informasi tentang kunci primer baris berikutnya yang dikembalikan oleh operasi sebelumnya.

    • Jumlah data yang dipindai mencapai 4 MB.

    • Jumlah baris yang dipindai mencapai 5.000.

    • Jumlah baris yang dikembalikan mencapai batas atas.

    • Throughput baca tidak cukup karena semua throughput cadangan telah dikonsumsi.

  • Tentukan jumlah maksimum baris yang dapat dikembalikan dalam arah maju atau mundur. Contohnya, tentukan bahwa maksimal lima baris dikembalikan dalam arah maju.

  • Tentukan kolom yang ingin dibaca. Jika tidak ditentukan, semua kolom akan dikembalikan.

  • Gunakan filter untuk mendapatkan data yang sesuai dengan kondisi. Lihat Konfigurasikan Filter untuk detail lebih lanjut.

    Operasi GetRange menggunakan pengaturan parameter yang sama untuk semua baris. Sebagai contoh, jika parameter ColumnsToGet diatur ke [colA], maka hanya nilai kolom colA yang akan dibaca dari semua baris.

  • Tentukan jumlah maksimum atau rentang waktu versi data yang ingin dibaca jika fitur max versions diaktifkan. Informasi lebih lanjut dapat ditemukan di Versi Data dan TTL.

Setiap panggilan GetRange memindai data sekali. Jika ukuran data yang ingin dipindai besar, pemindaian berhenti saat jumlah baris mencapai 5.000 atau ukuran data mencapai 4 MB. Tablestore tidak mengembalikan data tersisa yang memenuhi kondisi kueri. Gunakan metode paging untuk mendapatkan data tersisa.

Metode penggunaan

Baca data menggunakan konsol Tablestore

Anda dapat menggunakan konsol Tablestore untuk membaca satu baris data atau membaca data yang nilai kunci primernya berada dalam rentang tertentu.

  1. Masuk ke konsol Tablestore.

  2. Di halaman Overview, temukan instance yang ingin dikelola dan klik Manage Instance di kolom Actions.

  3. Di bagian Tables tab Instance Details, temukan tabel data yang ingin dibaca dan klik Query di kolom Actions.

  4. Di tab Query Data, klik Search dan lakukan operasi berikut sesuai kebutuhan bisnis:

    Baca satu baris data

    1. Di kotak dialog Search, atur parameter Modes ke Get Row dan pilih tabel yang ingin dikueri.

    2. Secara default, semua kolom dikembalikan. Jika ingin menentukan kolom atribut tertentu, matikan All Columns dan masukkan nama kolom atribut yang ingin dibaca.

      Pisahkan beberapa kolom atribut dengan koma (,).

    3. Konfigurasikan parameter Primary Key Value dari baris yang ingin dikueri.

      Integritas dan akurasi nilai kunci primer memengaruhi hasil kueri.

    4. Konfigurasikan parameter Max Versions untuk menentukan jumlah maksimum versi yang dikembalikan.

    5. Klik OK.

    Baca data yang nilai kunci primernya berada dalam rentang tertentu

    1. Di kotak dialog Search, atur parameter Modes ke Range Search dan pilih tabel yang ingin dikueri.

    2. Secara default, semua kolom dikembalikan. Jika ingin menentukan kolom atribut tertentu, matikan All Columns dan masukkan nama kolom atribut yang ingin dibaca.

      Pisahkan beberapa kolom atribut dengan koma (,).

    3. Konfigurasikan parameter Start Primary Key Column dan End Primary Key Column.

    4. Catatan
      • Jika menggunakan mode kueri rentang, nilai di kolom kunci primer pertama menjadi prioritas. Jika nilai kolom kunci primer awal dan akhir sama di kolom pertama, sistem menggunakan nilai di kolom kedua untuk melakukan kueri. Aturan untuk kolom berikutnya sama.

      • Rentang yang didukung untuk kueri rentang adalah interval terbuka kiri, tertutup kanan.

    5. Konfigurasikan parameter Max Versions untuk menentukan jumlah maksimum versi yang dikembalikan.

    6. Atur parameter Sequence ke Forward Search atau Backward Search.

    7. Klik OK.

Baca data menggunakan CLI Tablestore

Anda dapat menjalankan perintah berikut untuk membaca data menggunakan CLI Tablestore.

  • Jalankan perintah get untuk membaca satu baris data. Lihat bagian "Baca Data" dari topik Operasi pada Data untuk detail lebih lanjut.

    Contoh kode berikut menunjukkan cara membaca baris data dengan nilai kolom kunci primer pertama 86 dan nilai kolom kunci primer kedua 6771.

    get --pk '["86",6771]'
  • Jalankan perintah scan untuk membaca data dengan nilai kunci primer dalam rentang tertentu. Lihat bagian "Ekspor Data" dari topik Operasi pada Data untuk detail lebih lanjut.

    Contoh kode berikut menunjukkan cara membaca data dengan nilai kunci primer dalam rentang dari ["86",7000] hingga ["86",6770] dalam arah mundur dan hanya mengembalikan data di kolom pid.

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

Baca data menggunakan SDK Tablestore

Anda dapat menggunakan SDK Tablestore untuk Java, SDK Tablestore untuk Go, SDK Tablestore untuk Python, SDK Tablestore untuk Node.js, SDK Tablestore untuk .NET, dan SDK Tablestore untuk PHP untuk membaca data. Dalam contoh ini, SDK Tablestore untuk Java digunakan.

Baca satu baris data

Anda dapat menentukan versi data dan kolom yang ingin dibaca, serta memfilter data menggunakan filter atau ekspresi reguler.

  • Baca data versi terbaru dari kolom tertentu dalam satu baris

    Contoh kode berikut menunjukkan cara membaca data versi terbaru dari kolom tertentu dalam satu baris tabel data.

    private static void getRow(SyncClient client, String pkValue) {
        // Konstruksi kunci primer. 
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
    
        // Tentukan nama tabel dan kunci primer untuk membaca satu baris data. 
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
        // Setel 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("Baca selesai. Hasil:");
        System.out.println(row);
    
        // Tentukan kolom yang ingin Anda baca. 
        criteria.addColumnsToGet("Col0");
        getRowResponse = client.getRow(new GetRowRequest(criteria));
        row = getRowResponse.getRow();
    
        System.out.println("Baca selesai. Hasil:");
        System.out.println(row);
    } 
  • Gunakan filter untuk memfilter data yang dibaca

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

    private static void getRow(SyncClient client, String pkValue) {
        // Konstruksi kunci primer. 
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
    
        // Tentukan nama tabel dan kunci primer untuk membaca satu baris data. 
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
        // Setel parameter MaxVersions ke 1 untuk membaca versi data terbaru. 
        criteria.setMaxVersions(1);
    
        // Konfigurasikan 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 tidak dikembalikan. 
        singleColumnValueFilter.setPassIfMissing(false);
        criteria.setFilter(singleColumnValueFilter);
    
        GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
        Row row = getRowResponse.getRow();
    
        System.out.println("Baca selesai. Hasil:");
        System.out.println(row);
    }
  • Gunakan ekspresi reguler untuk memfilter data yang dibaca

    Contoh kode berikut menunjukkan cara membaca data kolom Col1 dari satu baris tabel data dan menggunakan ekspresi reguler untuk memfilter data di kolom tersebut.

    private static void getRow(SyncClient client, String pkValue) {
        // Tentukan nama tabel data. 
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>");
     
        // Konstruksi kunci primer. 
        PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue))
            .build();
        criteria.setPrimaryKey(primaryKey);
     
        // Setel parameter MaxVersions ke 1 untuk membaca versi data terbaru. 
        criteria.setMaxVersions(1);
     
        // Konfigurasikan 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("Baca selesai. Hasil:");
        System.out.println(row);
    }

Baca beberapa baris data sekaligus

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

private static void batchGetRow(SyncClient client) {
    // Tentukan nama tabel data. 
    MultiRowQueryCriteria multiRowQueryCriteria = new MultiRowQueryCriteria("<TABLE_NAME>");
    // Tentukan 10 baris yang ingin Anda baca. 
    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);
    }
    // Tambahkan 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("Baca 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 gagal:" + batchGetRowRequest.getPrimaryKey(rowResult.getTableName(), rowResult.getIndex()));
            System.out.println("Penyebab kegagalan:" + rowResult.getError());
        }

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

Baca data yang nilai kunci primernya berada dalam rentang tertentu

  • Baca data dengan nilai kunci primer dalam rentang tertentu

    Contoh kode berikut menunjukkan cara membaca data dengan nilai kunci primer dalam rentang tertentu dalam arah maju. Jika nilai parameter nextStartPrimaryKey dalam respons kosong, semua data dalam rentang telah dibaca. Jika tidak, ajukan permintaan lain hingga semua data dalam rentang dikembalikan.

    private static void getRange(SyncClient client, String startPkValue, String endPkValue) {
        // Tentukan nama tabel data. 
        RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
    
        // Tentukan kunci primer awal. 
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(startPkValue));
        rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
    
        // Tentukan 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;
            }
        }
    }         
  • Baca data dalam rentang yang ditentukan oleh nilai kolom kunci primer pertama

    Contoh kode 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 disetel ke INF_MIN, dan nilai akhir disetel ke INF_MAX. Jika nilai parameter nextStartPrimaryKey adalah null dalam respons, semua data dalam rentang telah dibaca. Jika tidak, ajukan permintaan lain hingga semua data dalam rentang dikembalikan.

    private static void getRange(SyncClient client, String startPkValue, String endPkValue) {
        // Tentukan nama tabel data. 
        RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
        // Tentukan kunci primer awal. Dalam contoh ini, dua kolom kunci primer digunakan. 
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(startPkValue));// Setel nilai kolom kunci primer pertama ke nilai tertentu. 
        primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MIN);// Setel nilai kolom kunci primer kedua ke nilai tak terbatas kecil. 
        rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
    
        // Tentukan kunci primer akhir. 
        primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(endPkValue));// Setel nilai kolom kunci primer pertama ke nilai tertentu. 
        primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MAX);// Setel nilai kolom kunci primer kedua ke nilai tak terbatas 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;
            }
        }
    }    
  • Baca data dengan nilai kunci primer dalam rentang tertentu dan gunakan ekspresi reguler untuk memfilter data di kolom tertentu

    Contoh kode berikut menunjukkan cara membaca data dengan nilai kunci primer dalam rentang ["pk:2020-01-01.log", "pk:2021-01-01.log") dari kolom Col1 dan menggunakan ekspresi reguler untuk memfilter data di kolom Col1.

    private static void getRange(SyncClient client) {
        // Tentukan nama tabel data. 
        RangeRowQueryCriteria criteria = new RangeRowQueryCriteria("<TABLE_NAME>");
     
        // Tentukan ["pk:2020-01-01.log", "pk:2021-01-01.log") sebagai rentang kunci primer dari data yang ingin Anda baca. Rentang tersebut adalah interval tertutup kiri, 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);
     
        // Setel parameter MaxVersions ke 1 untuk membaca versi data terbaru. 
        criteria.setMaxVersions(1);
     
        // Konfigurasikan 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;
            }
       }
    }

Penagihan

Anda dikenakan biaya berdasarkan jumlah unit kapasitas (CU) yang dikonsumsi oleh suatu operasi. CU yang dikonsumsi mungkin mencakup CU baca-tulis terukur dan CU baca-tulis cadangan berdasarkan jenis instance.

Catatan

Untuk informasi lebih lanjut tentang jenis instance dan CU, lihat Instance dan Throughput Baca-Tulis.

Operasi baca tidak mengonsumsi CU tulis. Jumlah CU baca yang dikonsumsi bervariasi berdasarkan operasi yang dipanggil.

  • CU baca yang dikonsumsi oleh operasi GetRow

    Jumlah CU baca yang dikonsumsi dihitung berdasarkan rumus berikut: Jumlah CU baca = (Ukuran data di semua kolom kunci primer baris + Ukuran data di kolom atribut yang benar-benar dibaca)/4 KB. Jika baris yang ditentukan tidak ada, satu CU baca dikonsumsi oleh operasi.

  • CU baca yang dikonsumsi oleh operasi BatchGetRow

    Setiap operasi RowInBatchGetRowRequest dianggap sebagai satu operasi GetRow. Jumlah CU baca yang dikonsumsi oleh operasi BatchGetRow sama dengan total jumlah CU baca yang dikonsumsi oleh semua operasi GetRow yang menyusun operasi BatchGetRow.

  • CU baca yang dikonsumsi oleh operasi GetRange

    Jumlah CU baca yang dikonsumsi oleh operasi GetRange dihitung dari titik awal rentang hingga titik awal baris berikutnya yang belum dibaca. Rumus perhitungan adalah: Jumlah CU baca = (Ukuran data di semua kolom kunci primer baris yang memenuhi kondisi kueri + Ukuran data di kolom atribut yang benar-benar dibaca)/4 KB. Sebagai contoh, jika 10 baris yang memenuhi kondisi kueri dibaca dan total ukuran data adalah 330 byte, jumlah CU baca yang dikonsumsi adalah satu.