Mengelola retensi data dengan kebijakan TTL

Halaman ini menjelaskan cara menggunakan Konsol Google Cloud dan Google Cloud CLI untuk mengonfigurasi kebijakan time to live (TTL). Sebelum membaca halaman ini, Anda harus memahami model data Firestore.

Ringkasan time to live (TTL)

Gunakan kebijakan TTL untuk otomatis menghapus data yang sudah tidak berlaku dari database Anda. Kebijakan TTL menetapkan kolom tertentu sebagai waktu habis masa berlaku untuk dokumen dalam grup 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 Firestore.

Limit dan batasan

  • Untuk tiap grup koleksi, hanya satu kolom yang dapat ditandai sebagai kolom TTL.
  • Total konfigurasi tingkat kolom yang diizinkan adalah 200. Satu konfigurasi kolom dapat berisi beberapa konfigurasi untuk kolom yang sama. Misalnya, pengecualian pengindeksan kolom tunggal dan kebijakan TTL pada kolom yang sama dihitung sebagai satu konfigurasi kolom dalam batas yang ditentukan.
  • Untuk pelanggan mode Datastore dalam Datastore, TTL tidak dapat digunakan dengan mode serentak Optimistic With Entity Groups. Sebaiknya ubah mode serentak ke Mode serentak optimis.

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.

  • Menghapus dokumen melalui TTL tidak akan menghapus subkoleksi dalam dokumen tersebut.

  • Menerapkan kebijakan TTL pada grup koleksi yang sudah ada akan mengakibatkan penghapusan massal semua data yang habis masa berlakunya sesuai dengan kebijakan TTL yang baru. Perhatikan bahwa penghapusan massal ini juga tidak seketika dan bergantung pada jumlah data yang ada untuk grup koleksi tersebut.

  • Jika dokumen memiliki masa berlaku di masa lalu dan Anda menambahkan kebijakan TTL baru ke koleksi, dokumen tersebut akan dihapus dalam waktu 24 jam setelah kebijakan TTL menyelesaikan penyiapan 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 akan selalu mengikuti 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.

  • 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.

  • Penghapusan melalui TTL akan memanggil semua pemroses snapshot aktif dan memicu pemicu Cloud Functions Firestore.

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. Hal ini bertentangan dengan praktik terbaik. Hotspot memiliki kecepatan baca, tulis, dan hapus yang tinggi untuk rentang dokumen yang sempit.

Secara default, Firestore membuat indeks kolom tunggal untuk semua kolom. Anda dapat membuat pengecualian indeks kolom tunggal untuk menonaktifkan indeks di kolom TTL.

Izin

Akun utama yang mengonfigurasi kebijakan TTL memerlukan izin berikut pada project:

  • Untuk melihat kebijakan TTL, Anda memerlukan izin datastore.indexes.list dan datastore.indexes.get.
  • Untuk memodifikasi kebijakan TTL, Anda memerlukan izin datastore.indexes.update.
  • Untuk memeriksa status operasi TTL, Anda memerlukan izin datastore.operations.list dan datastore.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 grup koleksi.

TTL menggunakan kolom yang ditetapkan untuk mengidentifikasi dokumen yang memenuhi syarat untuk dihapus. Kolom TTL ini harus berjenis Date and time. 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:

Google Cloud Console

  1. Di konsol Google Cloud, buka halaman Databases.

    BUka Database

  2. Pilih database yang diperlukan dari daftar database.

  3. Di menu navigasi, klik Time-to-live.

  4. Klik Create Policy.

  5. Masukkan nama grup koleksi dan nama kolom stempel waktu.

  6. 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

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    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.

  2. 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 

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:

Google Cloud Console

  1. Di konsol Google Cloud, buka halaman Databases.

    BUka Database

  2. Pilih database yang diperlukan dari daftar database.

  3. Di menu navigasi, klik Time-to-live.

Konsol mencantumkan kebijakan TTL untuk database Anda dan menyertakan status setiap kebijakan.

gcloud

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    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.

  2. 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 grup koleksi tertentu, gunakan perintah berikut:

    gcloud firestore fields ttls list  --collection-group=collection_group_name
    

View operation details

You can use the gcloud CLI to view more details about a TTL policy that is in the CREATING state.

Use the operations list command to see all running and recently completed operations:

gcloud firestore operations list

Responsnya mencakup perkiraan progres operasi.

Menonaktifkan kebijakan TTL

Untuk menonaktifkan kebijakan TTL, ikuti langkah-langkah berikut:

Google Cloud Console

  1. Di konsol Google Cloud, buka halaman Databases.

    BUka Database

  2. Pilih database yang diperlukan dari daftar database.

  3. Di menu navigasi, klik Time-to-live.

  4. Di tabel kebijakan TTL, temukan baris untuk kebijakan TTL. Dalam baris tabel ini, klik tombol Delete (tempat sampah).

  5. Konfirmasikan dengan mengklik Delete.

Konsol akan kembali ke halaman Time-to-live. Jika berhasil, Firestore akan menghapus kebijakan TTL dari tabel.

gcloud

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    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.

  2. 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. Firestore 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, lihat artikel mengelola dasbor kustom dan menambahkan widget dasbor.