全部产品
Search
文档中心

Tablestore:Membuat tabel data

更新时间:Jul 24, 2025

Topik ini menjelaskan cara menggunakan Tablestore SDK untuk Go dalam membuat tabel data.

Catatan penggunaan

Setelah membuat tabel data, tunggu hingga tabel dimuat sebelum melakukan operasi pada data. Jika tidak, operasi tersebut akan gagal. Proses ini biasanya memakan waktu beberapa detik.

Prasyarat

Inisialisasi klien Tablestore.

Deskripsi metode

func (tableStoreClient *TableStoreClient) CreateTable(request *CreateTableRequest) (*CreateTableResponse, error)

Parameter CreateTableRequest

  • TableMeta (wajib) *TableMeta: Informasi skema tabel, termasuk parameter berikut.

    Parameter

    Tipe

    Deskripsi

    TableName (wajib)

    string

    Nama tabel data.

    SchemaEntry (wajib)

    []*PrimaryKeySchema

    Informasi tentang kunci utama.

    • Anda dapat mengonfigurasi 1 hingga 4 kolom kunci utama. Secara default, kolom kunci utama diurutkan dalam urutan menaik. Kolom kunci utama pertama berfungsi sebagai kunci partisi.

    • Tipe data kolom kunci utama meliputi STRING, INTEGER, dan BINARY. Anda dapat mengonfigurasi kolom kunci utama auto-increment untuk kolom kunci utama bertipe integer yang bukan kunci partisi.

    DefinedColumns (opsional)

    []*DefinedColumnSchema

    Informasi tentang kolom pradefinisi.

    • Kolom pradefinisi adalah kolom atribut yang telah didefinisikan sebelumnya. Gunakan kolom pradefinisi untuk membuat indeks sekunder dan indeks pencarian.

    • Tipe data kolom pradefinisi meliputi STRING, INTEGER, BINARY, DOUBLE, dan BOOLEAN.

  • TableOption (wajib) *TableOption: Informasi konfigurasi tabel, termasuk parameter berikut.

    Parameter

    Tipe

    Deskripsi

    TimeToAlive (wajib)

    int

    Masa hidup data (TTL). Satuan: detik.

    • Jika Anda mengatur parameter ini ke -1, data tidak pernah kedaluwarsa. Jika tidak, nilai minimumnya adalah 86400 (satu hari). Data yang melebihi TTL secara otomatis dihapus.

    • Jika Anda ingin menggunakan indeks pencarian atau indeks sekunder, Anda harus mengatur TTL ke -1 atau mengatur parameter AllowUpdate ke false.

    MaxVersion (wajib)

    int

    Jumlah maksimum versi.

    • Jika Anda ingin menggunakan indeks pencarian versi hingga 1.

    DeviationCellVersionInSec (opsional)

    int64

    Offset versi maksimum. Satuan: detik. Nilai default: 86400 (satu hari).

    • Selisih antara timestamp data yang ditulis dan waktu sistem saat ini harus berada dalam offset versi maksimum. Jika tidak, penulisan data akan gagal.

    • Rentang versi valid untuk data di kolom atribut adalah [max(Waktu tulis data - Offset versi maksimum, Waktu tulis data - TTL), Waktu tulis data + Offset versi maksimum).

    AllowUpdate (opsional)

    *bool

    Menentukan apakah pembaruan diizinkan. Nilai default: true.

    • Jika Anda mengatur parameter ini ke false, Anda tidak dapat memperbarui data dengan menggunakan metode UpdateRow().

  • IndexMetas (opsional) []*IndexMeta: Daftar indeks sekunder. Konfigurasikan parameter berikut untuk setiap indeks.

    Nama

    Tipe

    Deskripsi

    IndexName (wajib)

    string

    Nama indeks.

    Primarykey (wajib)

    []string

    Kolom kunci utama dari indeks.

    • Kolom kunci utama indeks merupakan kombinasi dari kolom kunci utama dan kolom pradefinisi dari tabel data tempat indeks dibuat.

    • Jika Anda ingin membuat indeks sekunder lokal, kolom kunci utama pertama dari indeks harus menjadi kolom kunci utama pertama dari tabel data.

    DefinedColumns (opsional)

    []string

    Kolom pradefinisi dari indeks.

    • Terdiri dari kolom pradefinisi dalam tabel data.

    IndexType (opsional)

    IndexType

    Tipe indeks. Nilai valid:

    • IT_GLOBAL_INDEX (default): indeks sekunder global.

    • IT_LOCAL_INDEX: indeks sekunder lokal.

  • StreamSpec (opsional) *StreamSpecification: Informasi konfigurasi Stream, termasuk parameter berikut.

    Parameter

    Tipe

    Deskripsi

    EnableStream (opsional)

    bool

    Menentukan apakah Stream diaktifkan. Nilai default: false.

    ExpirationTime (opsional)

    int32

    Waktu kedaluwarsa Stream, yang menunjukkan periode validitas log inkremental. Satuan: jam. Nilai maksimum: 168 (tujuh hari).

    • Jika EnableStream disetel ke true, Anda harus mengatur ExpirationTime.

  • EnableLocalTxn (opsional) *bool: Menentukan apakah akan mengaktifkan transaksi lokal. Nilai default: false. Nilai false menunjukkan bahwa transaksi lokal dinonaktifkan.

    • Fitur ini didukung hanya di Go SDK versi 1.7.8 dan lebih baru.

    • Anda tidak dapat menggunakan fitur kolom kunci utama auto-increment dan fitur transaksi lokal secara bersamaan. Jika Anda mengonfigurasi kolom kunci utama auto-increment, pengaturan transaksi lokal tidak berlaku meskipun Anda mengaktifkan transaksi lokal.

    • Jika fitur transaksi lokal dinonaktifkan saat Anda membuat tabel data dan Anda ingin menggunakan fitur tersebut setelah tabel data dibuat, ajukan tiket untuk mengajukan permohonan.

  • SSESpecification (opsional) *SSESpecification: Pengaturan enkripsi data, termasuk parameter berikut.

    Penting

    Fitur enkripsi data hanya dapat diaktifkan dan dikonfigurasi saat Anda membuat tabel data. Anda tidak dapat menonaktifkan fitur enkripsi setelah tabel data dibuat.

    Parameter

    Tipe

    Deskripsi

    Enable (opsional)

    bool

    Menentukan apakah fitur enkripsi data diaktifkan. Nilai default: false.

    KeyType (opsional)

    *SSEKeyType

    Tipe enkripsi. Nilai valid:

    • SSE_KMS_SERVICE: Enkripsi berbasis Key Management Service (KMS).

    • SSE_BYOK: Enkripsi Bring Your Own Key (BYOK).

    KeyId (opsional)

    *string

    ID kunci master pelanggan (CMK). Parameter ini diperlukan hanya jika keyType disetel ke SSE_BYOK.

    RoleArn (opsional)

    *string

    Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM. Parameter ini diperlukan hanya jika keyType disetel ke SSE_BYOK.

  • ReservedThroughput (wajib) *ReservedThroughput: throughput baca dan tulis yang dicadangkan. Satuan: unit kapasitas (CUs). Nilai default: 0. Hanya instans kinerja tinggi dalam mode CU yang mendukung pengaturan parameter ini ke nilai bukan nol.

Kode contoh

Berikut adalah contoh kode untuk membuat tabel data bernama test_table yang berisi satu kolom kunci utama bertipe string.

func CreateTableSample(client *tablestore.TableStoreClient) {
    // Bangun informasi skema tabel data
    tableMeta := new(tablestore.TableMeta)
    tableMeta.TableName = "test_table"
    // Setidaknya satu kolom kunci utama diperlukan untuk membuat tabel data
    tableMeta.AddPrimaryKeyColumn("id", tablestore.PrimaryKeyType_STRING)

    // Bangun informasi konfigurasi tabel data
    tableOption := new(tablestore.TableOption)
    // Anda harus menentukan jumlah maksimum versi saat membuat tabel data
    tableOption.MaxVersion = 1
    // Anda harus menentukan TTL saat membuat tabel data. Nilai -1 menunjukkan bahwa data tidak pernah kedaluwarsa
    tableOption.TimeToAlive = -1

    // Anda harus menyetel throughput baca dan tulis yang dicadangkan saat membuat tabel data. Nilai default adalah 0 (Hanya instans kinerja tinggi dalam mode CU yang mendukung pengaturan throughput baca dan tulis yang dicadangkan ke nilai bukan nol)
    reservedThroughput := new(tablestore.ReservedThroughput)
    reservedThroughput.Readcap = 0
    reservedThroughput.Writecap = 0

    // Bangun permintaan dan kirimkan
    createTableRequest := new(tablestore.CreateTableRequest)
    createTableRequest.TableMeta = tableMeta
    createTableRequest.TableOption = tableOption
    createTableRequest.ReservedThroughput = reservedThroughput
    _, err := client.CreateTable(createTableRequest)
    if err != nil {
        fmt.Println("Gagal membuat tabel dengan kesalahan:", err)
    } else {
        fmt.Println("Pembuatan tabel selesai.")
    }
}

Lihat contoh kode berikut untuk mengonfigurasi pengaturan tambahan saat membuat tabel data.

  • Tambahkan kolom pradefinisi

    tableMeta.AddDefinedColumn("name", tablestore.DefinedColumn_STRING)
  • Atur offset versi maksimum

    tableOption.DeviationCellVersionInSec = 86400
  • Atur apakah pembaruan diizinkan

    tableOption.AllowUpdate = proto.Bool(false)
  • Tambahkan indeks sekunder

    // Bangun indeks sekunder
    indexMeta := new(tablestore.IndexMeta)
    indexMeta.IndexName = "test_table_index"
    // Atur kolom kunci utama indeks
    indexMeta.AddPrimaryKeyColumn("id")
    indexMeta.AddPrimaryKeyColumn("name")
    // Atur tipe indeks
    indexMeta.IndexType = tablestore.IT_LOCAL_INDEX
    // Tambahkan indeks sekunder
    createTableRequest.AddIndexMeta(indexMeta)
  • Konfigurasikan pengaturan Stream

    streamSpec := new(tablestore.StreamSpecification)
    streamSpec.EnableStream = true
    streamSpec.ExpirationTime = 168
    createTableRequest.StreamSpec = streamSpec
  • Atur apakah transaksi lokal diaktifkan

    enableLocalTxn := proto.Bool(true)
    createTableRequest.EnableLocalTxn = enableLocalTxn
  • Atur tipe enkripsi data

    • Enkripsi berbasis KMS

      sseSpec := new(tablestore.SSESpecification)
      sseSpec.SetEnable(true)
      sseSpec.SetKeyType(tablestore.SSE_KMS_SERVICE)
      createTableRequest.SSESpecification = sseSpec
    • Enkripsi BYOK

      Catatan

      Sebelum menjalankan kode, peroleh ID CMK dan ARN peran RAM. Untuk informasi lebih lanjut, lihat Enkripsi BYOK.

      sseSpec := new(tablestore.SSESpecification)
      sseSpec.SetEnable(true)
      sseSpec.SetKeyType(tablestore.SSE_BYOK)
      sseSpec.SetKeyId("key-hzz65****************")
      sseSpec.SetRoleArn("acs:ram::1705************:role/tabletorebyok")
      createTableRequest.SSESpecification = sseSpec

Referensi