全部产品
Search
文档中心

Tablestore:Membaca Data

更新时间:Jul 06, 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.

Metode Kueri

Tablestore menyediakan operasi GetRow, BatchGetRow, dan GetRange untuk membaca data. Pilih metode kueri sesuai dengan skenario kueri aktual sebelum memulai pembacaan data.

Penting

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

Metode Kueri

Deskripsi

Skenario

Membaca satu baris data

Gunakan operasi GetRow untuk membaca satu baris data.

Metode ini cocok untuk skenario di mana semua kolom kunci primer tabel dapat ditentukan dan jumlah baris yang akan dibaca kecil.

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 untuk skenario di mana semua kolom kunci primer tabel dapat ditentukan dan jumlah baris yang akan dibaca besar atau data harus dibaca dari beberapa tabel.

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 memungkinkan pembacaan data dalam arah maju atau mundur dengan batasan jumlah baris yang ingin dibaca. Jika rentang besar dan jumlah baris atau volume data melebihi batas atas, pemindaian berhenti. Baris yang dibaca dan informasi tentang kunci primer baris berikutnya dikembalikan. Permintaan baru dapat dimulai dari posisi terakhir menggunakan informasi tersebut.

Metode ini cocok untuk skenario di mana rentang semua kolom kunci primer tabel atau awalan kolom kunci primer dapat ditentukan.

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 tabel. Operasi ini memindai seluruh tabel tetapi mengonsumsi banyak sumber daya komputasi. Gunakan dengan hati-hati.

Prasyarat

  • Instansi OTSClient harus diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi instansi OTSClient.

  • Tabel data harus dibuat, dan data harus sudah ditulis ke tabel.

Membaca satu baris data

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

    Operasi API

    // Mengembalikan satu baris data dalam tabel. 
    // @param GetRowRequest             Membungkus parameter yang diperlukan untuk memanggil operasi GetRow. 
    // @return  GetRowResponse          Isi respons terhadap operasi GetRow. 
    GetRow(request *GetRowRequest) (*GetRowResponse, error)                   

    Parameter

    Parameter

    Deskripsi

    TableName

    Nama tabel.

    PrimaryKey

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

    Penting

    Jumlah dan tipe kolom kunci primer yang Anda tentukan harus sama dengan jumlah dan tipe 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 tersebut tidak berisi kolom yang ditentukan, nilai pengembalian adalah null. Jika baris tersebut berisi beberapa dari kolom yang ditentukan, data dalam beberapa kolom yang ditentukan dari baris tersebut dikembalikan.

    Catatan
    • 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.

    MaxVersion

    Jumlah maksimum versi data yang dapat dibaca.

    Penting

    Anda harus menentukan setidaknya salah satu parameter MaxVersion dan TimeRange.

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

    • 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 kedua parameter MaxVersion dan TimeRange, data dari jumlah versi yang ditentukan dalam rentang waktu yang ditentukan dikembalikan dari entri data terbaru hingga entri data paling awal.

    TimeRange

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

    Penting

    Anda harus menentukan setidaknya salah satu parameter MaxVersion dan TimeRange.

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

    • 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 kedua parameter MaxVersion dan TimeRange, data dari jumlah versi yang ditentukan dalam rentang waktu yang ditentukan dikembalikan dari entri data terbaru hingga entri data paling awal.

    • Untuk menanyakan data yang versinya berada dalam rentang waktu tertentu, Anda harus menentukan parameter start_time dan end_time. Parameter start_time menentukan timestamp awal. Parameter end_time menentukan timestamp 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 timestamp tertentu.

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

    Nilai valid parameter TimeRange: 0 hingga INT64.MAX. Unit: 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 Filter.

    Catatan

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

    Kode Contoh

    Berikut adalah contoh kode untuk membaca satu baris data:

    getRowRequest := new(tablestore.GetRowRequest)
    criteria := new(tablestore.SingleRowQueryCriteria);
    putPk := new(tablestore.PrimaryKey)
    putPk.AddPrimaryKeyColumn("pk1", "pk1value1")
    putPk.AddPrimaryKeyColumn("pk2", int64(2))
    putPk.AddPrimaryKeyColumn("pk3", []byte("pk3"))
    
    criteria.PrimaryKey = putPk
    getRowRequest.SingleRowQueryCriteria = criteria
    getRowRequest.SingleRowQueryCriteria.TableName = tableName 
    getRowRequest.SingleRowQueryCriteria.MaxVersion = 1  
    getResp, err := client.GetRow(getRowRequest)
    if err != nil {
        fmt.Println("getrow gagal dengan kesalahan:", err)
    } else {
        fmt.Println("hasil get row col0 adalah ",getResp.Columns[0].ColumnName, getResp.Columns[0].Value,)
    }                   

    Untuk melihat kode lengkapnya, kunjungi GetRow@GitHub.

    Membaca beberapa baris data sekaligus

    Gunakan operasi BatchGetRow untuk membaca beberapa baris data dari satu atau lebih tabel secara bersamaan. Operasi BatchGetRow terdiri dari beberapa operasi GetRow. Proses pembuatan setiap operasi GetRow sama dengan proses pemanggilan operasi GetRow secara individual.

    Setiap operasi GetRow dilakukan secara terpisah. Tablestore mengembalikan respons terhadap setiap operasi GetRow secara terpisah.

    Catatan Penggunaan

    • Jika beberapa baris gagal dibaca saat menggunakan operasi BatchGetRow, Tablestore tidak mengembalikan pengecualian tetapi mencakup informasi tentang baris yang gagal dalam respons BatchGetRowResponse. Oleh karena itu, periksa nilai pengembalian untuk memastikan keberhasilan pembacaan setiap baris.

    • Operasi BatchGetRow menggunakan parameter yang sama untuk semua baris. Misalnya, jika parameter ColumnsToGet disetel ke [colA], hanya nilai kolom colA yang dibaca dari semua baris.

    • Anda dapat membaca maksimal 100 baris sekaligus menggunakan operasi BatchGetRow.

    Parameter

    Untuk informasi lebih lanjut tentang parameter, lihat tabel Parameter bagian "Membaca satu baris data".

    Operasi API

    // Mengembalikan beberapa baris data dari tabel. 
    // @param BatchGetRowRequest             Membungkus parameter yang diperlukan untuk memanggil operasi BatchGetRow. 
    // @return  BatchGetRowResponse          Isi respons terhadap operasi BatchGetRow. 
    BatchGetRow(request *BatchGetRowRequest) (*BatchGetRowResponse, error)                    

    Kode Contoh

    Berikut adalah contoh kode untuk membaca 10 baris data sekaligus:

    batchGetReq := &tablestore.BatchGetRowRequest{}
    mqCriteria := &tablestore.MultiRowQueryCriteria{}
    
    for i := 0; i < 10; i++ {
        pkToGet := new(tablestore.PrimaryKey)
        pkToGet.AddPrimaryKeyColumn("pk1", "pk1value1")
        pkToGet.AddPrimaryKeyColumn("pk2", int64(i))
        pkToGet.AddPrimaryKeyColumn("pk3", []byte("pk3"))
        mqCriteria.AddRow(pkToGet)
        mqCriteria.MaxVersion = 1
    }
    mqCriteria.TableName = tableName
    batchGetReq.MultiRowQueryCriteria = append(batchGetReq.MultiRowQueryCriteria, mqCriteria)
    batchGetResponse, err := client.BatchGetRow(batchGetReq)
    
    if err != nil {
        fmt.Println("batchget gagal dengan kesalahan:", err)
    } else {
        fmt.Println("batchget selesai")
    }                    

    Untuk melihat kode lengkapnya, kunjungi 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 memungkinkan pembacaan data dalam arah maju atau mundur dengan batasan jumlah baris yang ingin dibaca. Jika rentang besar dan jumlah baris atau volume data melebihi batas atas, pemindaian berhenti. Baris yang dibaca dan informasi tentang kunci primer baris berikutnya dikembalikan. Permintaan baru dapat dimulai dari posisi terakhir menggunakan informasi tersebut.

    Catatan

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

    Catatan Penggunaan

    Operasi GetRange mengikuti prinsip pencocokan paling kiri. Tablestore membandingkan nilai secara berurutan dari kolom kunci primer pertama hingga terakhir untuk membaca data dengan nilai kunci primer dalam rentang tertentu. Misalnya, kunci primer tabel terdiri dari kolom PK1, PK2, dan PK3. Saat membaca data, Tablestore pertama-tama memeriksa apakah nilai PK1 suatu baris berada dalam rentang yang ditentukan. Jika ya, baris tersebut dikembalikan tanpa memeriksa kolom kunci primer lainnya. Jika tidak, pemeriksaan dilanjutkan untuk kolom kunci primer berikutnya.

    • 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.

    Operasi API

    // Menanyakan beberapa baris data yang nilai kunci primernya berada dalam rentang tertentu dalam tabel. 
    // @param GetRangeRequest            Membungkus parameter yang diperlukan untuk memanggil operasi GetRange. 
    // @return GetRangeResponse          Isi respons terhadap operasi GetRange. 
    GetRange(request *GetRangeRequest) (*GetRangeResponse,error)                   

    Parameter

    Parameter

    Deskripsi

    TableName

    Nama tabel.

    Direction

    Urutan Anda ingin mengurutkan baris dalam respons.

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

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

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

    StartPrimaryKey

    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 yang 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 tak terbatas kecil. Semua nilai tipe lain lebih besar dari nilai tipe INF_MIN. INF_MAX menunjukkan nilai yang tak terbatas besar. Semua nilai tipe lain lebih kecil dari nilai tipe INF_MAX.

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

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

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

    EndPrimaryKey

    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 dalam 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 dalam 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 tersebut tidak berisi kolom yang ditentukan, nilai pengembalian adalah null. Jika baris tersebut berisi beberapa dari kolom yang ditentukan, data dalam beberapa kolom yang ditentukan dari baris tersebut dikembalikan.

    Catatan
    • 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 yang ditentukan yang ingin Anda baca berdasarkan nilai kunci primer tetapi tidak berisi kolom yang ditentukan yang ingin Anda kembalikan, respons tidak mencakup 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.

    Penting

    Anda harus menentukan setidaknya salah satu parameter MaxVersion dan TimeRange.

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

    • 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 kedua parameter MaxVersion dan TimeRange, data dari jumlah versi yang ditentukan dalam rentang waktu yang ditentukan dikembalikan dari entri data terbaru hingga entri data paling awal.

    TimeRange

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

    Penting

    Anda harus menentukan setidaknya salah satu parameter MaxVersion dan TimeRange.

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

    • 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 kedua parameter MaxVersion dan TimeRange, data dari jumlah versi yang ditentukan dalam rentang waktu yang ditentukan dikembalikan dari entri data terbaru hingga entri data paling awal.

    • Untuk menanyakan data yang versinya berada dalam rentang waktu tertentu, Anda harus menentukan parameter start_time dan end_time. Parameter start_time menentukan timestamp awal. Parameter end_time menentukan timestamp 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 timestamp tertentu.

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

    Nilai valid parameter TimeRange: 0 hingga INT64.MAX. Unit: 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 Filter.

    Catatan

    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, nilainya 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 Contoh

    Berikut adalah contoh kode untuk membaca data dengan nilai kunci primer dalam rentang tertentu:

    getRangeRequest := &tablestore.GetRangeRequest{}
    rangeRowQueryCriteria := &tablestore.RangeRowQueryCriteria{}
    rangeRowQueryCriteria.TableName = tableName
    
    startPK := new(tablestore.PrimaryKey)
    startPK.AddPrimaryKeyColumnWithMinValue("pk1")
    startPK.AddPrimaryKeyColumnWithMinValue("pk2")
    startPK.AddPrimaryKeyColumnWithMinValue("pk3")
    endPK := new(tablestore.PrimaryKey)
    endPK.AddPrimaryKeyColumnWithMaxValue("pk1")
    endPK.AddPrimaryKeyColumnWithMaxValue("pk2")
    endPK.AddPrimaryKeyColumnWithMaxValue("pk3")
    rangeRowQueryCriteria.StartPrimaryKey = startPK
    rangeRowQueryCriteria.EndPrimaryKey = endPK
    rangeRowQueryCriteria.Direction = tablestore.FORWARD
    rangeRowQueryCriteria.MaxVersion = 1
    rangeRowQueryCriteria.Limit = 10
    getRangeRequest.RangeRowQueryCriteria = rangeRowQueryCriteria
    
    getRangeResp, err := client.GetRange(getRangeRequest)
    
    fmt.Println("hasil get range adalah " ,getRangeResp)
    
    for {
        if err != nil {
            fmt.Println("get range gagal dengan kesalahan:", err)
        }
        for _, row := range getRangeResp.Rows {
            fmt.Println("range get row dengan key", row.PrimaryKey.PrimaryKeys[0].Value, row.PrimaryKey.PrimaryKeys[1].Value, row.PrimaryKey.PrimaryKeys[2].Value)
        }
        if getRangeResp.NextStartPrimaryKey == nil {
            break
        } else {
            fmt.Println("next pk adalah :", getRangeResp.NextStartPrimaryKey.PrimaryKeys[0].Value, getRangeResp.NextStartPrimaryKey.PrimaryKeys[1].Value, getRangeResp.NextStartPrimaryKey.PrimaryKeys[2].Value)
            getRangeRequest.RangeRowQueryCriteria.StartPrimaryKey = getRangeResp.NextStartPrimaryKey
            getRangeResp, err = client.GetRange(getRangeRequest)
        }
        fmt.Println("melanjutkan untuk menanyakan baris")
    }
    fmt.Println("range get row selesai")

    Untuk melihat kode lengkapnya, kunjungi GetRange@GitHub.