Menyimulasikan TTL tingkat sel
Di Bigtable, kebijakan pembersihan sampah ditetapkan di level grup kolom, dan Anda tidak dapat menentukan kebijakan pembersihan sampah level sel. Namun, Anda dapat menyimulasikan kebijakan time to live (TTL) di tingkat sel dengan mengubah setelan pembersihan sampah. Halaman ini menjelaskan beberapa pendekatan yang dapat Anda gunakan.
Sebelum membaca halaman ini, Anda harus membaca ringkasan pembersihan sampah. Untuk mempelajari cara mengirim permintaan tulis, yang menyertakan stempel waktu, lihat Penulisan Bigtable.
Masa berlaku satu detik
Dalam pendekatan ini, tetapkan aturan pembersihan sampah agar masa berlaku data berakhir setelah satu detik. Setiap kali Anda menulis data, tetapkan stempel waktu sel ke waktu yang Anda inginkan untuk berakhirnya masa berlaku nilai. Selama pemadatan, Bigtable akan menghapus sel apa pun 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 beberapa saat setelah 30 April pukul 09.00.01. Pendekatan ini memungkinkan Anda menetapkan nilai habis masa berlaku yang berbeda untuk sel yang berbeda dalam grup kolom yang sama.
Keuntungan masa berlaku satu detik
- Stempel waktu memiliki arti sebenarnya: waktu habis masa berlaku.
Kekurangan masa berlaku satu detik
Setiap aplikasi yang menulis data ke keluarga kolom Bigtable ini harus dikonfigurasi untuk mengikuti aturan ini. Jika Anda lupa dan menggunakan stempel waktu server default pada operasi tulis, data tersebut akan segera berakhir masa berlakunya dan dihapus selama pemadatan berikutnya.
Karena stempel waktu Anda tidak "nyata", Anda tidak dapat menggunakan stempel waktu untuk kasus penggunaan lain, seperti menentukan kapan nilai ditulis. Sebagai solusinya, Anda dapat menulis stempel waktu sebenarnya ke kolom terpisah, tetapi hal ini akan meningkatkan jumlah data yang Anda simpan.
Anda tidak dapat menerapkan strategi ini pada keluarga kolom yang sudah memiliki data dengan stempel waktu yang sebenarnya. Jika data yang ada memiliki stempel waktu yang sebenarnya, atau jika Anda tidak sengaja menulis data baru dengan stempel waktu yang sebenarnya, data tersebut akan dihapus selama pemadatan berikutnya.
Anda tidak dapat menentukan bahwa beberapa sel untuk baris dan kolom tertentu harus berakhir masa berlakunya secara bersamaan. Data baru akan menimpa data lama dengan stempel waktu yang sama.
Karena pembersihan sampah dapat memerlukan waktu hingga seminggu, Anda harus selalu menggunakan filter saat membaca data.
Masa berlaku default
Misalnya, Anda ingin sebagian besar data memiliki TTL default, tetapi Anda ingin menetapkan nilai masa berlaku per sel yang berbeda untuk beberapa data.
Misalnya, Anda dapat menyimpan peristiwa klik untuk sepuluh pelanggan dalam satu tabel. Sebagian besar peristiwa klik akan berakhir masa berlakunya setelah 2 hari, tetapi Anda memiliki satu pelanggan yang peristiwa kliknya akan berakhir masa berlakunya setelah satu jam, dan Anda memiliki pelanggan lain yang peristiwa kliknya akan berakhir masa berlakunya setelah 3 hari.
Dalam pendekatan ini, buat keluarga kolom dengan batas usia untuk pengumpulan sampah yang ditetapkan ke TTL default. Untuk data yang masa berlakunya ingin Anda percepat dari default, tetapkan stempel waktu lebih awal dari waktu data sebenarnya ditulis. Untuk data yang masa berlakunya ingin Anda hentikan nanti, tetapkan stempel waktu agar lebih lama dari waktu data benar-benar ditulis.
Keunggulan masa berlaku default
TTL default diterapkan untuk operasi tulis yang tidak memiliki TTL kustom.
Pendekatan ini dapat diterapkan dengan aman ke 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 sebenarnya ke kolom terpisah, tetapi hal ini akan meningkatkan jumlah data yang Anda simpan.
Anda dapat secara tidak sengaja menulis stempel waktu kustom yang bertentangan dengan stempel waktu sebenarnya di kolom tertentu.
Karena pembersihan sampah 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 terbaru kolom.
- Tinjau contoh kode yang menunjukkan cara mengonfigurasi pembersihan sampah.
- Pelajari lebih lanjut harga penyimpanan.