Fitur indeks sekunder memungkinkan Anda menanyakan data berdasarkan kunci utama tabel data dan kolom indeks dari indeks sekunder yang dibuat. Jika ingin 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 menjadi kolom yang telah ditentukan sebelumnya saat pembuatan tabel data. Setelah pembuatan indeks sekunder, Anda dapat menggunakannya untuk menanyakan data.
Indeks sekunder diklasifikasikan menjadi indeks sekunder global dan lokal. Untuk informasi lebih lanjut tentang fitur indeks sekunder, lihat Ikhtisar.
Anda dapat membuat satu atau beberapa 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 instansi OTSClient.
Tabel data dengan parameter max_version disetel ke 1 telah dibuat. Salah satu kondisi berikut harus dipenuhi oleh parameter time_to_live tabel data: Untuk informasi lebih lanjut, lihat Buat tabel data.
Parameter time_to_live tabel data disetel ke -1, yang menandakan bahwa data dalam tabel tidak pernah kedaluwarsa.
Parameter time_to_live 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 |
main_table_name | Nama tabel data. |
index_meta | Informasi skema tentang tabel indeks. Informasi skema mencakup item-item berikut:
|
include_base_data | Menentukan apakah akan menyertakan data yang ada dari tabel data dalam tabel indeks. Jika Anda menyetel parameter include_base_data ke true, tabel indeks menyertakan data yang ada. Jika Anda menyetel parameter include_base_data ke false, tabel indeks tidak menyertakan data yang ada. |
Contoh
Buat indeks sekunder global
Kode sampel berikut menunjukkan cara membuat indeks sekunder untuk tabel data. Dalam contoh ini, kolom kunci utama tabel data adalah pk1 dan pk2. Kolom kunci utama yang ditentukan untuk indeks sekunder adalah definedcol1 dan pk1. Kolom atribut yang ditentukan untuk indeks sekunder adalah definedcol2 dan definedcol3.
# Tentukan metadata tabel indeks.
# Tentukan nama, kolom kunci utama, dan kolom atribut tabel indeks secara berurutan.
index_meta = SecondaryIndexMeta('<INDEX_NAME>', ['definedcol1', 'pk1'], ['definedcol2', 'definedcol3'])
# Tentukan nama tabel data dan tentukan bahwa tabel indeks tidak menyertakan data yang ada dari tabel data.
client.create_secondary_index('<TABLE_NAME>', index_meta, False)
# Tentukan nama tabel data dan tentukan bahwa tabel indeks menyertakan data yang ada dari tabel data.
# Setelah Anda membuat tabel indeks, data yang ada dari tabel data disinkronkan ke tabel indeks. Setelah data yang ada disinkronkan, Anda dapat menggunakan tabel indeks untuk menanyakan semua data dalam tabel data. Waktu yang diperlukan untuk sinkronisasi bervariasi berdasarkan jumlah data yang disinkronkan.
# client.create_secondary_index('<TABLE_NAME>', index_meta, True)
Buat indeks sekunder lokal
Kode sampel berikut menunjukkan cara membuat indeks sekunder untuk tabel data. Dalam contoh ini, kolom kunci utama tabel data adalah pk1 dan pk2. Kolom kunci utama yang ditentukan untuk indeks sekunder adalah definedcol1 dan pk1. Kolom atribut yang ditentukan untuk indeks sekunder adalah definedcol2 dan definedcol3.
# Tentukan metadata tabel indeks.
# Tentukan nama, kolom kunci utama, kolom atribut, dan tipe tabel indeks secara berurutan.
# Kolom kunci utama pertama dari indeks sekunder lokal harus sama dengan kolom kunci utama pertama dari tabel data.
index_meta = SecondaryIndexMeta('<INDEX_NAME>', ['pk1', 'definedcol1'], ['definedcol2', 'definedcol3'],index_type= SecondaryIndexType.LOCAL_INDEX)
# Tentukan nama tabel data dan tentukan bahwa tabel indeks tidak menyertakan data yang ada dari tabel data.
client.create_secondary_index('<TABLE_NAME>', index_meta, False)
# Tentukan nama tabel data dan tentukan bahwa tabel indeks menyertakan data yang ada dari tabel data.
# Setelah Anda membuat tabel indeks, data yang ada dari tabel data disinkronkan ke tabel indeks. Setelah data yang ada disinkronkan, Anda dapat menggunakan tabel indeks untuk menanyakan semua data dalam tabel data. Waktu yang diperlukan untuk sinkronisasi bervariasi berdasarkan jumlah data yang disinkronkan.
# client.create_secondary_index('<TABLE_NAME>', index_meta, True)
Referensi
Setelah membuat indeks sekunder, Anda dapat menggunakannya untuk membaca satu baris data atau data dengan nilai kunci utama 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.