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
maxVersionspada tabel data adalah 1, dan nilaitimeToLiveadalah -1, atau data tidak dapat diperbarui dengan memanggilUpdateRow. -
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) |
|
Nama tabel data. |
|
indexMeta (required) |
|
Informasi skema tentang tabel indeks. |
|
includeBaseData (required) |
|
Menentukan apakah tabel indeks mencakup data yang sudah ada di tabel data. Jika Anda mengatur parameter ini ke |
Skema indeks
indexMeta bertipe IndexMeta dan berisi parameter berikut:
|
Name |
Type |
Description |
|
indexName (required) |
|
Nama tabel indeks. Nama ini harus berbeda dari nama tabel data atau tabel deret waktu yang sudah ada. |
|
primaryKey (required) |
|
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) |
|
Daftar nama kolom atribut dari tabel indeks. Hanya kolom pradefinisi dari tabel data yang dapat ditentukan. |
|
indexType (optional) |
|
Jenis indeks. Nilai yang valid adalah |
|
indexUpdateMode (optional) |
|
Mode pembaruan indeks. Indeks sekunder global harus menggunakan |
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);