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.
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. |
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. |
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. |
IndexType (opsional) | IndexType | Tipe indeks. Nilai valid: |
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). |
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: |
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