Ringkasan time to live (TTL)

Dengan Time to live (TTL), Anda dapat menetapkan kebijakan untuk menghapus data dari tabel Spanner secara berkala. Menghapus data yang tidak diperlukan:

  • Mengurangi biaya penyimpanan dan pencadangan.
  • Mengurangi jumlah baris yang harus dipindai database untuk beberapa kueri, sehingga berpotensi meningkatkan performa kueri.
  • Membantu mematuhi peraturan atau pedoman industri yang membatasi waktu retensi pada jenis data tertentu.

TTL ideal untuk aktivitas pembersihan rutin. Data ini terus berjalan di latar belakang, sehingga secara berkala menghapus data yang memenuhi syarat dalam beberapa batch. Data biasanya dihapus dalam waktu 72 jam setelah tanggal habis masa berlakunya. TTL tidak langsung membatalkan validasi data atau menyembunyikannya dari kueri jika data tersebut memenuhi syarat untuk dihapus. TTL juga tidak memeriksa data saat dimasukkan, sehingga tidak menghalangi Anda menyisipkan baris dengan stempel waktu yang sudah tidak berlaku.

TTL dirancang untuk meminimalkan dampak terhadap aktivitas database lainnya. Hal ini memparalelkan pekerjaan dengan lebih efisien daripada kueri pengguna akhir dan menyertakan logika percobaan ulang untuk memastikan pembersihan end-to-end.

Proses pemadatan latar belakang lainnya mengklaim kembali penyimpanan dari baris yang dihapus, biasanya dalam waktu tujuh hari.

Bagaimana cara kerja TTL?

Anda dapat menetapkan TTL pada tabel Spanner dengan menentukan kebijakan penghapusan baris dalam skema database, yang memungkinkan Spanner menghapus data yang tidak diperlukan secara berkala. Setiap tabel dapat memiliki kebijakannya sendiri. Hanya satu kebijakan TTL yang dapat ditentukan per tabel. Anda menyiapkan TTL secara berbeda untuk database dialek GoogleSQL dan database dialek PostgreSQL.

TTL dengan GoogleSQL

Dengan menggunakan GoogleSQL, Anda menentukan kebijakan penghapusan baris dengan menentukan stempel waktu dan interval untuk menentukan kapan suatu baris memenuhi syarat untuk dihapus; misalnya, tanggal pembaruan terakhir ditambah 30 hari.

Proses sistem latar belakang memeriksa baris yang memenuhi syarat setiap hari. Hal ini memparalelkan penghapusan sebenarnya dalam batch yang dijalankan di dekat tempat data disimpan secara internal. Setiap batch berjalan dalam transaksinya sendiri pada stempel waktu yang konsisten. Dengan demikian, baris dalam batch tertentu, beserta indeks dan turunan yang disisipkan, dijamin akan dihapus secara atomik. Namun, penghapusan di seluruh batch terjadi dalam transaksi yang berbeda.

Karena ini adalah proses latar belakang asinkron, ada penundaan antara kelayakan dan penghapusan. Biasanya, keterlambatan kurang dari 72 jam. Akibatnya, baris mungkin tetap berada di tabel Anda hingga tiga hari setelah masa berlaku TTL-nya berakhir. Misalnya, tabel dengan kebijakan penghapusan baris yang menghapus baris yang lebih lama dari empat hari mungkin menyertakan baris yang berusia hingga tujuh hari serta baris yang lebih lama dan tidak dapat dihapus.

Untuk mengetahui petunjuk langkah demi langkah cara membuat kebijakan penghapusan baris GoogleSQL, lihat Membuat kebijakan TTL.

TTL dengan PostgreSQL

Dengan PostgreSQL, pemilik database dapat menggunakan klausa TTL INTERVAL dalam pernyataan CREATE TABLE atau ALTER TABLE untuk menentukan kebijakan penghapusan baris.

Untuk menetapkan kebijakan penghapusan baris di tabel PostgreSQL, tabel harus memiliki kolom dengan jenis data TIMESTAMPTZ. Klausa TTL INTERVAL menggunakan kolom ini untuk menetapkan spesifikasi interval saat baris memenuhi syarat untuk dihapus.

Klausa tersebut harus dievaluasi ke seluruh jumlah hari. Misalnya, '3 DAYS' diizinkan, begitu juga '4 DAYS 2 MINUTES - 2 MINUTES', tetapi '4 DAYS 3 MINUTES' tidak diizinkan, dan error ditampilkan. Anda tidak dapat menggunakan angka negatif.

Pembersihan sampah memori TTL menghapus baris yang memenuhi syarat secara terus-menerus dan di latar belakang. Karena ini adalah proses latar belakang asinkron, ada penundaan antara kelayakan dan penghapusan. Tabel ini mungkin berisi baris yang memenuhi syarat untuk penghapusan TTL, tetapi TTL-nya belum selesai. Biasanya, keterlambatan kurang dari 72 jam.

Untuk mengetahui petunjuk cara membuat kebijakan penghapusan baris PostgreSQL, lihat Membuat kebijakan TTL.

Pencadangan dan TTL

Memulihkan cadangan

Saat Anda memulihkan database dari cadangan, kebijakan penghapusan baris apa pun yang dikonfigurasi pada database sumber akan otomatis dihapus. Hal ini mencegah Spanner berpotensi menghapus data yang telah habis masa berlakunya segera setelah cadangan dipulihkan. Oleh karena itu, Anda harus mengkonfigurasi ulang TTL secara manual.

Konsistensi data

Cadangan adalah ringkasan yang konsisten dari data Anda pada waktu tertentu (version_time). Cadangan dapat berisi baris yang mungkin memenuhi syarat untuk penghapusan TTL, tetapi TTL-nya belum diselesaikan. Demikian pula, tugas ekspor Dataflow membaca seluruh tabel pada stempel waktu yang tetap.

Pengauditan

TTL mendukung audit penghapusan melalui aliran perubahan. Kumpulan data data aliran data perubahan yang melacak perubahan TTL ke database memiliki kolom transaction_tag yang ditetapkan ke RowDeletionPolicy dan kolom is_system_transaction yang ditetapkan ke true. Pembaca aliran data perubahan kemudian dapat memfilter semua data TTL, atau semua data kecuali data TTL, bergantung pada kasus penggunaannya. Lihat contoh penggunaan Beam untuk memfilter menurut tag transaksi.