全部产品
Search
文档中心

Tablestore:Membaca data

更新时间:Jun 24, 2025

Tablestore menyediakan berbagai operasi API untuk membaca data dari tabel. Contohnya, Anda dapat membaca satu baris data, membaca beberapa baris sekaligus, membaca data dengan nilai kunci primer dalam rentang tertentu, menggunakan iterator, atau membaca data secara bersamaan.

Metode kueri

Tablestore menyediakan operasi GetRow, BatchGetRow, dan GetRange untuk membaca data. Sebelum memulai pembacaan, pilih metode kueri sesuai dengan skenario yang diinginkan.

null

Untuk membaca data dari tabel dengan kolom kunci primer auto-increment, pastikan semua nilai kolom kunci primer termasuk nilai kolom auto-increment telah ditentukan. Untuk informasi lebih lanjut, lihat Konfigurasi Kolom Kunci Primer Auto-Increment. Jika nilai kolom auto-increment tidak tersedia, gunakan operasi GetRange untuk menentukan rentang pembacaan berdasarkan nilai kunci primer kolom pertama.

Metode Kueri

Deskripsi

Skenario

Membaca Satu Baris Data

Gunakan operasi GetRow untuk membaca satu baris data.

Metode ini cocok jika semua kolom kunci primer dapat ditentukan dan jumlah baris yang dibaca sedikit.

Membaca Beberapa Baris Data Sekaligus

Gunakan operasi BatchGetRow untuk membaca beberapa baris data dari satu atau lebih tabel sekaligus.

Operasi BatchGetRow terdiri dari beberapa operasi GetRow. Proses pembuatan suboperasi sama dengan pemanggilan operasi GetRow.

Metode ini cocok jika semua kolom kunci primer dapat ditentukan dan jumlah baris yang dibaca besar atau melibatkan beberapa tabel.

Membaca Data dengan Nilai Kunci Primer dalam Rentang Tertentu

Gunakan operasi GetRange untuk membaca data dengan nilai kunci primer dalam rentang tertentu.

Operasi GetRange mendukung pembacaan maju atau mundur dengan batasan jumlah baris. Jika rentang besar, pemindaian akan berhenti ketika batas atas tercapai, dan informasi tentang baris berikutnya dikembalikan untuk dilanjutkan.

Metode ini cocok jika rentang semua kolom kunci primer atau awalan kolom kunci primer dapat ditentukan.

null

Jika awalan kolom kunci primer tidak dapat ditentukan, gunakan INF_MIN dan INF_MAX untuk menentukan rentang. Operasi ini memindai seluruh tabel tetapi mengonsumsi banyak sumber daya komputasi. Gunakan dengan hati-hati.

Membaca Data dengan Iterator

Gunakan operasi GetRangeIterator untuk membaca data dengan nilai kunci primer dalam rentang tertentu menggunakan iterator.

Metode ini cocok jika rentang semua kolom kunci primer atau awalan kolom kunci primer dapat ditentukan, dan iterator diperlukan untuk membaca data.

Prasyarat

Membaca satu baris data

Gunakan operasi GetRow untuk membaca satu baris data. Setelah memanggil operasi ini, salah satu hasil berikut mungkin dikembalikan:

    Operasi API

    /// <summary>
    /// Membaca satu baris data berdasarkan informasi kunci primer yang ditentukan. 
    /// </summary>
    /// <param name="request">Permintaan kueri data</param>
    /// <returns>Respons GetRow</returns>
    public GetRowResponse GetRow(GetRowRequest request);
    
    /// <summary>
    /// Mode asinkron dari GetRow. 
    /// </summary>
    public Task<GetRowResponse> GetRowAsync(GetRowRequest request);          

    Parameter

    Parameter

    Deskripsi

    tableName

    Nama tabel.

    primaryKey

    Informasi kunci primer baris. Informasi kunci primer terdiri dari nama kolom kunci primer, tipe kunci primer, dan nilai kunci primer.

    null

    Jumlah dan jenis kolom kunci primer yang Anda tentukan harus sama dengan jumlah dan jenis kolom kunci primer sebenarnya dalam tabel.

    columnsToGet

    Kolom yang ingin Anda baca. Anda dapat menentukan nama kolom kunci primer atau kolom atribut.

    • Jika Anda tidak menentukan kolom, semua data dalam baris dikembalikan.

    • Jika Anda menentukan kolom tetapi baris tidak berisi kolom yang ditentukan, nilai pengembalian adalah null. Jika baris berisi beberapa kolom yang ditentukan, data dalam beberapa kolom yang ditentukan dari baris tersebut dikembalikan.

    null
    • Secara default, Tablestore mengembalikan data dari semua kolom baris saat Anda menanyakan baris tersebut. Anda dapat menggunakan parameter columnsToGet untuk mengembalikan data dari kolom tertentu. Jika col0 dan col1 ditambahkan ke parameter columnsToGet, hanya nilai kolom col0 dan col1 yang dikembalikan.

    • Jika Anda menentukan parameter columnsToGet dan filter, Tablestore menanyakan kolom yang ditentukan oleh parameter columnsToGet, lalu mengembalikan baris yang memenuhi kondisi filter.

    maxVersions

    Jumlah maksimum versi data yang dapat dibaca.

    null

    Anda harus menentukan setidaknya satu dari parameter maxVersions dan timeRange.

    • Jika Anda hanya menentukan parameter maxVersions, data dari jumlah versi yang ditentukan dikembalikan dari entri data terbaru hingga entri data paling lama.

    • Jika Anda hanya menentukan parameter timeRange, semua data yang versinya berada dalam rentang waktu yang ditentukan atau data dari versi yang ditentukan dikembalikan.

    • Jika Anda menentukan parameter maxVersions dan timeRange, data dari jumlah versi yang ditentukan dalam rentang waktu yang ditentukan dikembalikan dari entri data terbaru hingga entri data paling lama.

    timeRange

    Rentang waktu versi atau versi spesifik yang ingin Anda baca. Untuk informasi lebih lanjut, lihat TimeRange.

    null

    Anda harus menentukan setidaknya satu dari parameter maxVersions dan timeRange.

    • Jika Anda hanya menentukan parameter maxVersions, data dari jumlah versi yang ditentukan dikembalikan dari entri data terbaru hingga entri data paling lama.

    • Jika Anda hanya menentukan parameter timeRange, semua data yang versinya berada dalam rentang waktu yang ditentukan atau data dari versi yang ditentukan dikembalikan.

    • Jika Anda menentukan parameter maxVersions dan timeRange, data dari jumlah versi yang ditentukan dalam rentang waktu yang ditentukan dikembalikan dari entri data terbaru hingga entri data paling lama.

    • Untuk menanyakan data yang versinya berada dalam rentang waktu tertentu, Anda harus menentukan parameter start_time dan end_time. Parameter start_time menentukan cap waktu awal. Parameter end_time menentukan cap waktu akhir. Rentang yang ditentukan adalah interval tertutup-kiri, terbuka-kanan dalam format [start_time, end_time).

    • Untuk menanyakan data dari versi tertentu, Anda harus menentukan parameter specific_time. Parameter specific_time menentukan cap waktu tertentu.

    Hanya satu dari specific_time dan [start_time, end_time) yang diperlukan.

    Nilai valid parameter timeRange: 0 hingga Int64.MaxValue. Satuan: milidetik.

    filter

    Filter yang ingin Anda gunakan untuk menyaring hasil kueri di sisi server. Hanya baris yang memenuhi kondisi filter yang dikembalikan. Untuk informasi lebih lanjut, lihat Gunakan filter.

    null

    Jika Anda menentukan parameter columnsToGet dan filter, Tablestore menanyakan kolom yang ditentukan oleh parameter columnsToGet, lalu mengembalikan baris yang memenuhi kondisi filter.

    Kode sampel

    Membaca baris data

    Contoh kode berikut menunjukkan cara membaca baris data:

        // Tentukan informasi kunci primer baris. Informasi kunci primer harus sama dengan informasi kunci primer yang ditentukan dalam TableMeta saat tabel dibuat. 
        PrimaryKey primaryKey = new PrimaryKey();
        primaryKey.Add("pk0", new ColumnValue(0));
        primaryKey.Add("pk1", new ColumnValue("abc"));
    
        try
        {
            // Buat objek permintaan kueri. Seluruh baris dibaca jika tidak ada kolom yang ditentukan. 
            var request = new GetRowRequest(TableName, primaryKey);
    
            // Panggil operasi GetRow untuk menanyakan data. 
            var response = otsClient.GetRow(request);
    
            // Kembalikan data baris. Dalam contoh ini, kode sampel yang digunakan untuk mengembalikan data baris dihilangkan. Untuk melihat kode sampel lengkap, kunjungi tautan GitHub yang disediakan untuk kode sampel ini. 
    
            // Jika operasi berhasil, tidak ada pengecualian yang dikembalikan. 
            Console.WriteLine("Dapatkan baris berhasil.");
        }
        catch (Exception ex)
        {
            // Jika operasi gagal, pengecualian dikembalikan. Tangani pengecualian. 
            Console.WriteLine("Pembaruan tabel gagal, pengecualian:{0}", ex.Message);
        }
                

    Lihat kode lengkap di GetRow@GitHub.

    Membaca baris data menggunakan filter

    Contoh kode berikut menunjukkan cara membaca baris data menggunakan filter.

    Dalam contoh ini, nilai kolom col0 dan col1 yang memenuhi kondisi berikut dikembalikan: nilai col0 adalah 5 atau nilai col1 bukan ff.

        // Tentukan informasi kunci primer baris. Informasi kunci primer harus sama dengan informasi kunci primer yang ditentukan dalam TableMeta saat tabel dibuat. 
        PrimaryKey primaryKey = new PrimaryKey();
        primaryKey.Add("pk0", new ColumnValue(0));
        primaryKey.Add("pk1", new ColumnValue("abc"));
    
        var rowQueryCriteria = new SingleRowQueryCriteria("SampleTable");
        rowQueryCriteria.RowPrimaryKey = primaryKey;
    
        // Kondisi 1: Nilai kolom col0 adalah 5. 
        var filter1 = new RelationalCondition("col0",
                    RelationalCondition.CompareOperator.EQUAL,
                    new ColumnValue(5));
    
        // Kondisi 2: Nilai kolom col1 bukan ff. 
        var filter2 = new RelationalCondition("col1", RelationalCondition.CompareOperator.NOT_EQUAL, new ColumnValue("ff"));
    
        // Buat kombinasi Kondisi 1 dan Kondisi 2. Kondisi dievaluasi menggunakan operator OR. 
        var filter = new CompositeCondition(CompositeCondition.LogicOperator.OR);
        filter.AddCondition(filter1);
        filter.AddCondition(filter2);
    
        rowQueryCriteria.Filter = filter;
    
        // Tentukan col0 dan col1 sebagai kolom yang ingin Anda baca. Tablestore menanyakan nilai kolom col0 dan col1, lalu mengembalikan baris yang memenuhi kondisi filter. 
        rowQueryCriteria.AddColumnsToGet("col0");
        rowQueryCriteria.AddColumnsToGet("col1");
    
        // Buat objek GetRowRequest. 
        var request = new GetRowRequest(rowQueryCriteria);
    
        try
        {
            // Lakukan kueri. 
            var response = otsClient.GetRow(request);
    
            // Kembalikan data atau lakukan operasi logis terkait. Dalam contoh ini, kode yang digunakan untuk mengembalikan data atau melakukan operasi logis terkait dihilangkan. 
    
            // Jika operasi berhasil, tidak ada pengecualian yang dikembalikan. 
            Console.WriteLine("Dapatkan baris dengan filter berhasil.");
        }
        catch (Exception ex)
        {
            // Jika operasi gagal, pengecualian dikembalikan. Tangani pengecualian. 
            Console.WriteLine("Dapatkan baris dengan filter gagal, pengecualian:{0}", ex.Message);
        }          

    Lihat kode lengkap di GetRowWithFilter@GitHub.

    Membaca beberapa baris data sekaligus

    Gunakan operasi BatchGetRow untuk membaca beberapa baris data dari satu atau lebih tabel sekaligus. Operasi ini terdiri dari beberapa operasi GetRow.

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

    Catatan penggunaan

    • Jika beberapa baris gagal dibaca saat menggunakan BatchGetRow, Tablestore tidak mengembalikan pengecualian tetapi memberikan informasi tentang baris yang gagal dalam respons BatchGetRowResponse. Periksa nilai pengembalian untuk memastikan keberhasilan pembacaan setiap baris.

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

    • Anda dapat membaca maksimal 100 baris sekaligus menggunakan BatchGetRow.

    Operasi API

    /// <summary>
    /// <para>Baca beberapa baris data dari satu atau lebih tabel sekaligus. </para>
    /// <para>Operasi BatchGetRow adalah serangkaian operasi GetRow. Setiap operasi dilakukan, mengembalikan hasil, dan menghitung unit kapasitas yang dikonsumsi (CUs) secara mandiri. </para>
    /// Dibandingkan dengan banyak operasi GetRow, operasi BatchGetRow dapat mengurangi waktu respons dan meningkatkan laju pembacaan data. 
    /// </summary>
    /// <param name="request">Contoh permintaan</param>
    /// <returns>Contoh respons</returns>
    public BatchGetRowResponse BatchGetRow(BatchGetRowRequest request);
    
    /// <summary>
    /// Mode asinkron dari BatchGetRow. 
    /// </summary>
    public Task<BatchGetRowResponse> BatchGetRowAsync(BatchGetRowRequest request);            

    Kode sampel

    Contoh kode berikut menunjukkan cara membaca 10 baris data sekaligus:

    // Buat objek permintaan untuk membaca beberapa baris data sekaligus. Tentukan informasi kunci primer untuk 10 baris data. 
    List<PrimaryKey> primaryKeys = new List<PrimaryKey>();
    for (int i = 0; i < 10; i++)
    {
        PrimaryKey primaryKey = new PrimaryKey();
        primaryKey.Add("pk0", new ColumnValue(i));
        primaryKey.Add("pk1", new ColumnValue("abc"));
        primaryKeys.Add(primaryKey);
    }
    
    try
    {
        BatchGetRowRequest request = new BatchGetRowRequest();
        request.Add(TableName, primaryKeys);
    
        // Panggil operasi BatchGetRow untuk membaca 10 baris data. 
        var response = otsClient.BatchGetRow(request);
        var tableRows = response.RowDataGroupByTable;
        var rows = tableRows[TableName];
    
        // Kembalikan data baris. Dalam contoh ini, kode sampel yang digunakan untuk mengembalikan data baris dihilangkan. Untuk melihat kode sampel lengkap, kunjungi tautan GitHub yang disediakan untuk kode sampel ini. 
    
        // Saat Anda memanggil operasi BatchGetRow untuk membaca beberapa baris sekaligus, beberapa baris mungkin gagal dibaca. Anda harus memeriksa nilai pengembalian untuk menentukan apakah data berhasil dibaca dari setiap baris. Untuk melihat kode sampel lengkap, kunjungi tautan GitHub yang disediakan untuk kode sampel ini. 
    }
    catch (Exception ex)
    {
        // Jika operasi gagal, pengecualian dikembalikan. Tangani pengecualian. 
        Console.WriteLine("Batch get row gagal, pengecualian:{0}", ex.Message);
    }            

    Lihat kode lengkap di BatchGetRow@GitHub.

    Membaca data yang nilai kunci primernya berada dalam rentang tertentu

    Gunakan operasi GetRange untuk membaca data dengan nilai kunci primer dalam rentang tertentu.

    Operasi GetRange mendukung pembacaan maju atau mundur dengan batasan jumlah baris. Jika rentang besar, pemindaian akan berhenti ketika batas atas tercapai, dan informasi tentang baris berikutnya dikembalikan untuk dilanjutkan.

    null

    Di Tablestore, semua baris diurutkan berdasarkan kunci primer. Kunci primer terdiri dari semua kolom kunci primer secara berurutan.

    Catatan penggunaan

    Operasi GetRange mengikuti prinsip pencocokan paling kiri. Tablestore membandingkan nilai kolom kunci primer secara berurutan untuk membaca data dalam rentang tertentu.

    • 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 untuk membaca baris data berikutnya karena semua throughput baca cadangan telah habis digunakan.

    Operasi API

    /// <summary>
    /// Kueri data yang nilai kunci primernya berada dalam rentang tertentu. 
    /// </summary>
    /// <param name="request">Contoh permintaan</param>
    /// <returns>Contoh respons</returns>
    public GetRangeResponse GetRange(GetRangeRequest request);
    
    /// <summary>
    /// Mode asinkron dari GetRange. 
    /// </summary>
    /// <param name="request"></param>
    /// <returns></returns>
    public Task<GetRangeResponse> GetRangeAsync(GetRangeRequest request);              

    Parameter

    Parameter

    Deskripsi

    tableName

    Nama tabel.

    direction

    Urutan Anda ingin mengurutkan baris dalam respons.

    • Jika Anda mengatur parameter ini ke FORWARD, nilai kunci primer awal harus lebih kecil dari nilai kunci primer akhir, dan baris dalam respons diurutkan secara menaik berdasarkan nilai kunci primer.

    • Jika Anda mengatur parameter ini ke BACKWARD, nilai kunci primer awal harus lebih besar dari nilai kunci primer akhir, dan baris dalam respons diurutkan secara menurun berdasarkan nilai kunci primer.

    Sebagai contoh, sebuah tabel memiliki dua nilai kunci primer A dan B, dan Nilai A lebih kecil dari Nilai B. Jika Anda mengatur parameter direction ke FORWARD dan menentukan rentang [A, B) untuk tabel, Tablestore mengembalikan baris yang nilai kunci primernya lebih besar atau sama dengan Nilai A tetapi lebih kecil dari Nilai B dalam urutan menaik dari Nilai A ke Nilai B. Jika Anda mengatur parameter direction ke BACKWARD dan menentukan rentang [B, A) untuk tabel, Tablestore mengembalikan baris yang nilai kunci primernya lebih kecil atau sama dengan Nilai B dan lebih besar dari Nilai A dalam urutan menurun dari Nilai B ke Nilai A.

    inclusiveStartPrimaryKey

    Informasi kunci primer awal dan informasi kunci primer akhir dari rentang yang ingin Anda baca. Kolom kunci primer awal dan kolom kunci primer akhir harus merupakan kolom kunci primer valid atau kolom virtual yang datanya bertipe INF_MIN dan INF_MAX. Jumlah kolom dalam rentang yang ditentukan oleh kolom virtual harus sama dengan jumlah kolom kunci primer tabel yang ditentukan.

    INF_MIN menunjukkan nilai yang sangat kecil. Semua nilai tipe lain lebih besar dari nilai bertipe INF_MIN. INF_MAX menunjukkan nilai yang sangat besar. Semua nilai tipe lain lebih kecil dari nilai bertipe INF_MAX.

    • Parameter inclusiveStartPrimaryKey menentukan kolom kunci primer awal dan nilainya. Jika suatu baris berisi kolom kunci primer awal, data baris tersebut dikembalikan.

    • Parameter exclusiveEndPrimaryKey menentukan kolom kunci primer akhir dan nilainya. Jika suatu baris berisi kolom kunci primer akhir, data baris tersebut tidak dikembalikan.

    Baris dalam tabel diurutkan secara menaik berdasarkan nilai kunci primer. Rentang yang digunakan untuk membaca data adalah interval tertutup-kiri, terbuka-kanan. Jika data dibaca ke arah maju, baris yang nilai kunci primernya lebih besar atau sama dengan nilai kunci primer awal tetapi lebih kecil dari nilai kunci primer akhir dikembalikan.

    exclusiveEndPrimaryKey

    limit

    Jumlah maksimum baris yang dapat dikembalikan. Nilai parameter ini harus lebih besar dari 0.

    Tablestore menghentikan operasi setelah jumlah maksimum baris yang dapat dikembalikan ke arah maju atau mundur tercapai, meskipun beberapa baris dalam rentang yang ditentukan belum dikembalikan. Anda dapat menggunakan nilai parameter nextStartPrimaryKey yang dikembalikan dalam respons untuk membaca data pada permintaan berikutnya.

    columnsToGet

    Kolom yang ingin Anda baca. Anda dapat menentukan nama kolom kunci primer atau kolom atribut.

    • Jika Anda tidak menentukan kolom, semua data dalam baris dikembalikan.

    • Jika Anda menentukan kolom tetapi baris tidak berisi kolom yang ditentukan, nilai pengembalian adalah null. Jika baris berisi beberapa kolom yang ditentukan, data dalam beberapa kolom yang ditentukan dari baris tersebut dikembalikan.

    null
    • Secara default, Tablestore mengembalikan data dari semua kolom baris saat Anda menanyakan baris tersebut. Anda dapat menggunakan parameter columnsToGet untuk mengembalikan data dari kolom tertentu. Jika col0 dan col1 ditambahkan ke parameter columnsToGet, hanya nilai kolom col0 dan col1 yang dikembalikan.

    • Jika suatu baris berada dalam rentang tertentu yang ingin Anda baca berdasarkan nilai kunci primer tetapi tidak berisi kolom yang ditentukan yang ingin Anda kembalikan, respons tidak menyertakan baris tersebut.

    • Jika Anda menentukan parameter columnsToGet dan filter, Tablestore menanyakan kolom yang ditentukan oleh parameter columnsToGet, lalu mengembalikan baris yang memenuhi kondisi filter.

    maxVersions

    Jumlah maksimum versi data yang dapat dibaca.

    null

    Anda harus menentukan setidaknya salah satu dari parameter maxVersions dan timeRange.

    • Jika Anda hanya menentukan parameter maxVersions, data dari jumlah versi yang ditentukan dikembalikan dari entri data terbaru hingga entri data paling lama.

    • Jika Anda hanya menentukan parameter timeRange, semua data yang versinya berada dalam rentang waktu yang ditentukan atau data dari versi yang ditentukan dikembalikan.

    • Jika Anda menentukan parameter maxVersions dan timeRange, data dari jumlah versi yang ditentukan dalam rentang waktu yang ditentukan dikembalikan dari entri data terbaru hingga entri data paling lama.

    timeRange

    Rentang waktu versi atau versi spesifik yang ingin Anda baca. Untuk informasi lebih lanjut, lihat TimeRange.

    null

    Anda harus menentukan setidaknya salah satu dari parameter maxVersions dan timeRange.

    • Jika Anda hanya menentukan parameter maxVersions, data dari jumlah versi yang ditentukan dikembalikan dari entri data terbaru hingga entri data paling lama.

    • Jika Anda hanya menentukan parameter timeRange, semua data yang versinya berada dalam rentang waktu yang ditentukan atau data dari versi yang ditentukan dikembalikan.

    • Jika Anda menentukan parameter maxVersions dan timeRange, data dari jumlah versi yang ditentukan dalam rentang waktu yang ditentukan dikembalikan dari entri data terbaru hingga entri data paling lama.

    • Untuk menanyakan data yang versinya berada dalam rentang waktu tertentu, Anda harus menentukan parameter start_time dan end_time. Parameter start_time menentukan cap waktu awal. Parameter end_time menentukan cap waktu akhir. Rentang yang ditentukan adalah interval tertutup-kiri, terbuka-kanan dalam format [start_time, end_time).

    • Untuk menanyakan data dari versi tertentu, Anda harus menentukan parameter specific_time. Parameter specific_time menentukan cap waktu tertentu.

    Hanya satu dari specific_time dan [start_time, end_time) yang diperlukan.

    Nilai valid parameter timeRange: 0 hingga Int64.MaxValue. Satuan: milidetik.

    filter

    Filter yang ingin Anda gunakan untuk menyaring hasil kueri di sisi server. Hanya baris yang memenuhi kondisi filter yang dikembalikan. Untuk informasi lebih lanjut, lihat Konfigurasi filter.

    null

    Jika Anda menentukan parameter columnsToGet dan filter, Tablestore menanyakan kolom yang ditentukan oleh parameter columnsToGet, lalu mengembalikan baris yang memenuhi kondisi filter.

    nextStartPrimaryKey

    Informasi kunci primer awal untuk permintaan baca berikutnya. Nilai parameter nextStartPrimaryKey dapat digunakan untuk menentukan apakah semua data telah dibaca.

    • Jika nilai parameter nextStartPrimaryKey tidak kosong dalam respons, nilai tersebut dapat digunakan sebagai informasi kunci primer awal untuk operasi GetRange berikutnya.

    • Jika nilai parameter nextStartPrimaryKey kosong dalam respons, semua data dalam rentang telah dikembalikan.

    Kode sampel

    Contoh kode berikut menunjukkan cara membaca data dengan nilai kunci primer dalam rentang tertentu:

    // Baca semua baris yang nilai kunci primernya berada dalam rentang (0, INF_MIN) hingga (100, INF_MAX). 
    var inclusiveStartPrimaryKey = new PrimaryKey();
    inclusiveStartPrimaryKey.Add("pk0", new ColumnValue(0));
    inclusiveStartPrimaryKey.Add("pk1", ColumnValue.INF_MIN);
    
    var exclusiveEndPrimaryKey = new PrimaryKey();
    exclusiveEndPrimaryKey.Add("pk0", new ColumnValue(100));
    exclusiveEndPrimaryKey.Add("pk1", ColumnValue.INF_MAX);
    
    try
    {
        // Buat objek permintaan untuk membaca data yang nilai kunci primernya berada dalam rentang tertentu. 
        var request = new GetRangeRequest(TableName, GetRangeDirection.Forward,
                        inclusiveStartPrimaryKey, exclusiveEndPrimaryKey);
    
        var response = otsClient.GetRange(request);
    
        // Lanjutkan operasi baca jika hanya sebagian data yang dikembalikan. 
        var rows = response.RowDataList;
        var nextStartPrimaryKey = response.NextPrimaryKey;
        while (nextStartPrimaryKey != null)
        {
            request = new GetRangeRequest(TableName, GetRangeDirection.Forward,
                            nextStartPrimaryKey, exclusiveEndPrimaryKey);
            response = otsClient.GetRange(request);
            nextStartPrimaryKey = response.NextPrimaryKey;
            foreach (RowDataFromGetRange row in response.RowDataList)
            {
                rows.Add(row);
            }
        }
    
        // Kembalikan data baris. Dalam contoh ini, kode sampel yang digunakan untuk mengembalikan data baris dihilangkan. Untuk melihat kode sampel lengkap, kunjungi tautan GitHub yang disediakan untuk kode sampel ini. 
    
        // Jika operasi berhasil, tidak ada pengecualian yang dikembalikan. 
        Console.WriteLine("Dapatkan rentang berhasil");
    }
    catch (Exception ex)
    {
        // Jika operasi gagal, pengecualian dikembalikan. Tangani pengecualian. 
        Console.WriteLine("Dapatkan rentang gagal, pengecualian:{0}", ex.Message);
    }            

    Lihat kode lengkap di GetRange@GitHub.

    Membaca data yang nilai kunci primernya berada dalam rentang tertentu menggunakan iterator

    Gunakan operasi GetRangeIterator untuk membaca data dengan nilai kunci primer dalam rentang tertentu menggunakan iterator.

    Operasi API

    /// <summary>
    /// Dapatkan data dari beberapa baris yang nilai kunci primernya berada dalam rentang yang ditentukan. Kembalikan iterator yang digunakan untuk memproses setiap baris data. 
    /// </summary>
    /// <param name="request"><see cref="GetIteratorRequest"/></param>
    /// <returns>Kembalikan iterator <see cref="RowDataFromGetRange"/>. </returns>
    public IEnumerable<RowDataFromGetRange> GetRangeIterator(GetIteratorRequest request);           

    Kode sampel

    Contoh kode berikut menunjukkan cara membaca semua baris dengan nilai kunci primer dalam rentang (0, "a") hingga (1000, "xyz"):

    // Baca semua baris yang nilai kunci primernya berada dalam rentang (0, "a") hingga (1000, "xyz"). 
    PrimaryKey inclusiveStartPrimaryKey = new PrimaryKey();
    inclusiveStartPrimaryKey.Add("pk0", new ColumnValue(0));
    inclusiveStartPrimaryKey.Add("pk1", new ColumnValue("a"));
    
    PrimaryKey exclusiveEndPrimaryKey = new PrimaryKey();
    exclusiveEndPrimaryKey.Add("pk0", new ColumnValue(1000));
    exclusiveEndPrimaryKey.Add("pk1", new ColumnValue("xyz"));
    
    // Buat objek CapacityUnit untuk mencatat jumlah CU yang dikonsumsi oleh iterasi. 
    var cu = new CapacityUnit(0, 0);
    
    try
    {
        // Buat objek GetIteratorRequest. Kondisi filter didukung. 
        var request = new GetIteratorRequest(TableName, GetRangeDirection.Forward, inclusiveStartPrimaryKey,
                                                    exclusiveEndPrimaryKey, cu);
    
        var iterator = otsClient.GetRangeIterator(request);
        // Gunakan iterator yang membaca data dengan cara traversal. 
        foreach (var row in iterator)
        {
            // Jalankan logika pemrosesan. 
        }
    
        Console.WriteLine("Iterasi baris berhasil");
    } 
    catch (Exception ex)
    {
        Console.WriteLine("Iterasi baris gagal, pengecualian:{0}", ex.Message);
    }            

    Lihat kode lengkap di GetRangeIterator@GitHub.