Mengelola retensi data dengan kebijakan TTL
Halaman ini menjelaskan cara menggunakan Google Cloud konsol dan Google Cloud CLI untuk mengonfigurasi kebijakan time to live (TTL).Ringkasan time to live
Gunakan kebijakan TTL untuk secara otomatis menghapus data yang sudah tidak berlaku dari database. Kebijakan TTL menetapkan kolom tertentu sebagai waktu habis masa berlaku untuk dokumen dalam koleksi 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 dokumen Anda. Untuk mengetahui harga operasi penghapusan, lihat Harga edisi Firestore Enterprise.
Limit dan batasan
- Anda hanya dapat menandai satu kolom per koleksi sebagai kolom TTL.
- Anda dapat memiliki maksimum 500 konfigurasi TTL tingkat kolom.
Penghapusan TTL
Perhatikan perilaku utama penghapusan berdasarkan TTL berikut:
Penghapusan melalui TTL bukan proses yang instan. Dokumen 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.
Menerapkan kebijakan TTL pada koleksi 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 koleksi tersebut.
Jika suatu dokumen memiliki waktu habis masa berlaku sebelumnya dan Anda menambahkan kebijakan TTL baru ke koleksi, dokumen tersebut akan dihapus dalam waktu 24 jam sejak penyiapan penyelesaian kebijakan TTL dan menjadi aktif.
TTL belum tentu menghapus dokumen dalam urutan yang sama seperti urutan stempel waktu habis masa berlakunya dokumen.
Penghapusan tidak dilakukan secara transaksional. Dokumen dengan waktu habis masa berlaku yang sama belum tentu dihapus pada waktu yang sama. Jika Anda memerlukan perilaku tersebut, lakukan penghapusan menggunakan library klien.
Firestore dengan kompatibilitas MongoDB akan selalu mematuhi kolom TTL terbaru untuk menentukan masa berlaku. Misalnya, jika dokumen yang masa berlakunya habis tetapi belum dihapus memiliki kolom TTL yang diperbarui ke tanggal berikutnya, dokumen tersebut tidak akan habis masa berlakunya dan tanggal baru akan digunakan.
Firestore dengan kompatibilitas MongoDB hanya akan kehilangan masa berlaku dokumen jika kolom TTL ditetapkan ke jenis
Date and time
atauBSON Date
. Membiarkan kolom tidak ada atau ditetapkan ke nilai sepertinull
untuk menonaktifkan habis masa berlaku 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.
Kolom dan indeks TTL
Kolom TTL dapat diindeks atau tidak diindeks. Namun, karena kolom TTL adalah stempel waktu, pengindeksan kolom ini dapat memengaruhi performa pada kecepatan traffic yang lebih tinggi. Mengindeks kolom stempel waktu dapat membuat hotspot yang bertentangan dengan praktik terbaik. Hotspot memiliki kecepatan baca, tulis, dan hapus yang tinggi untuk rentang dokumen yang sempit.
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 Firestore.
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 suatu kolom dokumen sebagai waktu habis masa berlaku untuk dokumen dalam suatu koleksi.
TTL menggunakan kolom yang ditetapkan untuk mengidentifikasi dokumen yang memenuhi syarat untuk dihapus.
Kolom TTL ini harus berjenis Date and time
atau BSON Date
. Anda dapat memilih kolom yang sudah ada atau menentukan kolom yang akan ditambahkan nanti.
Pertimbangkan hal berikut sebelum Anda menetapkan nilai kolom TTL:
Nilai kolom TTL dapat berupa waktu di masa mendatang, sekarang, atau di masa lalu. Jika nilainya adalah waktu di masa lalu, dokumen akan langsung memenuhi syarat untuk dihapus. Misalnya, Anda dapat membuat kebijakan TTL dengan kolom
expireAt
yang kemudian Anda tambahkan ke dokumen yang sudah ada.Menggunakan jenis data lainnya atau tidak menetapkan nilai kolom TTL akan menonaktifkan TTL untuk setiap dokumen.
Untuk membuat kebijakan TTL, ikuti langkah-langkah berikut:
Konsol Google Cloud
Di Google Cloud console, buka halaman Databases.
Pilih database yang diperlukan dari daftar database.
Di menu navigasi, klik Time-to-live.
Klik Create Policy.
Masukkan nama koleksi dan nama kolom 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
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
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_name --enable-ttl
Durasi pengaktifan kebijakan 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
Untuk melihat kebijakan TTL dan statusnya, ikuti langkah-langkah berikut:
Konsol Google Cloud
Di Google Cloud console, 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
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
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 koleksi tertentu, gunakan perintah berikut:
gcloud firestore fields ttls list --collection-group=collection_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
Untuk menonaktifkan kebijakan TTL, ikuti langkah-langkah berikut:
Konsol Google Cloud
Di Google Cloud console, 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, Firestore dengan kompatibilitas MongoDB akan menghapus kebijakan TTL dari tabel.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
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_name --disable-ttl
Memantau penghapusan TTL
Anda dapat menggunakan Cloud Monitoring untuk melihat metrik terkait penghapusan berdasarkan TTL. Firestore dengan kompatibilitas MongoDB menyediakan metrik berikut untuk TTL:
Jenis metrik | Nama metrik | Deskripsi metrik |
---|---|---|
firestore.googleapis.com/document/ttl_deletion_count | Jumlah penghapusan time to live |
Jumlah total dokumen yang dihapus oleh kebijakan TTL. |
firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Akhir masa berlaku time to live hingga penundaan penghapusan |
Waktu yang berlalu antara saat dokumen habis masa berlakunya berdasarkan kebijakan TTL hingga saat dokumen benar-benar dihapus. |
Untuk menyiapkan dasbor dengan metrik Firestore dengan kompatibilitas MongoDB, lihat artikel mengelola dasbor kustom dan menambahkan widget dasbor.