Waktu Hidup (TTL) adalah atribut indeks pencarian yang menentukan periode retensi data dalam indeks tersebut. Anda dapat menentukan TTL untuk indeks pencarian. Ketika data di indeks disimpan melebihi periode TTL yang ditentukan, Tablestore secara otomatis menghapus data tersebut untuk membebaskan ruang penyimpanan dan mengurangi biaya.
Prasyarat
Sebuah instance TableStoreClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Instance OTSClient.
Sebuah tabel data telah dibuat. Untuk informasi lebih lanjut, lihat Buat Tabel Data.
Catatan penggunaan
Sebelum menentukan TTL dari indeks pencarian, nonaktifkan operasi UpdateRow pada tabel data tempat indeks pencarian dibuat. Jika tidak, masalah semantik mungkin terjadi.
TTL yang ditentukan untuk tabel data berlaku pada kolom atribut, sedangkan TTL yang ditentukan untuk indeks pencarian berlaku pada seluruh baris. Jika sebuah tabel data diperbarui dengan memanggil operasi UpdateRow, beberapa nilai bidang dihapus sementara yang lain tetap ada di tabel data ketika Tablestore membersihkan data. Namun, seluruh baris di indeks pencarian yang dibuat untuk tabel data tidak dihapus, sehingga menyebabkan inkonsistensi antara data di tabel data dan indeks pencarian.
Jika tabel data harus diperbarui, periksa apakah Anda dapat memanggil operasi PutRow sebagai pengganti operasi UpdateRow.
TTL dari indeks pencarian dapat diatur ke -1 atau nilai int32 positif. Unit: detik. Nilai -1 menunjukkan bahwa data di indeks pencarian tidak pernah kedaluwarsa. Nilai int32 maksimum setara dengan sekitar 68 tahun.
TTL dari indeks pencarian bersifat independen dan tidak boleh lebih besar dari TTL dari tabel data tempat indeks pencarian dibuat. Jika Anda perlu mengurangi TTL dari indeks pencarian dan tabel data, ubah terlebih dahulu TTL dari indeks pencarian sebelum mengubah TTL dari tabel data.
Tablestore secara otomatis menghapus data yang kedaluwarsa dari indeks pencarian setiap hari. Anda masih dapat menanyakan data yang kedaluwarsa di indeks pencarian sebelum data tersebut dihapus. Tablestore akan menghapus data yang kedaluwarsa di siklus berikutnya.
Setelah mengubah TTL dari tabel data dan indeks pencarian, Tablestore secara otomatis menghapus data lama yang kedaluwarsa dari tabel data dan indeks pencarian di siklus berikutnya.
Prosedur
Nonaktifkan operasi UpdateRow pada tabel data.
Berikut ini adalah contoh kode sampel yang menunjukkan cara melarang operasi UpdateRow pada tabel data:
public static void disableTableUpdate(SyncClient client) { UpdateTableRequest updateTableRequest = new UpdateTableRequest("<TABLE_NAME>"); TableOptions options = new TableOptions(); // Larang operasi UpdateRow pada tabel data untuk mencegah dampak pada bisnis Anda. options.setAllowUpdate(false); updateTableRequest.setTableOptionsForUpdate(options); client.updateTable(updateTableRequest); }Tentukan TTL untuk indeks pencarian.
Setelah operasi UpdateRow pada tabel data dinonaktifkan, Anda dapat menentukan TTL untuk indeks pencarian yang sudah ada atau saat membuat indeks pencarian baru.
Tentukan TTL saat Anda membuat indeks pencarian
Berikut ini adalah contoh kode sampel yang menunjukkan cara membuat indeks pencarian dengan TTL yang ditentukan. Dalam contoh ini, indeks pencarian terdiri dari kolom-kolom berikut: kolom Col_Keyword tipe String dan kolom Col_Long tipe Long. TTL dari indeks pencarian adalah tujuh hari.
// Gunakan Tablestore SDK untuk Java V5.12.0 atau yang lebih baru. public static void createIndexWithTTL(SyncClient client) { int days = 7; CreateSearchIndexRequest createRequest = new CreateSearchIndexRequest(); // Tentukan nama tabel data. createRequest.setTableName("<TABLE_NAME>"); // Tentukan nama indeks pencarian. createRequest.setIndexName("<SEARCH_INDEX_NAME>"); IndexSchema indexSchema = new IndexSchema(); indexSchema.setFieldSchemas(Arrays.asList( // Tentukan nama dan tipe bidang. new FieldSchema("Col_Keyword", FieldType.KEYWORD), new FieldSchema("Col_Long", FieldType.LONG))); createRequest.setIndexSchema(indexSchema); // Tentukan TTL untuk indeks pencarian. createRequest.setTimeToLiveInDays(days); // Buat indeks pencarian. client.createSearchIndex(createRequest); }Ubah TTL dari indeks pencarian yang sudah ada
Berikut ini adalah contoh kode sampel yang menunjukkan cara menyetel TTL dari indeks pencarian yang sudah ada menjadi 7 hari:
// Gunakan Tablestore SDK untuk Java V5.12.0 atau yang lebih baru. public static void updateIndexWithTTL(SyncClient client) { int days = 7; UpdateSearchIndexRequest updateSearchIndexRequest = new UpdateSearchIndexRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>"); // Ubah TTL dari indeks pencarian. updateSearchIndexRequest.setTimeToLiveInDays(days); client.updateSearchIndex(updateSearchIndexRequest); }TTL dari tabel data bersifat independen dari TTL dari indeks pencarian yang dibuat untuk tabel data. Anda dapat menentukan TTL untuk tabel data.
Berikut ini adalah contoh kode sampel yang menunjukkan cara menyetel TTL dari tabel data menjadi 7 hari:
public static void updateTableTTL(SyncClient client) { int days = 7; UpdateTableRequest updateTableRequest = new UpdateTableRequest("<TABLE_NAME>"); TableOptions options = new TableOptions(); options.setTimeToLiveInDays(days); updateTableRequest.setTableOptionsForUpdate(options); client.updateTable(updateTableRequest); }
FAQ
Apa yang harus dilakukan jika pesan kesalahan "
harus lebih besar dari atau sama dengan search index ttl" muncul saat mengubah TTL tabel data?Referensi
Anda dapat memanggil operasi ListSearchIndex untuk menanyakan semua indeks pencarian yang dibuat untuk tabel data. Untuk informasi lebih lanjut, lihat Daftar Indeks Pencarian.
Anda dapat memanggil operasi DescribeSearchIndex untuk menanyakan deskripsi dari indeks pencarian. Misalnya, Anda dapat menanyakan informasi bidang dan konfigurasi indeks pencarian. Untuk informasi lebih lanjut, lihat Tanyakan Deskripsi dari Indeks Pencarian.
Anda dapat memodifikasi skema dari indeks pencarian secara dinamis untuk menambah, memperbarui, atau menghapus kolom indeks di indeks pencarian. Untuk informasi lebih lanjut, lihat Modifikasi Skema dari Indeks Pencarian Secara Dinamis.
Anda dapat menghapus indeks pencarian yang tidak lagi Anda perlukan. Untuk informasi lebih lanjut, lihat Hapus Indeks Pencarian.