Waktu Hidup (TTL) adalah atribut indeks pencarian yang menentukan periode retensi data dalam indeks tersebut. Anda dapat menentukan TTL untuk indeks pencarian. Ketika data disimpan melebihi periode TTL yang ditentukan, Tablestore secara otomatis menghapus data tersebut guna membebaskan ruang penyimpanan dan mengurangi biaya.
Prasyarat
Sebuah instance OTSClient 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 dapat terjadi.
TTL yang ditentukan untuk tabel data berlaku untuk kolom atribut, sedangkan TTL yang ditentukan untuk indeks pencarian berlaku untuk seluruh baris. Jika sebuah tabel data diperbarui dengan memanggil operasi UpdateRow, beberapa nilai bidang dihapus sementara nilai lainnya tetap ada dalam tabel data ketika Tablestore membersihkan data. Namun, seluruh baris dalam indeks pencarian yang dibuat untuk tabel data tidak dihapus. Akibatnya, data dalam tabel data dan indeks pencarian menjadi tidak konsisten.
Jika tabel data harus diperbarui, periksa apakah Anda dapat menggunakan operasi PutRow sebagai pengganti operasi UpdateRow.
TTL dari indeks pencarian dapat diatur ke -1 atau bilangan bulat positif int32. Unit: detik. Nilai -1 menunjukkan bahwa data dalam 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 tabel data tempat indeks pencarian dibuat. Jika Anda perlu mengurangi TTL dari indeks pencarian dan tabel data, ubah TTL indeks pencarian terlebih dahulu sebelum mengubah TTL tabel data.
Tablestore secara otomatis menghapus data yang kedaluwarsa dari indeks pencarian setiap hari. Anda masih dapat menanyakan data yang kedaluwarsa dalam indeks pencarian sebelum data tersebut dihapus. Tablestore akan menghapus data yang kedaluwarsa pada siklus berikutnya.
Setelah mengubah TTL dari tabel data dan indeks pencarian, Tablestore secara otomatis menghapus data historis yang kedaluwarsa dari tabel data dan indeks pencarian pada siklus berikutnya.
Prosedur
Nonaktifkan operasi UpdateRow pada tabel data.
Kode sampel berikut menunjukkan cara menonaktifkan operasi UpdateRow pada tabel data:
func disableTableUpdate(client *tablestore.TableStoreClient) { request := &tablestore.UpdateTableRequest{ TableName: "TableName", TableOption: &tablestore.TableOption{ TimeToAlive: -1, // Gunakan nilai default untuk TTL dari tabel data. Nilai default adalah -1. MaxVersion: 1, // Gunakan nilai default untuk versi maksimum. Nilai default adalah 1. DeviationCellVersionInSec: 86400, // Gunakan nilai default untuk offset versi maksimum. Nilai default adalah 86400. Unit: detik. // Nonaktifkan operasi UpdateRow pada tabel data untuk memastikan kelangsungan bisnis. Jika TTL dikonfigurasikan untuk indeks pencarian dari tabel data, Anda tidak dapat mengizinkan pembaruan pada tabel data. AllowUpdate: proto.Bool(false), }, } resp, err := client.UpdateTable(request) if err != nil { fmt.Println("error :", err) return } fmt.Println("UpdateTable finished, requestId:", resp.ResponseInfo.RequestId) }Tentukan TTL dari indeks pencarian.
Setelah operasi UpdateRow dinonaktifkan pada tabel data, Anda dapat menentukan TTL dari indeks pencarian saat membuat indeks pencarian atau mengubah TTL dari indeks pencarian yang sudah ada.
Tentukan TTL saat Anda membuat indeks pencarian
Kode sampel berikut menunjukkan cara membuat indeks pencarian. Dalam contoh ini, indeks pencarian terdiri dari dua kolom: kolom col1 bertipe String dan kolom col2 bertipe Long. TTL dari indeks pencarian adalah tujuh hari.
func createIndexWithTTL(client *tablestore.TableStoreClient) { request := &tablestore.CreateSearchIndexRequest{} request.TableName = "<TABLE_NAME>" request.IndexName = "<SEARCH_INDEX_NAME>" schemas := []*tablestore.FieldSchema{} field1 := &tablestore.FieldSchema{ FieldName: proto.String("col1"), // Tentukan nama kolom dengan memanggil metode proto.String. Metode ini digunakan untuk meminta pointer string. FieldType: tablestore.FieldType_KEYWORD, // Tentukan tipe kolom. Index: proto.Bool(true), // Aktifkan pengindeksan untuk kolom. EnableSortAndAgg: proto.Bool(true), // Aktifkan pengurutan dan agregasi. } field2 := &tablestore.FieldSchema{ FieldName: proto.String("col2"), FieldType: tablestore.FieldType_LONG, Index: proto.Bool(true), EnableSortAndAgg: proto.Bool(true), } schemas = append(schemas, field1, field2) request.IndexSchema = &tablestore.IndexSchema{ FieldSchemas: schemas, // Tentukan kolom yang termasuk dalam indeks pencarian. } request.TimeToLive = proto.Int32(3600 * 24 * 7) // Atur TTL dari indeks pencarian menjadi tujuh hari. resp, err := client.CreateSearchIndex(request) if err != nil { fmt.Println("error :", err) return } fmt.Println("createIndexWithTTL finished, requestId:", resp.ResponseInfo.RequestId) }Ubah TTL dari indeks pencarian yang sudah ada
Kode sampel berikut menunjukkan cara mengatur TTL dari indeks pencarian yang sudah ada menjadi tujuh hari:
func updateIndexWithTTL(client *tablestore.TableStoreClient) { request := &tablestore.UpdateSearchIndexRequest{} request.TableName = "TableName" request.IndexName = "IndexName" request.TimeToLive = proto.Int32(3600 * 24 * 7) // Atur TTL dari indeks pencarian menjadi tujuh hari. resp, err := client.UpdateSearchIndex(request) if err != nil { fmt.Println("error :", err) return } fmt.Println("updateIndexWithTTL finished, requestId:", resp.ResponseInfo.RequestId) }TTL dari indeks pencarian bersifat independen dari TTL tabel data tempat indeks pencarian dibuat. Jika Anda ingin menggunakan fitur TTL untuk tabel data, tentukan TTL dari tabel data.
Kode sampel berikut menunjukkan cara mengatur TTL dari tabel data menjadi tujuh hari:
// Atur TTL dari tabel data menjadi tujuh hari. func updateTableTTL(client *tablestore.TableStoreClient) { request := &tablestore.UpdateTableRequest{ TableName: "TableName", TableOption: &tablestore.TableOption{ TimeToAlive: 3600 * 24 * 7, // Atur TTL dari tabel data menjadi tujuh hari. Pastikan bahwa TTL dari tabel data lebih besar atau sama dengan TTL dari indeks pencarian yang dibuat untuk tabel data. MaxVersion: 1, // Gunakan nilai default untuk versi maksimum. Nilai default adalah 1. DeviationCellVersionInSec: 86400, // Gunakan nilai default untuk offset versi maksimum. Nilai default adalah 86400. Unit: detik. // Nonaktifkan operasi UpdateRow pada tabel data untuk memastikan kelangsungan bisnis. Jika TTL dikonfigurasikan untuk indeks pencarian dari tabel data, Anda tidak dapat mengizinkan pembaruan pada tabel data. AllowUpdate: proto.Bool(false), }, } resp, err := client.UpdateTable(request) if err != nil { fmt.Println("error :", err) return } fmt.Println("UpdateTable finished, requestId:", resp.ResponseInfo.RequestId) }
FAQ
Apa yang harus saya lakukan jika pesan kesalahan
must be bigger than or equal search index ttl muncul ketika saya memodifikasi TTL dari 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 secara dinamis memodifikasi skema dari indeks pencarian untuk menambah, memperbarui, atau menghapus kolom indeks dalam indeks pencarian. Untuk informasi lebih lanjut, lihat Modifikasi Dinamis Skema dari Indeks Pencarian.
Anda dapat menghapus indeks pencarian yang tidak lagi Anda butuhkan. Untuk informasi lebih lanjut, lihat Hapus Indeks Pencarian.