全部产品
Search
文档中心

Tablestore:Buat indeks sekunder

更新时间:Jul 02, 2025

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.

Catatan
  • 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:

  • index_name: nama tabel indeks.

  • primary_key_names: kunci utama tabel indeks. Kunci utama adalah kombinasi dari semua kolom kunci utama dan sejumlah kolom yang telah ditentukan sebelumnya dari tabel data.

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

  • defined_column_names: kolom atribut tabel indeks. Kolom atribut adalah kombinasi dari kolom yang telah ditentukan sebelumnya dari tabel data.

  • index_type: tipe tabel indeks. Nilai valid: IT_GLOBAL_INDEX dan IT_LOCAL_INDEX.

    • Jika Anda tidak menentukan parameter index_type atau Anda menyetel parameter index_type ke IT_GLOBAL_INDEX, indeks sekunder global dibuat.

      Tablestore secara otomatis menyinkronkan data dari kolom terindeks dan kolom kunci utama tabel data ke kolom tabel indeks yang ingin Anda buat dalam mode asinkron. Latensi sinkronisasi berada dalam beberapa milidetik.

    • Jika Anda menyetel parameter index_type ke IT_LOCAL_INDEX, indeks sekunder lokal dibuat.

      Tablestore secara otomatis menyinkronkan data dari kolom terindeks dan kolom kunci utama tabel data ke kolom tabel indeks yang ingin Anda buat dalam mode sinkron. Setelah data ditulis ke tabel data, Anda dapat segera menanyakan data dalam tabel indeks.

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.