全部产品
Search
文档中心

Tablestore:Buat indeks sekunder

更新时间:Jul 06, 2025

Fitur indeks sekunder memungkinkan Anda menanyakan data berdasarkan kunci utama tabel dan kolom indeks dari indeks sekunder yang dibuat. Jika Anda perlu menggunakan kolom atribut tabel untuk menanyakan data, Anda dapat membuat indeks sekunder untuk mempercepat kueri. Saat membuat indeks sekunder, Anda dapat mengatur kolom indeks atau kolom atribut sebagai kolom yang telah ditentukan sebelumnya saat pembuatan tabel. Setelah membuat 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 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 instansi OTSClient.

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

  • name: nama tabel indeks.

  • primaryKey: 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 tabel indeks harus sama dengan kolom kunci utama pertama tabel data.

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

  • includeBaseData: menentukan apakah akan menyertakan data yang ada dari tabel data dalam tabel indeks.

    Jika Anda menyetel parameter includeBaseData ke true, tabel indeks menyertakan data yang ada dari tabel data. Jika Anda menyetel parameter includeBaseData ke false, tabel indeks tidak menyertakan data yang ada dari tabel data.

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

    • Jika Anda tidak menentukan parameter indexType atau menyetel parameter indexType 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 indexType 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 langsung menanyakan data dalam tabel indeks.

  • indexUpdateMode: mode pembaruan tabel indeks. Nilai valid: IUM_ASYNC_INDEX dan IUM_SYNC_INDEX.

    • Jika Anda tidak menentukan parameter indexUpdateMode atau menyetel parameter indexUpdateMode ke IUM_ASYNC_INDEX, mode asinkron digunakan untuk memperbarui indeks.

      Jika Anda menggunakan fitur indeks sekunder global, Anda harus menyetel parameter indexUpdateMode ke IUM_ASYNC_INDEX.

    • Jika Anda menyetel parameter indexUpdateMode ke IUM_SYNC_INDEX, mode sinkron digunakan untuk memperbarui indeks.

      Jika Anda menggunakan fitur indeks sekunder lokal, Anda harus menyetel parameter indexUpdateMode ke IUM_SYNC_INDEX.

Contoh

Buat indeks sekunder global

Kode sampel berikut menunjukkan cara membuat indeks sekunder global yang tidak menyertakan 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 col1 dan col2. Kolom kunci utama tabel indeks terdiri dari col1, pk1, dan pk2. Kolom atribut tabel indeks adalah col2.

var client = require('./client');
var TableStore = require('./index.js');

client.createIndex({
    mainTableName: "<TABLE_NAME>", // Tentukan nama tabel data. 
    indexMeta: {
        name: "<INDEX_NAME>", // Tentukan nama tabel indeks. 
        primaryKey: ["col1"], // Tentukan kolom kunci utama untuk tabel indeks. 
        definedColumn: ["col2"], // Tentukan kolom atribut untuk tabel indeks. 
        includeBaseData: false, // Tentukan bahwa tabel indeks tidak menyertakan data yang ada dari tabel data tempat tabel indeks dibuat. Jika Anda ingin menyertakan data yang ada dari tabel data dalam tabel indeks, setel parameter includeBaseData ke true. 
        indexUpdateMode: TableStore.IndexUpdateMode.IUM_ASYNC_INDEX,// Secara default, mode pembaruan indeks adalah pembaruan asinkron (IUM_ASYNC_INDEX). 
        indexType: TableStore.IndexType.IT_GLOBAL_INDEX,// Secara default, tipe indeks adalah indeks sekunder global (IT_GLOBAL_INDEX). 
    }
}, function (err, data) {
    if (err) {
        console.log('error:', err);
        return;
    }
    console.log('success:', JSON.stringify(data, null, 2));
});

Buat indeks sekunder lokal

Kode sampel berikut menunjukkan cara membuat indeks sekunder lokal yang tidak menyertakan 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 col1 dan pk1. Kolom atribut yang ditentukan untuk indeks sekunder lokal adalah col2. Kolom kunci utama tabel indeks terdiri dari col1, pk1, dan pk2. Kolom atribut tabel indeks adalah col2.

var client = require('./client');
var TableStore = require('./index.js');

client.createIndex({
    mainTableName: "<TABLE_NAME>", // Tentukan nama tabel data. 
    indexMeta: {
        name: "<INDEX_TABLE>", // Tentukan nama tabel indeks. 
        primaryKey: ["pk1","col1"], // Tentukan kolom kunci utama untuk tabel indeks. Kolom kunci utama pertama tabel indeks harus sama dengan kolom kunci utama pertama tabel data. 
        definedColumn: ["col2"], // Tentukan kolom atribut untuk tabel indeks. 
        includeBaseData: false, // Tentukan bahwa tabel indeks tidak menyertakan data yang ada dari tabel data tempat tabel indeks dibuat. Jika Anda ingin menyertakan data yang ada dari tabel data dalam tabel indeks, setel parameter includeBaseData ke true. 
        indexUpdateMode: TableStore.IndexUpdateMode.IUM_SYNC_INDEX// Setel parameter indexUpdateMode ke IUM_SYNC_INDEX, yang menunjukkan bahwa indeks diperbarui dalam mode sinkron. Jika Anda menyetel parameter indexType ke IT_LOCAL_INDEX, Anda harus menyetel parameter indexUpdateMode ke IUM_SYNC_INDEX. 
        indexType: TableStore.IndexType.IT_LOCAL_INDEX, // Setel parameter indexType ke IT_LOCAL_INDEX, yang menunjukkan indeks sekunder lokal. 
    }
}, function (err, data) {
    if (err) {
        console.log('error:', err);
        return;
    }
    console.log('success:', JSON.stringify(data, null, 2));
});

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.