Fitur indeks sekunder memungkinkan Anda menanyakan data berdasarkan kunci utama tabel data dan kolom indeks dari indeks sekunder yang dibuat untuk tabel tersebut. Jika Anda perlu 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 ke kolom yang telah ditentukan sebelumnya saat pembuatan tabel data. Anda dapat memanggil operasi CreateIndex untuk membuat tabel indeks pada tabel data yang sudah ada.
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
Sebuah instance OTSClient harus diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi instance OTSClient.
Tabel data dengan parameter maxVersions disetel ke 1 harus dibuat. Salah satu kondisi berikut harus dipenuhi oleh parameter timeToLive dari tabel data:
Parameter timeToLive dari tabel data disetel ke -1, yang berarti bahwa data dalam tabel tidak pernah kedaluwarsa.
Parameter timeToLive dari tabel data disetel ke nilai selain -1, dan operasi pembaruan pada tabel dilarang.
Kolom yang telah ditentukan sebelumnya harus ditetapkan untuk tabel data.
Catatan Penggunaan
Nama tabel indeks harus berbeda dari nama tabel deret 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 dari tabel indeks harus sama dengan kolom kunci utama pertama dari tabel data.
Parameter
Parameter | Deskripsi |
mainTableName | Nama tabel data. |
indexMeta | Informasi skema tentang tabel indeks. Informasi skema mencakup item-item berikut:
|
includeBaseData | Menentukan apakah akan menyertakan data yang ada dari tabel data dalam tabel indeks. Parameter includeBaseData adalah parameter terakhir dalam CreateIndexRequest. 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. |
Contoh
Buat indeks sekunder global
Kode sampel berikut menunjukkan cara membuat indeks sekunder global untuk tabel data:
private static void createIndex(SyncClient client) {
// Tentukan nama tabel indeks.
IndexMeta indexMeta = new IndexMeta("<INDEX_NAME>");
// Tentukan kolom DEFINED_COL_NAME_1 sebagai kolom kunci utama pertama dari tabel indeks.
indexMeta.addPrimaryKeyColumn(DEFINED_COL_NAME_1);
// Tentukan kolom PRIMARY_KEY_NAME_2 sebagai kolom kunci utama kedua dari tabel indeks.
indexMeta.addPrimaryKeyColumn(PRIMARY_KEY_NAME_2);
// Tentukan kolom DEFINED_COL_NAME_2 sebagai kolom atribut dari tabel indeks.
indexMeta.addDefinedColumn(DEFINED_COL_NAME_2);
// Tentukan tabel data untuk mana Anda ingin membuat tabel indeks dan tentukan bahwa tabel indeks menyertakan data yang ada dari tabel data. Terapkan pengaturan yang Anda tentukan untuk tabel indeks.
//CreateIndexRequest request = new CreateIndexRequest("<TABLE_NAME>", indexMeta, true);
// Tentukan tabel data untuk mana Anda ingin membuat tabel indeks dan tentukan bahwa tabel indeks tidak menyertakan data yang ada dari tabel data. Terapkan pengaturan yang Anda tentukan untuk tabel indeks.
CreateIndexRequest request = new CreateIndexRequest("<TABLE_NAME>", indexMeta, false);
/**Anda dapat menyetel parameter IncludeBaseData ke true untuk menyinkronkan data yang ada dari tabel data ke tabel indeks setelah tabel indeks dibuat. Kemudian, Anda dapat menanyakan semua data dari tabel indeks.
Jumlah waktu yang diperlukan untuk menyinkronkan data yang ada dari tabel data ke tabel indeks bervariasi berdasarkan jumlah data dalam tabel data.
*/
//request.setIncludeBaseData(true);
// Buat tabel indeks.
client.createIndex(request);
}Buat indeks sekunder lokal
Kode sampel berikut menunjukkan cara membuat indeks sekunder lokal:
private static void createIndex(SyncClient client) {
// Tentukan nama tabel indeks.
IndexMeta indexMeta = new IndexMeta("<INDEX_NAME>");
// Tentukan kolom PRIMARY_KEY_NAME_1 sebagai kolom kunci utama pertama dari tabel indeks.
// Kolom kunci utama pertama dari indeks sekunder lokal harus sama dengan kolom kunci utama pertama dari tabel data.
indexMeta.addPrimaryKeyColumn(PRIMARY_KEY_NAME_1);
// Tentukan kolom DEFINED_COL_NAME_1 sebagai kolom kunci utama kedua dari tabel indeks.
indexMeta.addPrimaryKeyColumn(DEFINED_COL_NAME_1);
// Tentukan kolom DEFINED_COL_NAME_2 sebagai kolom atribut dari tabel indeks.
indexMeta.addDefinedColumn(DEFINED_COL_NAME_2);
// Setel tipe indeks ke indeks sekunder lokal (IT_LOCAL_INDEX).
indexMeta.setIndexType(IT_LOCAL_INDEX);
// Setel mode pembaruan indeks ke pembaruan sinkron (IUM_SYNC_INDEX).
indexMeta.setIndexUpdateMode(IUM_SYNC_INDEX);
// Tentukan tabel data untuk mana Anda ingin membuat tabel indeks dan tentukan bahwa tabel indeks menyertakan data yang ada dari tabel data. Terapkan pengaturan yang Anda tentukan untuk tabel indeks.
//CreateIndexRequest request = new CreateIndexRequest("<TABLE_NAME>", indexMeta, true);
// Tentukan tabel data untuk mana Anda ingin membuat tabel indeks dan tentukan bahwa tabel indeks tidak menyertakan data yang ada dari tabel data. Terapkan pengaturan yang Anda tentukan untuk tabel indeks.
CreateIndexRequest request = new CreateIndexRequest("<TABLE_NAME>", indexMeta, false);
/**Anda dapat menyetel parameter IncludeBaseData ke true untuk menyinkronkan data yang ada dari tabel data ke tabel indeks setelah tabel indeks dibuat. Kemudian, Anda dapat menanyakan semua data dari tabel indeks.
Jumlah waktu yang diperlukan untuk menyinkronkan data yang ada dari tabel data ke tabel indeks bervariasi berdasarkan jumlah data dalam tabel data.
*/
//request.setIncludeBaseData(true);
// Buat tabel indeks.
client.createIndex(request);
}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.