Halaman ini menjelaskan cara menggunakan Google Cloud Console dan Google Cloud CLI untuk mengonfigurasi kebijakan time to live (TTL). Sebelum membaca halaman ini, Anda harus memahami model data mode Datastore.
Ringkasan time to live (TTL)
Gunakan kebijakan TTL untuk otomatis menghapus data yang sudah tidak berlaku dari database Anda. Kebijakan TTL menetapkan properti tertentu sebagai waktu habis masa berlaku untuk entity dalam jenis tertentu. Dengan TTL, Anda dapat mengurangi biaya penyimpanan dengan menghapus data yang sudah tidak digunakan. Data biasanya dihapus dalam waktu 24 jam setelah tanggal habis masa berlakunya.
Harga
Operasi penghapusan TTL diperhitungkan dalam biaya penghapusan entitas Anda. Untuk mengetahui harga operasi penghapusan, lihat Harga Firestore dalam mode Datastore.
Limit dan batasan
- Hanya satu properti per jenis yang dapat ditandai sebagai properti TTL.
- Ada total 200 kebijakan TTL yang diizinkan.
Penghapusan TTL
Perhatikan perilaku utama penghapusan berdasarkan TTL berikut:
Penghapusan melalui TTL bukan proses yang instan. Entitas yang habis masa berlakunya akan terus muncul di kueri dan permintaan pencarian hingga proses TTL benar-benar menghapusnya. TTL mengorbankan ketepatan waktu penghapusan dengan tujuan mengurangi total biaya kepemilikan untuk penghapusan. Data biasanya dihapus dalam waktu 24 jam setelah tanggal habis masa berlakunya.
Menghapus entity melalui TTL tidak akan menghapus entity turunan tersebut.
Menerapkan kebijakan TTL pada jenis yang sudah ada akan mengakibatkan penghapusan massal semua data yang masa berlakunya telah habis sesuai dengan kebijakan TTL yang baru. Perhatikan bahwa penghapusan massal ini juga tidak seketika dan bergantung pada jumlah data yang ada untuk jenis tersebut.
Jika suatu entitas memiliki waktu habis masa berlaku di masa lalu dan Anda menambahkan kebijakan ttl baru ke jenis tersebut, entitas tersebut akan dihapus dalam waktu 24 jam setelah kebijakan ttl selesai disiapkan dan menjadi aktif.
TTL belum tentu menghapus entity dalam urutan yang sama seperti urutan stempel waktu habis masa berlakunya.
Penghapusan tidak dilakukan secara transaksional. Entitas dengan waktu habis masa berlaku yang sama belum tentu dihapus pada waktu yang sama. Jika Anda memerlukan perilaku tersebut, lakukan penghapusan menggunakan library klien.
Mode Datastore akan selalu menerima kolom TTL terbaru untuk menentukan masa berlaku. Misalnya, jika entitas yang masa berlakunya habis tetapi belum dihapus memiliki kolom TTL yang diperbarui ke tanggal berikutnya, entitas tersebut tidak akan habis masa berlakunya dan tanggal baru akan digunakan.
Mode Datastore hanya akan mengakhiri masa berlaku dokumen jika kolom TTL ditetapkan ke jenis
Timestamp
. Membiarkan kolom tidak ada atau ditetapkan ke nilai sepertinull
memungkinkan habis masa berlaku dinonaktifkan per dokumen.TTL dirancang untuk meminimalkan dampak terhadap aktivitas database lainnya. Penghapusan berdasarkan TTL diperlakukan dengan prioritas yang lebih rendah. Strategi lain juga tersedia untuk memperlancar lonjakan traffic dari penghapusan berbasis TTL.
Properti dan indeks TTL
Properti TTL dapat diindeks atau tidak diindeks. Namun, karena properti TTL adalah stempel waktu, pengindeksan properti dapat memengaruhi performa pada rasio traffic yang lebih tinggi. Mengindeks properti stempel waktu bertentangan dengan praktik terbaik dan dapat membuat hotspot. Hotspot memiliki kecepatan baca, tulis, dan hapus yang tinggi untuk rentang kunci yang sempit.
Secara default, Datastore membuat indeks bawaan untuk semua properti. Anda dapat mengecualikan properti dari indeks untuk menonaktifkan indeks di properti TTL.
Izin
Akun utama yang mengonfigurasi kebijakan TTL memerlukan izin berikut pada project:
- Untuk melihat kebijakan TTL, Anda memerlukan izin
datastore.indexes.list
dandatastore.indexes.get
. - Untuk memodifikasi kebijakan TTL, Anda memerlukan izin
datastore.indexes.update
. - Untuk memeriksa status operasi TTL, Anda memerlukan izin
datastore.operations.list
dandatastore.operations.get
.
Untuk peran yang menetapkan izin ini, lihat Peran Identity and Access Management Datastore.
Sebelum memulai
Sebelum menggunakan gcloud CLI untuk mengelola kebijakan TTL, gunakan perintah gcloud components update
untuk mengupdate komponen ke versi terbaru yang tersedia:
gcloud components update
Membuat kebijakan TTL
Saat membuat kebijakan TTL, Anda menetapkan properti entity sebagai waktu habis masa berlaku untuk entity dalam suatu jenis. Kebijakan TTL berlaku untuk jenis yang ditentukan di semua namespace.
TTL menggunakan properti yang ditentukan untuk mengidentifikasi entitas yang memenuhi syarat untuk dihapus. Properti TTL ini harus berjenis Date and time
. Anda dapat memilih properti yang sudah ada atau menentukan properti yang akan ditambahkan nanti.
Pertimbangkan hal berikut sebelum Anda menetapkan nilai properti TTL:
Nilai properti TTL dapat berupa waktu di masa mendatang, sekarang, atau di masa lalu. Jika nilainya adalah waktu di masa lalu, entitas akan langsung memenuhi syarat untuk dihapus. Misalnya, Anda dapat membuat kebijakan TTL dengan properti
expireAt
yang kemudian Anda tambahkan ke entity yang sudah ada.Menggunakan jenis data lainnya atau tidak menetapkan nilai properti TTL akan menonaktifkan TTL untuk setiap entity.
Ikuti langkah-langkah di bawah ini untuk membuat kebijakan TTL:
Google Cloud Console
Di konsol Google Cloud, buka halaman Databases.
Pilih database yang diperlukan dari daftar database.
Di menu navigasi, klik Time-to-live.
Klik Create Policy.
Masukkan nama jenis dan nama properti stempel waktu.
Klik Create.
Konsol akan kembali ke halaman Time-to-live. Jika operasi berhasil dimulai, halaman akan menambahkan entri ke tabel kebijakan TTL. Jika gagal, halaman akan menampilkan pesan error.
gcloud
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Gunakan perintah
firestore fields ttls update
untuk mengonfigurasi kebijakan TTL. Tambahkan flag--async
agar gcloud CLI tidak menunggu operasi selesai.gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --enable-ttl
Bahkan pada database yang kosong, diperlukan waktu sepuluh menit atau lebih untuk mengaktifkan kebijakan TTL. Setelah Anda memulai operasi, penutupan terminal tidak akan membatalkan operasi.
Melihat kebijakan TTL
Ikuti langkah-langkah di bawah ini untuk melihat kebijakan TTL dan statusnya.
Google Cloud Console
Di konsol Google Cloud, buka halaman Databases.
Pilih database yang diperlukan dari daftar database.
Di menu navigasi, klik Time-to-live.
Konsol mencantumkan kebijakan TTL untuk database Anda dan menyertakan status setiap kebijakan.
gcloud
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Gunakan perintah
firestore fields ttls list
untuk mengonfigurasi kebijakan TTL. Perintah berikut mencantumkan semua kebijakan TTL.gcloud firestore fields ttls list
Untuk mencantumkan kebijakan TTL pada jenis tertentu, gunakan perintah berikut:
gcloud firestore fields ttls list --collection-group=collection_group_name
Melihat detail operasi
Anda dapat menggunakan gcloud CLI untuk melihat info selengkapnya tentang kebijakan TTL yang ada dalam status CREATING
.
Gunakan perintah operations list
untuk melihat semua operasi yang sedang berjalan dan yang baru selesai:
gcloud firestore operations list
Responsnya mencakup perkiraan progres operasi.
Menonaktifkan kebijakan TTL
Ikuti langkah-langkah di bawah ini untuk menonaktifkan kebijakan TTL.
Google Cloud Console
Di konsol Google Cloud, buka halaman Databases.
Pilih database yang diperlukan dari daftar database.
Di menu navigasi, klik Time-to-live.
Di tabel kebijakan TTL, temukan baris untuk kebijakan TTL. Dalam baris tabel ini, klik tombol Delete (tempat sampah).
Konfirmasikan dengan mengklik Delete.
Konsol akan kembali ke halaman Time-to-live. Jika berhasil, Datastore akan menghapus kebijakan TTL dari tabel.
gcloud
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Gunakan perintah
firestore fields ttls update
untuk mengonfigurasi kebijakan TTL. Tambahkan flag--async
agar gcloud CLI tidak menunggu operasi selesai.gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
Memantau penghapusan TTL
Anda dapat menggunakan Cloud Monitoring untuk melihat metrik terkait penghapusan berdasarkan TTL. Datastore menyediakan metrik berikut untuk TTL:
datastore.googleapis.com/entity/ttl_deletion_count | Jumlah penghapusan TTL |
Jumlah total entity yang dihapus oleh kebijakan TTL. |
datastore.googleapis.com/entity/ttl_expiration_to_deletion_delays | Akhir masa berlaku TTL hingga penundaan penghapusan |
Waktu yang berlalu antara saat suatu entitas habis masa berlakunya berdasarkan kebijakan TTL hingga saat entitas benar-benar dihapus. |
Untuk menyiapkan dasbor dengan metrik Datastore, lihat artikel mengelola dasbor kustom dan menambahkan widget dasbor.