Time to live (TTL) memungkinkan Anda menetapkan kebijakan untuk menghapus data secara berkala dari tabel Spanner. Menghapus data yang tidak diperlukan:
- Mengurangi biaya penyimpanan dan pencadangan.
- Mengurangi jumlah baris yang harus dipindai database untuk beberapa kueri, yang berpotensi meningkatkan performa kueri.
- Membantu mematuhi peraturan atau pedoman industri yang membatasi waktu retensi pada jenis data tertentu.
TTL ideal untuk aktivitas pembersihan rutin. Proses ini berjalan terus-menerus di latar belakang, yang secara berkala menghapus data yang memenuhi syarat dalam batch. Data biasanya dihapus dalam waktu 72 jam setelah tanggal habis masa berlakunya. Setiap penghapusan memerlukan replika kunci utama di seluruh replika database yang menyebabkan biaya replikasi. Untuk mengetahui informasi selengkapnya, lihat Harga replikasi data. TTL tidak langsung membatalkan validasi data atau menyembunyikannya dari kueri saat data tersebut memenuhi syarat untuk dihapus. TTL juga tidak memeriksa data saat disisipkan, sehingga tidak memblokir Anda untuk menyisipkan baris dengan stempel waktu yang sudah tidak berlaku.
TTL dirancang untuk meminimalkan dampak terhadap aktivitas database lainnya. Fungsi ini melakukan paralelisme pekerjaan secara lebih efisien daripada kueri pengguna akhir dan menyertakan logika percobaan ulang untuk memastikan pembersihan menyeluruh.
Proses pemadatan latar belakang lainnya akan mengklaim kembali penyimpanan dari baris yang dihapus, biasanya dalam 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 GoogleSQL, Anda menentukan kebijakan penghapusan baris dengan menentukan stempel waktu dan interval untuk menentukan kapan baris memenuhi syarat untuk dihapus; misalnya, tanggal pembaruan terakhir ditambah 30 hari.
Proses sistem latar belakang memeriksa baris yang memenuhi syarat setiap hari. Fungsi ini akan melakukan penghapusan secara paralel 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 diselingi, 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 ada di tabel Anda hingga tiga hari setelah TTL-nya berakhir masa berlakunya; misalnya, tabel dengan kebijakan penghapusan baris yang menghapus baris yang lebih lama dari empat hari dapat menyertakan baris yang berusia hingga tujuh hari serta baris yang lebih lama dan tidak dapat dihapus.
Untuk mengetahui petunjuk langkah demi langkah tentang 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 pada tabel PostgreSQL, tabel harus
memiliki kolom dengan jenis data TIMESTAMPTZ
. Klausul TTL INTERVAL
menggunakan
kolom ini untuk menetapkan spesifikasi interval saat baris memenuhi syarat untuk
dihapus.
Klausul harus dievaluasi menjadi bilangan bulat hari. Misalnya, '3
DAYS'
diizinkan, begitu juga '4 DAYS 2 MINUTES - 2 MINUTES'
, tetapi '4 DAYS 3
MINUTES'
tidak diizinkan, dan error akan ditampilkan. Anda tidak dapat menggunakan angka
negatif.
Pengumpulan sampah 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 mungkin berisi baris yang memenuhi syarat untuk penghapusan TTL, tetapi TTL-nya belum selesai. Biasanya, penundaan kurang dari 72 jam.
Untuk petunjuk tentang 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 di database sumber akan otomatis dihapus. Hal ini mencegah Spanner berpotensi menghapus data yang masa berlakunya habis segera setelah pencadangan dipulihkan. Oleh karena itu, Anda harus mengonfigurasi ulang TTL secara manual.
Konsistensi data
Cadangan adalah snapshot data Anda yang konsisten pada
titik waktu tertentu (version_time
). Cadangan dapat berisi baris yang
mungkin memenuhi syarat untuk penghapusan TTL, tetapi TTL-nya belum selesai.
Demikian pula, tugas ekspor Dataflow membaca seluruh tabel pada stempel waktu tetap.
Pengauditan
TTL mendukung audit penghapusannya melalui aliran perubahan.
Data catatan aliran 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 perubahan kemudian
dapat memfilter semua data TTL, atau semua data kecuali data
TTL, bergantung pada kasus penggunaannya. Lihat contoh menggunakan Beam untuk memfilter menurut tag transaksi.
Langkah selanjutnya
- Pelajari cara mengelola retensi data dengan TTL.
- Pelajari metrik dan pemantauan TTL.