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.
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 |
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. | |
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.
Catatan
|
MaxVersion | Jumlah maksimum versi data yang dapat dibaca. Penting Anda harus menentukan setidaknya salah satu parameter MaxVersion dan TimeRange.
|
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.
Hanya salah satu dari specific_time dan 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
ColumnsToGetdisetel 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.
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.
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 |
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.
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.
Catatan
|
MaxVersions | Jumlah maksimum versi data yang dapat dibaca. Penting Anda harus menentukan setidaknya salah satu parameter MaxVersion dan TimeRange.
|
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.
Hanya salah satu dari specific_time dan Nilai valid parameter TimeRange: 0 hingga |
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.
|
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.