Menyimulasikan TTL tingkat sel
Di Bigtable , kebijakan pembersihan sampah memori ditetapkan pada tingkat kelompok kolom, dan Anda tidak dapat menentukan kebijakan pembersihan sampah memori tingkat sel. Namun, Anda dapat menyimulasikan kebijakan time to live (TTL) pada tingkat sel dengan mengubah setelan pembersihan sampah memori. Halaman ini menjelaskan beberapa pendekatan yang dapat Anda gunakan.
Sebelum membaca halaman ini, Anda harus membaca ringkasan pembersihan sampah memori. Untuk mempelajari cara mengirim permintaan tulis, yang menyertakan stempel waktu, lihat Penulisan Bigtable.
Akhir masa berlaku satu detik
Dalam pendekatan ini, tetapkan aturan pembersihan sampah memori agar masa berlaku data berakhir setelah satu detik. Setiap kali Anda menulis data, setel stempel waktu sel ke waktu yang diinginkan untuk mengakhiri nilai. Selama pemadatan, Bigtable akan menghapus semua sel yang memiliki stempel waktu setidaknya satu detik sebelumnya. Misalnya, jika Anda menetapkan stempel waktu sel ke 30 April pukul 09.00.00, sel akan dihapus setelah 30 April pukul 09.00.01. Pendekatan ini memungkinkan Anda menetapkan nilai habis masa berlaku yang berbeda untuk sel yang berbeda-beda dalam kelompok kolom yang sama.
Keuntungan kedaluwarsa satu detik
- Stempel waktu memiliki arti yang sebenarnya: waktu habis masa berlaku.
Kekurangan dari kedaluwarsa satu detik
Setiap aplikasi yang menulis data ke kelompok kolom Bigtable ini perlu dikonfigurasi untuk mengikuti aturan ini. Jika Anda lupa dan menggunakan stempel waktu server default pada operasi tulis, data tersebut akan langsung berakhir masa berlakunya dan dihapus selama pemadatan berikutnya.
Karena stempel waktu tidak "nyata", Anda tidak dapat menggunakan stempel waktu untuk kasus penggunaan lainnya, seperti menentukan kapan nilai ditulis. Sebagai solusinya, Anda dapat menulis stempel waktu yang sebenarnya ke kolom terpisah, tetapi tindakan ini akan meningkatkan jumlah data yang disimpan.
Anda tidak dapat mengimplementasikan strategi ini pada grup kolom yang sudah memiliki data dengan stempel waktu yang sebenarnya. Jika data yang sudah ada memiliki stempel waktu nyata, atau jika Anda tidak sengaja menulis data baru dengan stempel waktu nyata, data tersebut akan dihapus selama pemadatan berikutnya.
Anda tidak dapat menentukan bahwa beberapa sel untuk baris dan kolom tertentu harus berakhir masa berlakunya bersamaan satu sama lain. Data baru akan menimpa data lama dengan stempel waktu yang sama.
Karena pembersihan sampah memori dapat memerlukan waktu hingga satu minggu, Anda harus selalu menggunakan filter saat membaca data.
Akhir masa berlaku default
Misalkan Anda ingin sebagian besar data memiliki TTL default, tetapi Anda ingin menetapkan nilai habis masa berlaku per sel yang berbeda untuk sebagian data.
Misalnya, Anda dapat menyimpan peristiwa klik untuk sepuluh pelanggan dalam satu tabel. Sebagian besar peristiwa klik akan berakhir setelah 2 hari, tetapi Anda memiliki satu pelanggan yang peristiwa kliknya akan berakhir setelah satu jam, dan Anda memiliki pelanggan lain yang peristiwa kliknya akan berakhir setelah 3 hari.
Dengan pendekatan ini, buat grup kolom dengan batas usia untuk pembersihan sampah memori yang ditetapkan ke TTL default. Untuk data yang ingin habis masa berlakunya lebih cepat daripada default, tetapkan stempel waktu agar lebih awal dari waktu data benar-benar ditulis. Untuk data yang ingin habis masa berlakunya nanti, tetapkan stempel waktu agar lebih lambat dari waktu data benar-benar ditulis.
Keuntungan masa berlaku default
TTL default diterapkan untuk penulisan yang tidak memiliki TTL kustom.
Pendekatan ini dapat diterapkan dengan aman pada tabel yang sudah ada.
Kekurangan masa berlaku default
Stempel waktu tidak bermakna secara semantik karena stempel waktu sel mungkin nyata atau buatan. Artinya, Anda tidak dapat menggunakan stempel waktu sel untuk kasus penggunaan lainnya, seperti menentukan kapan nilai ditulis. Sebagai solusinya, Anda dapat menulis stempel waktu yang sebenarnya ke kolom terpisah, tetapi tindakan ini akan meningkatkan jumlah data yang disimpan.
Anda dapat secara tidak sengaja menulis stempel waktu kustom yang bentrok dengan stempel waktu sebenarnya di kolom tertentu.
Karena pembersihan sampah memori bersifat asinkron, Anda tetap harus selalu menggunakan filter saat membaca data saat menggunakan strategi ini.
Langkah selanjutnya
- Baca tentang pembersihan sampah memori dengan stempel waktu yang merupakan angka berurutan.
- Pelajari strategi untuk selalu membaca nilai kolom terbaru.
- Tinjau contoh kode yang menunjukkan cara mengonfigurasi pembersihan sampah memori.
- Pelajari lebih lanjut harga penyimpanan.