全部产品
Search
文档中心

Tablestore:Buat indeks sekunder

更新时间:Jul 06, 2025

Fitur indeks sekunder memungkinkan Anda mengkueri data berdasarkan kunci utama tabel dan kolom indeks dari indeks sekunder yang dibuat untuk tabel tersebut. Jika Anda perlu menggunakan kolom atribut tabel untuk mengkueri data, Anda dapat membuat indeks sekunder untuk mempercepat proses kueri. Saat membuat indeks sekunder, Anda dapat menetapkan kolom indeks atau atribut indeks ke kolom yang telah ditentukan sebelumnya saat pembuatan tabel. Setelah indeks sekunder dibuat, Anda dapat menggunakannya untuk mengkueri data.

Catatan
  • 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 max_versions disetel ke 1 telah dibuat. Salah satu kondisi berikut harus dipenuhi oleh parameter time_to_live tabel data:

    • Parameter time_to_live tabel data disetel ke -1, yang berarti 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.

Operasi API

/**
 * Buat indeks sekunder. 
 * @api
 *
 * @param [] $request
 *            Parameter permintaan, yaitu nama tabel data. 
 * @return [] Respons.
 * @throws OTSClientException Pengecualian yang dikembalikan ketika terjadi kesalahan parameter atau server Tablestore mengembalikan kesalahan verifikasi. 
 * @throws OTSServerException Pengecualian yang dikembalikan ketika server Tablestore mengembalikan kesalahan. 
 * @example "src/examples/CreateIndex.php"
 */
public function createIndex(array $request)

Parameter

Parameter

Deskripsi

table_name

Nama tabel data.

index_meta

Informasi skema tentang tabel indeks. Informasi skema mencakup item berikut:

  • name: nama tabel indeks.

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

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

  • index_update_mode: mode pembaruan tabel indeks. Nilai valid: IndexUpdateModeConst::ASYNC_INDEX dan IndexUpdateModeConst::SYNC_INDEX.

    • Jika Anda tidak menentukan parameter index_update_mode atau Anda menetapkan parameter index_update_mode ke IndexUpdateModeConst::ASYNC_INDEX, mode asinkron digunakan untuk memperbarui indeks.

      Jika Anda menggunakan fitur indeks sekunder global, Anda harus menetapkan parameter index_update_mode ke IndexUpdateModeConst::ASYNC_INDEX.

    • Jika Anda menetapkan parameter index_update_mode ke IndexUpdateModeConst::SYNC_INDEX, mode sinkron digunakan untuk memperbarui indeks.

      Jika Anda menggunakan fitur indeks sekunder lokal, Anda harus menetapkan parameter index_update_mode ke IndexUpdateModeConst::SYNC_INDEX.

  • index_type: tipe tabel indeks. Nilai valid: IndexTypeConst::GLOBAL_INDEX dan IndexTypeConst::LOCAL_INDEX.

    • Jika Anda tidak menentukan parameter index_type atau Anda menetapkan parameter index_type ke IndexTypeConst::GLOBAL_INDEX, indeks sekunder global dibuat.

      Tablestore secara otomatis menyinkronkan data dari kolom yang diindeks 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 menetapkan parameter index_type ke IndexTypeConst::LOCAL_INDEX, indeks sekunder lokal dibuat.

      Tablestore secara otomatis menyinkronkan data dari kolom yang diindeks 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 mengkueri data dalam tabel indeks.

include_base_data

Menentukan apakah akan menyertakan data yang ada dari tabel data dalam tabel indeks. Nilai default: false.

  • Jika Anda menetapkan parameter include_base_data ke true, data yang ada dari tabel data disertakan dalam tabel indeks.

  • Jika Anda tidak menentukan parameter include_base_data atau Anda menetapkan parameter include_base_data ke false, data yang ada dari tabel data tidak disertakan dalam tabel indeks.

Contoh

Buat indeks sekunder global

Jika Anda tidak menentukan parameter index_type dan index_update_mode saat membuat indeks sekunder, indeks sekunder global akan dibuat.

$request = array(
    'table_name' => '<TABLE_NAME>', // Tentukan nama tabel data. 
    //'include_base_data' => true,  // Tetapkan parameter include_base_data ke true untuk menyertakan data yang ada dari tabel data ke tabel indeks. 
    'index_meta' => array(
        'name' => '<INDEX_NAME>',  // Tentukan nama tabel indeks. 
        'primary_key' => array('Col1'), // Tentukan kolom kunci utama tabel indeks. 
        'defined_column' => array('Col2')  // Tentukan kolom atribut tabel indeks. 
    )
);
$otsClient->createIndex($request);

Anda juga dapat menentukan parameter index_type dan index_update_mode untuk membuat indeks sekunder global.

$request = array(
    'table_name' => '<TABLE_NAME>', // Tentukan nama tabel data. 
    //'include_base_data' => true,  // Tetapkan parameter include_base_data ke true untuk menyertakan data yang ada dari tabel data ke tabel indeks. 
    'index_meta' => array(
        'name' => '<INDEX_NAME>',  // Tentukan nama tabel indeks. 
        'primary_key' => array('Col1'), // Tentukan kolom kunci utama tabel indeks. 
        'defined_column' => array('Col2')  // Tentukan kolom atribut tabel indeks. 
        'index_type' => IndexTypeConst::GLOBAL_INDEX,
        'index_update_mode' => IndexUpdateModeConst::ASYNC_INDEX
    )
);
$otsClient->createIndex($request);

Buat indeks sekunder lokal

Kode contoh berikut menunjukkan cara membuat indeks sekunder lokal:

$createLocalRequest = array (
   'table_name' => '<TABLE_NAME>', // Tentukan nama tabel data. 
    //'include_base_data' => true,  // Tetapkan parameter include_base_data ke true untuk menyertakan data yang ada dari tabel data ke tabel indeks. 
   'index_meta' => array (
       'name' => '<INDEX_NAME>',  // Tentukan nama tabel indeks. 
       'primary_key' => array('PK0', 'Col1'), // Tentukan kolom kunci utama tabel indeks. Kolom kunci utama pertama tabel indeks harus sama dengan kolom kunci utama pertama tabel data. 
       'defined_column' => array('Col2')  // Tentukan kolom atribut tabel indeks. 
       'index_type' => IndexTypeConst::LOCAL_INDEX,
       'index_update_mode' => IndexUpdateModeConst::SYNC_INDEX
   )
);
$otsClient->createIndex($createLocalRequest);

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.