全部产品
Search
文档中心

Tablestore:Gunakan driver Tablestore untuk Go

更新时间:Jul 06, 2025

Tablestore menyediakan driver Tablestore untuk Go yang memungkinkan Anda mengakses Tablestore dengan mengeksekusi pernyataan SQL. Topik ini menjelaskan cara menggunakan driver Tablestore untuk Go untuk mengakses Tablestore.

Catatan penggunaan

Fitur kueri SQL tersedia di wilayah berikut: Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Ulanqab), Tiongkok (Shenzhen), Tiongkok (Chengdu), Tiongkok (Hong Kong), Jepang (Tokyo), Singapura, Malaysia (Kuala Lumpur), Inggris (London), AS (Silicon Valley), Indonesia (Jakarta), Jerman (Frankfurt), SAU (Riyadh - Partner Region), dan AS (Virginia).

Prasyarat

  • Jika Anda ingin mengkueri data sebagai pengguna RAM, pastikan pengguna RAM telah dibuat dan semua izin operasi SQL diberikan kepada pengguna tersebut. Anda dapat mengonfigurasi "Action": "ots:SQL*" dalam kebijakan kustom yang dilampirkan pada pengguna RAM untuk memberikan semua izin operasi SQL kepada pengguna tersebut. Untuk informasi lebih lanjut, lihat Gunakan kebijakan RAM untuk memberikan izin kepada pengguna RAM.

  • Pasangan AccessKey yang terdiri dari ID AccessKey dan Rahasia AccessKey telah diperoleh. Untuk informasi lebih lanjut, lihat Buat pasangan AccessKey.

  • Tabel data telah dibuat, dan tabel pemetaan telah dibuat untuk tabel data tersebut. Untuk informasi lebih lanjut, lihat Prosedur dan Buat tabel pemetaan untuk tabel.

Prosedur

Langkah 1: Instal driver Tablestore untuk Go

Pergi ke direktori proyek dan jalankan perintah berikut untuk menginstal driver Tablestore untuk Go:

go get github.com/aliyun/aliyun-tablestore-go-sql-driver

Langkah 2: Gunakan driver Tablestore untuk Go untuk mengakses Tablestore

Driver Tablestore untuk Go diimplementasikan berdasarkan antarmuka database/sql/driver. Setelah Anda mengimpor paket driver Tablestore untuk Go, Anda dapat menggunakan database/sql untuk mengakses Tablestore.

  • Parameter

    Saat menggunakan driver Tablestore untuk Go untuk mengakses Tablestore, Anda harus menentukan nama driver dan nama sumber data Tablestore. Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Contoh

    Deskripsi

    driverName

    ots

    Nama driver Tablestore untuk Go. Nama tersebut adalah ots dan tidak dapat diubah.

    dataSourceName

    https://************************:********************************@myinstance.cn-hangzhou.ots.aliyuncs.com/myinstance

    Nama sumber data Tablestore dalam format berikut: schema://accessKeyId:accessKeySecret@endpoint/instanceName[?param1=value1&...&paramN=valueN]. Nama tersebut mencakup bidang-bidang berikut:

    • schema: wajib. Bidang ini menentukan protokol yang digunakan oleh driver Tablestore. Dalam sebagian besar kasus, bidang ini disetel ke https.

    • accessKeyId:accessKeySecret: wajib. Bidang ini menentukan ID AccessKey dan Rahasia AccessKey akun Alibaba Cloud atau pengguna RAM Anda.

    • endpoint: wajib. Bidang ini menentukan titik akhir instance. Untuk informasi lebih lanjut, lihat Titik Akhir.

    • instanceName: wajib. Bidang ini menentukan nama instance.

    Untuk informasi lebih lanjut tentang item konfigurasi lainnya, lihat Item Konfigurasi.

  • Kode Contoh

    import (
        "database/sql"
        _ "github.com/aliyun/aliyun-tablestore-go-sql-driver"
    )
    
    // Tentukan nama driver Tablestore untuk Go dan nama sumber data Tablestore. 
    db, err := sql.Open("ots", "https://access_key_id:access_key_secret@endpoint/instance_name")
    if err != nil {
        panic(err)    // Tangani kesalahan. 
    }

Langkah 3: Kueri data

Driver Tablestore untuk Go memungkinkan Anda menggunakan metode Query untuk mengeksekusi pernyataan kueri dan Prepare untuk membuat pernyataan guna mengkueri data.

Penting

Tipe data bidang dalam hasil kueri harus sesuai dengan tipe data bidang dalam Tablestore. Untuk informasi lebih lanjut tentang pemetaan tipe data, lihat Pemetaan Tipe Data.

Gunakan metode Query untuk mengkueri data

// Tentukan pernyataan SQL berdasarkan kebutuhan bisnis Anda. Dalam contoh ini, pernyataan SQL ditentukan untuk mengkueri data di kolom pk1, col1, dan col2 dari tabel test_table. 
rows, err := db.Query("SELECT pk1, col1, col2 FROM test_table WHERE pk1 = ?", 3)
if err != nil {
    panic(err)    // Tangani kesalahan. 
}
for rows.Next() {
    var pk1 int64
    var col1 float64
    var col2 string
    err := rows.Scan(&pk1, &col1, &col2)
    if err != nil {
        panic(err)    // Tangani kesalahan. 
    }
}

Gunakan Prepare untuk membuat pernyataan guna mengkueri data

// Tentukan pernyataan SQL berdasarkan kebutuhan bisnis Anda. Dalam contoh ini, pernyataan SQL ditentukan untuk mengkueri data di kolom pk1, col1, dan col2 dari tabel test_table. 
stmt, err := db.Prepare("SELECT pk1, col1, col2 FROM test_table WHERE pk1 = ?")
if err != nil {
    panic(err)    // Tangani kesalahan. 
}
rows, err := stmt.Query(3)
if err != nil {
    panic(err)    // Tangani kesalahan. 
}
for rows.Next() {
    var pk1 int64
    var col1 float64
    var col2 string
    err := rows.Scan(&pk1, &col1, &col2)
    if err != nil {
        panic(err)    // Tangani kesalahan. 
    }
}

Kode contoh lengkap

Berikut ini adalah kode contoh yang memberikan contoh cara mengkueri semua data dalam tabel bernama test_table di instance myinstance di wilayah Tiongkok (Hangzhou):

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/aliyun/aliyun-tablestore-go-sql-driver"
)

func main() {
    db, err := sql.Open("ots", "https://************************:********************************@myinstance.cn-hangzhou.ots.aliyuncs.com/myinstance")
    if err != nil {
        panic(err)
    }
    rows, err := db.Query("SELECT * FROM test_table")
    if err != nil {
        panic(err)
    }
    for rows.Next() {
        // Tentukan bahwa semua kolom baris yang memenuhi kondisi kueri dikembalikan. 
        columns, err := rows.Columns()
        if err != nil {
            panic(err)
        }
        // Buat array dan pointer untuk menyimpan data. 
        values := make([]interface{}, len(columns))
        pointers := make([]interface{}, len(columns))
        for i := range values {
            pointers[i] = &values[i]
        }
        // Pindai baris data. 
        err = rows.Scan(pointers...)
        if err != nil {
            panic(err)
        }
        fmt.Println(values...)
    }
    rows.Close()
    db.Close()
}

Item konfigurasi

Anda dapat menggunakan driver Tablestore untuk Go untuk memodifikasi item konfigurasi SDK Tablestore untuk Go. Tabel berikut menjelaskan item konfigurasi umum.

Item konfigurasi

Contoh

Deskripsi

retryTimes

10

Jumlah percobaan ulang yang diizinkan. Nilai default: 10.

connectionTimeout

15

Periode waktu habis untuk pembuatan koneksi. Nilai default: 15. Unit: detik. Nilai 0 menentukan periode waktu tak terbatas.

requestTimeout

30

Periode waktu habis untuk pengiriman permintaan. Nilai default: 30. Unit: detik.

maxRetryTime

5

Periode waktu maksimum selama percobaan ulang dipicu. Nilai default: 5. Unit: detik.

maxIdleConnections

2000

Jumlah maksimum koneksi idle. Nilai default: 2000.

Pemetaan tipe data

Tabel berikut menjelaskan pemetaan tipe data antara bidang Tablestore dan driver Tablestore untuk Go. Jika tipe data bidang dalam Tablestore tidak sesuai dengan tipe data bidang dalam driver Tablestore untuk Go, akan terjadi kesalahan.

Tipe data di Tablestore

Tipe data di driver Tablestore untuk Go

Integer

int64

Binary

[]byte

String

string

Double

float64

Boolean

bool

Referensi

  • Jika Anda ingin mempercepat kueri data dan komputasi dengan mengeksekusi pernyataan SQL, Anda dapat membuat indeks sekunder atau indeks pencarian. Untuk informasi lebih lanjut, lihat Kebijakan Pemilihan Indeks dan Penurunan Komputasi.

  • Anda juga dapat menggunakan mesin komputasi seperti MaxCompute, Spark, Hive, HadoopMR, Function Compute, Flink, dan PrestoDB untuk menghitung dan menganalisis data dalam tabel. Untuk informasi lebih lanjut, lihat Ikhtisar.

  • Untuk memvisualisasikan data, Anda dapat menggunakan Grafana. Sebagai contoh, Anda dapat menggunakan Grafana untuk menampilkan data Tablestore dalam bentuk grafik. Untuk informasi lebih lanjut, lihat Hubungkan Tablestore ke Grafana.