All Products
Search
Document Center

Tablestore:Buat indeks sekunder

Last Updated:Jul 30, 2026

Buat indeks sekunder global atau lokal pada tabel data yang sudah ada menggunakan Tablestore SDK for Java.

Prasyarat

  • Instal Tablestore SDK for Java dan inisialisasi klien.

  • Nilai maxVersions pada tabel data adalah 1, dan nilai timeToLive adalah -1, atau data tidak dapat diperbarui dengan memanggil UpdateRow.

  • Jika ingin menggunakan kolom non-primary key sebagai kolom indeks atau kolom atribut, konfigurasikan kolom tersebut sebagai kolom pradefinisi.

Deskripsi

Indeks sekunder menggunakan skema kunci primer yang berbeda—terdiri dari kolom kunci primer dan kolom pradefinisi dari tabel data—untuk menyediakan dimensi kueri tambahan. Indeks sekunder diklasifikasikan menjadi indeks sekunder global dan indeks sekunder lokal, yang masing-masing memiliki mode sinkronisasi data dan persyaratan kunci primer berbeda. Untuk informasi selengkapnya, lihat Ikhtisar.

Panggil createIndex untuk membuat indeks sekunder pada tabel data yang sudah ada. Untuk membuat satu atau beberapa indeks sekunder secara bersamaan saat membuat tabel data, konfigurasikan skema indeks dalam permintaan createTable. Untuk informasi selengkapnya, lihat Buat tabel data.

public CreateIndexResponse createIndex(CreateIndexRequest createIndexRequest)
        throws TableStoreException, ClientException

Kode contoh berikut membuat indeks sekunder global example_global_index untuk example_table, mencakup data yang sudah ada.

IndexMeta indexMeta = new IndexMeta("example_global_index");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.addDefinedColumn("status");

CreateIndexRequest request =
        new CreateIndexRequest("example_table", indexMeta, true);
client.createIndex(request);

Parameter

CreateIndexRequest berisi parameter berikut:

Name

Type

Description

mainTableName (required)

String

Nama tabel data.

indexMeta (required)

IndexMeta

Informasi skema tentang tabel indeks.

includeBaseData (required)

boolean

Menentukan apakah tabel indeks mencakup data yang sudah ada di tabel data. Jika Anda mengatur parameter ini ke true, data yang sudah ada akan disinkronkan, dan durasi sinkronisasi bervariasi tergantung jumlah datanya. Jika Anda mengatur parameter ini ke false, hanya data yang ditulis setelah indeks dibuat yang akan disinkronkan.

Skema indeks

indexMeta bertipe IndexMeta dan berisi parameter berikut:

Name

Type

Description

indexName (required)

String

Nama tabel indeks. Nama ini harus berbeda dari nama tabel data atau tabel deret waktu yang sudah ada.

primaryKey (required)

List<String>

Daftar terurut nama kolom indeks. Tentukan satu hingga empat kolom, yang dapat berupa kolom kunci primer atau kolom pradefinisi dari tabel data. Tablestore menggunakan urutan penambahan kolom dan secara otomatis menambahkan kolom kunci primer tabel data yang tidak ditentukan ke akhir kunci primer indeks. Untuk indeks sekunder lokal, kolom kunci primer indeks pertama harus sama dengan kolom kunci primer pertama dari tabel data.

definedColumns (optional)

List<String>

Daftar nama kolom atribut dari tabel indeks. Hanya kolom pradefinisi dari tabel data yang dapat ditentukan.

indexType (optional)

IndexType

Jenis indeks. Nilai yang valid adalah IT_GLOBAL_INDEX dan IT_LOCAL_INDEX. Nilai default: IT_GLOBAL_INDEX.

indexUpdateMode (optional)

IndexUpdateMode

Mode pembaruan indeks. Indeks sekunder global harus menggunakan IUM_ASYNC_INDEX. Tablestore menyinkronkan data pada kolom indeks dan kolom kunci primer secara asinkron, dan latensi sinkronisasi biasanya berada pada tingkat milidetik. Indeks sekunder lokal harus menggunakan IUM_SYNC_INDEX. Tablestore memperbarui indeks secara sinkron, dan Anda dapat melakukan kueri data dari tabel indeks setelah data ditulis ke tabel data. Nilai default: IUM_ASYNC_INDEX.

Contoh skenario

Buat indeks sekunder lokal

Untuk membuat indeks sekunder lokal, tetapkan kolom kunci primer pertama dari tabel data sebagai kolom kunci primer pertama indeks, lalu atur jenis indeks dan mode pembaruan masing-masing ke IT_LOCAL_INDEX dan IUM_SYNC_INDEX.

IndexMeta indexMeta = new IndexMeta("example_local_index");
indexMeta.addPrimaryKeyColumn("user_id");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.addDefinedColumn("status");
indexMeta.setIndexType(IndexType.IT_LOCAL_INDEX);
indexMeta.setIndexUpdateMode(IndexUpdateMode.IUM_SYNC_INDEX);

CreateIndexRequest request =
        new CreateIndexRequest("example_table", indexMeta, true);
client.createIndex(request);