Fitur indeks sekunder memungkinkan Anda menanyakan data berdasarkan kunci utama tabel data dan kolom indeks dari indeks sekunder yang dibuat untuk tabel tersebut. Jika Anda perlu menggunakan kolom atribut tabel data untuk menanyakan data, Anda dapat membuat indeks sekunder untuk mempercepat kueri. Saat membuat indeks sekunder, Anda dapat mengatur kolom indeks atau kolom atribut indeks ke kolom yang telah ditentukan sebelumnya saat pembuatan tabel data.
Indeks sekunder diklasifikasikan menjadi indeks sekunder global dan lokal. Untuk informasi lebih lanjut tentang fitur indeks sekunder, lihat Indeks Sekunder.
Anda dapat membuat satu atau lebih tabel indeks saat membuat tabel data dengan memanggil operasi CreateTable. Untuk informasi lebih lanjut, lihat Buat tabel data.
Prasyarat
Instansi OTSClient diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi klien Tablestore.
Tabel data dengan parameter MaxVersions disetel ke 1 telah dibuat. Salah satu kondisi berikut harus dipenuhi oleh parameter TimeToLive tabel data:
Parameter TimeToLive tabel data disetel ke -1, yang berarti bahwa data dalam tabel tidak pernah kedaluwarsa.
Parameter TimeToLive tabel data disetel ke nilai selain -1, dan operasi pembaruan pada tabel dilarang.
Kolom yang telah ditentukan sebelumnya telah ditetapkan untuk tabel data.
Catatan Penggunaan
Nama tabel indeks harus berbeda dari nama tabel seri waktu atau tabel data yang ada.
Saat membuat indeks sekunder, Tablestore secara otomatis menambahkan kolom kunci utama tabel data yang tidak ditentukan sebagai kolom indeks ke indeks sekunder sebagai kolom kunci utama indeks sekunder.
Saat membuat indeks sekunder lokal, kolom kunci utama pertama tabel indeks harus sama dengan kolom kunci utama pertama tabel data.
Parameter
Parameter | Deskripsi |
MainTableName | Nama tabel data. |
IndexMeta | Informasi skema tentang tabel indeks. Informasi skema mencakup item-item berikut:
|
IncludeBaseData | Menentukan apakah akan menyertakan data yang ada dari tabel data dalam tabel indeks. Jika Anda menyetel parameter IncludeBaseData ke true, tabel indeks berisi data yang ada dari tabel data. Jika Anda menyetel parameter IncludeBaseData ke false, tabel indeks tidak berisi data yang ada dari tabel data. |
Contoh
Buat indeks sekunder global
Kode sampel berikut memberikan contoh cara membuat indeks sekunder global yang mencakup data yang ada dari tabel data tempat indeks sekunder global dibuat. Dalam contoh ini, kolom kunci utama tabel data adalah pk1 dan pk2. Kolom kunci utama dan kolom atribut yang ditentukan untuk indeks sekunder global masing-masing adalah definedcol1 dan definedcol2. Kolom kunci utama tabel indeks terdiri dari definedcol1, pk1, dan pk2. Kolom atribut tabel indeks adalah definedcol2.
func CreateGlobalIndexSample(client *tablestore.TableStoreClient, tableName string) {
// Tentukan metadata tabel indeks.
indexMeta := new(tablestore.IndexMeta)
// Tentukan kolom definedcol1 tabel data sebagai kolom kunci utama tabel indeks.
indexMeta.AddPrimaryKeyColumn("definedcol1")
// Tentukan kolom definedcol2 tabel data sebagai kolom atribut tabel indeks.
indexMeta.AddDefinedColumn("definedcol2")
// Tentukan nama tabel indeks.
indexMeta.IndexName = "<INDEX_NAME>"
indexReq := &tablestore.CreateIndexRequest{
// Tentukan tabel data tempat Anda ingin membuat tabel indeks dan terapkan pengaturan yang Anda tentukan untuk tabel indeks.
MainTableName:tableName,
IndexMeta: indexMeta,
/**
Anda dapat menyetel parameter IncludeBaseData ke true untuk menyinkronkan data yang ada dari tabel data ke tabel indeks. Dengan cara ini, Anda dapat menggunakan tabel indeks untuk menanyakan semua data dalam tabel data.
Jumlah waktu yang diperlukan untuk menyinkronkan data yang ada dari tabel data ke tabel indeks bervariasi berdasarkan jumlah data dalam tabel data.
*/
IncludeBaseData: true,
}
resp, err := client.CreateIndex(indexReq)
if err != nil {
fmt.Println("Gagal membuat tabel dengan kesalahan:", err)
} else {
fmt.Println("Pembuatan indeks selesai", resp)
}
}Buat indeks sekunder lokal
Kode sampel berikut memberikan contoh cara membuat indeks sekunder lokal yang mencakup data yang ada dari tabel data tempat indeks sekunder lokal dibuat. Dalam contoh ini, kolom kunci utama tabel data adalah pk1 dan pk2. Kolom kunci utama yang ditentukan untuk indeks sekunder lokal adalah pk1 dan definedcol1. Kolom atribut yang ditentukan untuk indeks sekunder lokal adalah definedcol2. Kolom kunci utama tabel indeks terdiri dari pk1, definedcol1, dan pk2. Kolom atribut tabel indeks adalah definedcol2.
func CreateGLocalIndexSample(client *tablestore.TableStoreClient, tableName string) {
// Tentukan metadata tabel indeks.
indexMeta := new(tablestore.IndexMeta)
// Atur kolom kunci utama pertama tabel indeks ke kolom kunci utama pertama tabel data.
indexMeta.AddPrimaryKeyColumn("pk1")
// Tentukan kolom definedcol1 tabel data sebagai kolom kunci utama tabel indeks.
indexMeta.AddPrimaryKeyColumn("definedcol1")
// Tentukan kolom definedcol2 tabel data sebagai kolom atribut tabel indeks.
indexMeta.AddDefinedColumn("definedcol2")
// Atur tipe indeks ke IT_LOCAL_INDEX.
indexMeta.IndexType = tablestore.IT_LOCAL_INDEX
// Tentukan nama tabel indeks.
indexMeta.IndexName = "<INDEX_NAME>"
indexReq := &tablestore.CreateIndexRequest{
// Tentukan tabel data tempat Anda ingin membuat tabel indeks dan terapkan pengaturan yang Anda tentukan untuk tabel indeks.
MainTableName:tableName,
IndexMeta: indexMeta,
/**
Anda dapat menyetel parameter IncludeBaseData ke true untuk menyinkronkan data yang ada dari tabel data ke tabel indeks. Dengan cara ini, Anda dapat menggunakan tabel indeks untuk menanyakan semua data dalam tabel data.
Jumlah waktu yang diperlukan untuk menyinkronkan data yang ada dari tabel data ke tabel indeks bervariasi berdasarkan jumlah data dalam tabel data.
*/
IncludeBaseData: true,
}
resp, err := client.CreateIndex(indexReq)
if err != nil {
fmt.Println("Gagal membuat tabel dengan kesalahan:", err)
} else {
fmt.Println("Pembuatan indeks selesai", resp)
}
}Referensi
Setelah membuat indeks sekunder, Anda dapat menggunakannya untuk membaca satu baris data atau data yang nilai kunci utamanya berada dalam rentang tertentu. Untuk informasi lebih lanjut, lihat Gunakan indeks sekunder untuk membaca data.
Anda dapat menghapus indeks sekunder yang tidak lagi digunakan. Untuk informasi lebih lanjut, lihat Hapus indeks sekunder.