Ringkasan pembersihan sampah memori
Halaman ini menjelaskan cara kerja pembersihan sampah di Bigtable dan membahas topik berikut:
- Jenis pembersihan sampah memori
- Setelan pembersihan sampah memori default
- Saat data dihapus
- Perubahan pada kebijakan pembersihan sampah memori untuk tabel yang direplikasi
Ringkasan pembersihan sampah memori
Pembersihan sampah memori adalah proses otomatis yang berkelanjutan untuk menghapus data yang telah habis masa berlakunya dan tidak digunakan lagi dari tabel Bigtable. Kebijakan pembersihan sampah adalah serangkaian aturan yang Anda buat yang menyatakan kapan data dalam grup kolom tertentu tidak diperlukan lagi.
Pengumpulan sampah adalah proses latar belakang asinkron bawaan. Perlu waktu hingga seminggu sebelum data yang memenuhi syarat untuk pembersihan sampah benar-benar dihapus. Pengumpulan sampah terjadi pada jadwal tetap yang tidak bervariasi berdasarkan jumlah data yang perlu dihapus. Data akan muncul di hasil baca hingga dihapus. Anda dapat memfilter pembacaan untuk mengecualikan data ini.
Manfaat kebijakan pembersihan sampah meliputi hal berikut:
- Minimalkan ukuran baris - Anda selalu ingin mencegah baris bertambah tanpa batas. Baris yang besar berdampak negatif pada performa. Idealnya, Anda tidak boleh membiarkan baris tumbuh melebihi ukuran 100 MB, dan batasnya adalah 256 MB. Jika Anda tidak perlu menyimpan data lama, atau versi lama data saat ini, menggunakan pembersihan sampah dapat membantu Anda meminimalkan ukuran setiap baris.
- Mempertahankan biaya tetap rendah - Pembersihan sampah memori memastikan Anda tidak membayar untuk menyimpan data yang tidak lagi diperlukan atau digunakan. Anda akan ditagih untuk penyimpanan data yang telah habis masa berlakunya atau tidak digunakan lagi hingga pengompresian terjadi dan data yang memenuhi syarat untuk pembersihan sampah memori dihapus. Proses ini biasanya memerlukan waktu beberapa hari, tetapi mungkin memerlukan waktu hingga satu minggu.
Anda dapat menetapkan kebijakan pembersihan sampah secara terprogram atau dengan
cbt
CLI
. Kebijakan pembersihan sampah ditetapkan di tingkat
keluarga kolom.
Setiap keluarga kolom dalam tabel memiliki kebijakan pembersihan sampahnya sendiri. Proses pembersihan sampah mencari kebijakan pembersihan sampah saat ini untuk setiap grup kolom, lalu menghapus data sesuai dengan aturan dalam kebijakan.
Stempel waktu
Di Bigtable, persimpangan baris dan kolom dapat memiliki beberapa sel, yang berisi versi nilai dengan stempel waktu untuk persimpangan tersebut.
Setiap sel memiliki stempel waktu. Stempel waktu adalah jumlah mikrodetik sejak
epoch Unix, 1970-01-01 00:00:00 UTC
. Anda dapat
menggunakan stempel waktu default atau menetapkannya saat mengirim permintaan tulis.
Stempel waktu yang Anda kirim ke Bigtable harus berupa nilai mikrodetik dengan presisi maksimal
milidetik. Stempel waktu dengan presisi mikrodetik, seperti
3023483279876543
, ditolak. Dalam contoh ini, nilai stempel waktu yang dapat diterima adalah
3023483279876000
.
Properti stempel waktu sel dapat berupa stempel waktu "sebenarnya", yang mencerminkan waktu sebenarnya nilai untuk sel ditulis, atau dapat berupa stempel waktu "buatan". Stempel waktu buatan mencakup angka berurutan, nol, atau nilai berformat stempel waktu yang bukan waktu sebenarnya sel ditulis. Sebelum Anda menggunakan stempel waktu buatan, tinjau kasus penggunaan untuk stempel waktu buatan, termasuk risiko penggunaannya:
Pastikan Anda menetapkan stempel waktu default saat mengirim permintaan tulis, kecuali jika Anda perlu mendukung kasus penggunaan dengan stempel waktu buatan.
Jenis pembersihan sampah memori
Bagian ini menjelaskan jenis pembersihan sampah yang tersedia di Bigtable. Contoh kode untuk setiap jenis pembersihan sampah memori ada di Mengonfigurasi pembersihan sampah memori.
Nilai yang akan berakhir masa berlakunya (berbasis usia)
Anda dapat menetapkan aturan pembersihan sampah memori berdasarkan stempel waktu untuk setiap sel. Misalnya, Anda mungkin tidak ingin menyimpan sel apa pun dengan stempel waktu lebih dari 30 hari sebelum tanggal dan waktu saat ini. Dengan jenis aturan pembersihan sampah ini, Anda dapat menetapkan time to live (TTL) untuk data. Bigtable melihat setiap keluarga kolom selama pembersihan sampah memori dan menghapus sel yang telah habis masa berlakunya.
Jumlah versi
Anda dapat menetapkan aturan pembersihan sampah yang secara eksplisit menyatakan jumlah maksimum sel yang akan disimpan untuk semua kolom dalam keluarga kolom.
Misalnya, jika Anda hanya ingin menyimpan nama pengguna dan alamat email terbaru untuk
pelanggan, Anda dapat membuat kelompok kolom yang berisi dua kolom tersebut dan menetapkan
jumlah maksimum nilai ke 1
untuk kelompok kolom tersebut.
Dalam kasus lain, Anda mungkin ingin menyimpan lima versi terakhir dari hash sandi pengguna
untuk memastikan mereka tidak menggunakan kembali sandi, sehingga Anda akan menetapkan
jumlah maksimum versi untuk keluarga kolom yang berisi kolom sandi
ke 5
. Saat Bigtable melihat grup kolom selama pembersihan sampah memori, jika sel keenam telah ditulis ke kolom sandi, sel paling lama akan dihapus agar jumlah sel tetap lima.
Kombinasi aturan tanggal habis masa berlaku dan nomor versi
Anda dapat menggunakan kombinasi aturan masa berlaku dan nomor versi untuk pengumpulan sampah. Jenis kombinasi adalah interseksi, union, dan bertingkat. Untuk contoh konfigurasi, lihat Pembersihan sampah memori berdasarkan beberapa kriteria.
Persimpangan
Kebijakan pembersihan sampah persimpangan menandai data untuk dihapus jika memenuhi semua kriteria dalam kumpulan aturan tertentu. Misalnya, Anda mungkin ingin menghapus profil yang lebih lama dari 30 hari, tetapi selalu menyimpan setidaknya satu profil untuk setiap pengguna. Dalam hal ini, kebijakan persimpangan untuk grup kolom yang berisi kolom profil akan terdiri dari aturan untuk nilai yang habis masa berlakunya dan aturan untuk jumlah versi.
Union
Kebijakan pembersihan sampah union menandai data untuk dihapus jika memenuhi item apa pun dalam kumpulan aturan tertentu. Misalnya, Anda mungkin ingin memastikan bahwa Anda mempertahankan maksimal dua data kunjungan halaman per pengguna, tetapi hanya jika data tersebut berumur kurang dari 30 hari. Dalam hal ini, kebijakan gabungan Anda ditetapkan untuk nilai yang akan berakhir masa berlakunya atau sejumlah versi.
Bertingkat
Kebijakan pembersihan sampah bertingkat memiliki kombinasi aturan gabungan dan tumpang-tindih.
Setelan default untuk pembersihan sampah
Tidak ada TTL default untuk grup kolom. Jumlah sel yang dipertahankan untuk kolom bergantung pada cara Anda membuat grup kolom tempat kolom berada, seperti yang dijelaskan di bagian berikut.
Kebijakan HBase
Jika Anda membuat keluarga kolom dengan klien HBase untuk Java, shell HBase, atau alat lain yang menggunakan klien HBase untuk Java, Bigtable hanya mempertahankan sel terbaru di setiap kolom dalam keluarga kolom, kecuali jika Anda mengubah aturan. Setelan default ini konsisten dengan HBase.
Semua library atau alat klien lainnya
Jika Anda membuat grup kolom dengan library atau alat klien lainnya, Bigtable akan mempertahankan sel dalam jumlah tak terbatas di setiap kolom dalam grup kolom. Ini mencakup grup kolom yang dibuat dengan gcloud
dan
CLI cbt
. Anda harus mengubah kebijakan pembersihan sampah memori untuk grup kolom jika ingin membatasi jumlah versi.
Saat data dihapus
Pembersihan sampah memori adalah proses berkelanjutan yang dilakukan Bigtable untuk memeriksa aturan untuk setiap grup kolom dan menghapus data yang sudah tidak berlaku dan tidak lagi digunakan. Secara umum, diperlukan waktu hingga satu minggu sejak data cocok dengan kriteria dalam aturan agar data benar-benar dihapus. Anda tidak dapat mengubah waktu pembersihan sampah.
Karena perlu waktu hingga satu minggu untuk menghapus data yang sudah tidak berlaku, Anda tidak boleh hanya mengandalkan kebijakan pembersihan sampah untuk memastikan permintaan baca menampilkan data yang diinginkan. Selalu terapkan filter ke permintaan baca yang mengecualikan nilai yang sama dengan aturan pembersihan sampah Anda. Anda dapat memfilter dengan membatasi jumlah sel per kolom atau dengan menentukan rentang stempel waktu.
Misalnya, aturan pembersihan sampah keluarga kolom ditetapkan untuk hanya menyimpan lima versi terbaru profil, dan lima versi tersebut telah disimpan. Setelah versi baru profil ditulis, mungkin perlu waktu hingga satu minggu agar sel terlama dihapus. Oleh karena itu, untuk menghindari pembacaan nilai keenam, Anda harus selalu memfilter semuanya kecuali lima versi terbaru.
Anda akan dikenai biaya untuk penyimpanan data yang sudah tidak berlaku hingga pemadatan terjadi dan data dihapus.
Pengumpulan sampah bersifat retroaktif: saat kebijakan pengumpulan sampah baru ditetapkan, kebijakan tersebut akan diterapkan ke semua data dalam tabel selama beberapa hari ke depan. Jika kebijakan baru lebih ketat daripada kebijakan sebelumnya, data lama akan dihapus saat pekerjaan latar belakang terjadi, termasuk data yang ditulis sebelum perubahan kebijakan.
Jika ingin memastikan bahwa data yang ditandai untuk pembersihan sampah sedang dihapus, Anda dapat membuat kueri tabel dan membandingkan data dengan hasil yang diharapkan. Anda juga dapat memantau ukuran tabel di konsol Google Cloud. Tabel yang tidak pernah mengecil mungkin mencerminkan kebijakan pembersihan sampah memori yang tidak berfungsi seperti yang diharapkan, tetapi perlu diingat bahwa pembersihan sampah memori dijalankan dengan penundaan.
Replikasi dan pembersihan sampah memori
Replikasi dapat memengaruhi pengumpulan sampah dengan beberapa cara.
Pembersihan sampah memori dan penggunaan CPU berbasis versi
Dalam instance yang menggunakan replikasi, penghapusan dari pengumpulan sampah berbasis versi direplikasi ke semua cluster dalam instance dengan cara yang sama seperti permintaan aplikasi direplikasi. Jika Anda menulis dengan cepat sel baru yang menyebabkan sel lama ditandai untuk dihapus, Anda mungkin melihat peningkatan penggunaan CPU saat Bigtable menghapus sel yang sudah tidak berlaku dan mereplikasi penghapusan tersebut ke cluster lain dalam instance. Bersiaplah untuk peningkatan penggunaan CPU ini jika Anda menambahkan cluster ke instance yang berisi tabel yang menggunakan pembersihan sampah berbasis versi.
Di sisi lain, pengumpulan sampah berbasis usia tidak meningkatkan penggunaan CPU dalam instance yang direplikasi.
Mengubah kebijakan pembersihan sampah memori berbasis versi
Anda dapat mengubah jumlah maksimum versi keluarga kolom dalam tabel replika. Namun, jika Anda menurunkan jumlah versi untuk grup kolom, mungkin perlu waktu hingga satu minggu agar semua cluster yang direplikasi mencerminkan jumlah baru yang lebih rendah. Oleh karena itu, Anda harus selalu menggunakan filter saat membaca data.
Mengubah kebijakan pembersihan sampah memori berbasis usia
Anda dapat meningkatkan atau menurunkan waktu retensi yang ditentukan dalam kebijakan pembersihan sampah, terlepas dari apakah instance menggunakan replikasi atau tidak. Anda juga dapat menghapus kebijakan pembersihan sampah berbasis usia.
Mengurangi waktu retensi
Jika Anda mengurangi waktu retensi dalam kebijakan berbasis usia, perlu waktu hingga seminggu agar semua cluster menyinkronkan dan menggunakan kebijakan baru.
Meningkatkan waktu retensi
Dalam tabel yang direplikasi, Anda dapat meningkatkan waktu retensi kebijakan pembersihan sampah memori hingga maksimum 90 hari.
Jika Anda meningkatkan periode retensi untuk keluarga kolom, perhatikan bahwa cluster Anda mungkin tidak sinkron selama lebih dari seminggu. Untuk mengetahui alasannya, pertimbangkan kasus hipotetis saat Anda memiliki tabel dalam instance dua cluster dan Anda mengubah periode retensi keluarga kolom dari 30 hari menjadi 50 hari:
- Permintaan tulis untuk kunci baris
ip#685
dikirim ke cluster A dengan nilai2023-01-02
untuk kolomclick-through
dalam grup kolomprofile
. Data tersebut direplikasi ke cluster B. - Tiga puluh satu hari kemudian, pembersihan sampah terjadi di cluster A, dan nilai
di kolom
click-through
dikenali sebagai habis masa berlakunya dan dihapus. - Anda mengubah kebijakan pembersihan sampah memori untuk grup kolom
profile
, sehingga meningkatkan TTL dari 30 hari menjadi 50 hari. - Sehari kemudian, pembersihan sampah berjalan di cluster B. Karena TTL-nya adalah 50 hari, nilai
2023-01-02
akan dipertahankan. - Cluster kini tidak sinkron dan tetap demikian selama hampir 20 hari hingga nilai yang ada di cluster B, tetapi tidak di cluster A, akhirnya dihapus.
Langkah selanjutnya
- Pelajari strategi untuk menyimulasikan TTL tingkat sel.
- Baca tentang pengaruh stempel waktu yang merupakan angka berurutan terhadap pembersihan sampah memori.
- Pelajari lebih lanjut harga penyimpanan.
- Lihat contoh kode pembersihan sampah dalam bahasa pemrograman pilihan Anda.