Topik ini menjelaskan cara menggunakan Go SDK untuk membaca data secara batch dari Tablestore. Anda dapat membaca data dari beberapa tabel dalam satu permintaan.
Catatan penggunaan
Satu operasi baca batch dapat membaca hingga 100 baris.
Prasyarat
Metode
func (tableStoreClient *TableStoreClient) BatchGetRow(request *BatchGetRowRequest) (*BatchGetRowResponse, error)Contoh kode
Kode berikut menunjukkan cara membaca dua baris dengan nilai kunci primer row1 dan row2 dari tabel bernama test_table.
func BatchGetRowSample(client *tablestore.TableStoreClient) {
// Membuat kriteria kueri.
multiRowQueryCriteria := new(tablestore.MultiRowQueryCriteria)
// Menetapkan nama tabel.
multiRowQueryCriteria.TableName = "test_table"
// Menambahkan kunci primer untuk baris pertama.
getPk1 := new(tablestore.PrimaryKey)
getPk1.AddPrimaryKeyColumn("id", "row1")
multiRowQueryCriteria.AddRow(getPk1)
// Menambahkan kunci primer untuk baris kedua.
getPk2 := new(tablestore.PrimaryKey)
getPk2.AddPrimaryKeyColumn("id", "row2")
multiRowQueryCriteria.AddRow(getPk2)
// Menetapkan jumlah maksimum versi yang dikembalikan.
multiRowQueryCriteria.MaxVersion = 1
// Memanggil metode BatchGetRow.
batchGetRowRequest := new(tablestore.BatchGetRowRequest)
batchGetRowRequest.MultiRowQueryCriteria = append(batchGetRowRequest.MultiRowQueryCriteria, multiRowQueryCriteria)
batchGetRowResponse, err := client.BatchGetRow(batchGetRowRequest)
// Memproses respons.
if err != nil {
fmt.Println("Batch get row gagal dengan error: ", err)
} else {
fmt.Printf("* RequestId: %s \n", batchGetRowResponse.RequestId)
for tableName, rows := range batchGetRowResponse.TableToRowsResult {
fmt.Printf("* Tabel: %s \n", tableName)
for _, row := range rows {
if row.IsSucceed {
fmt.Printf("Baris Berhasil: %v \n", row)
} else {
fmt.Printf("Baris Gagal: %d | %v \n", row.Index, row.Error)
}
}
}
}
}Potongan kode berikut menunjukkan cara mengonfigurasi parameter untuk operasi baca batch.
Untuk membaca data dari beberapa tabel dalam satu permintaan, tambahkan objek
MultiRowQueryCriteriauntuk setiap tabel.// Membuat kriteria kueri untuk tabel kedua. multiRowQueryCriteria1 := new(tablestore.MultiRowQueryCriteria) multiRowQueryCriteria1.TableName = "orders_small" // Menambahkan kunci primer untuk baris pertama. getPk3 := new(tablestore.PrimaryKey) getPk3.AddPrimaryKeyColumn("order_id", "90fb478c-1360-11f0-a34d-00163e30a2a9") multiRowQueryCriteria1.AddRow(getPk3) // Menetapkan jumlah maksimum versi yang dikembalikan. multiRowQueryCriteria1.MaxVersion = 1 // Menambahkan objek MultiRowQueryCriteria ke permintaan. batchGetRowRequest.MultiRowQueryCriteria = append(batchGetRowRequest.MultiRowQueryCriteria, multiRowQueryCriteria1)Untuk membaca data dalam rentang versi tertentu, atur parameter
TimeRange. Operasi ini hanya mengembalikan data dalam rentang tersebut.// Menetapkan rentang versi ke 24 jam terakhir. timeRange := new(tablestore.TimeRange) timeRange.Start = int64(time.Now().Unix() * 1000 - 86400 * 1000) timeRange.End = int64(time.Now().Unix() * 1000) multiRowQueryCriteria.TimeRange = timeRangeMenentukan kolom atribut yang akan dibaca.
multiRowQueryCriteria.AddColumnToGet("col1")