Ringkasan pembersihan sampah memori

Pembersihan sampah memori di Bigtable memungkinkan Anda menghapus data yang sudah tidak berlaku dan tidak digunakan lagi secara otomatis dari tabel. Mengonfigurasi kebijakan ini akan membantu Anda mengelola biaya penyimpanan dan mempertahankan performa baca.

Pembersihan sampah memori adalah proses otomatis dan berkelanjutan untuk menghapus data yang sudah tidak berlaku dan tidak digunakan lagi dari tabel Bigtable. Kebijakan pembersihan sampah memori adalah kumpulan aturan yang Anda buat yang menyatakan kapan data dalam grup kolom tertentu tidak lagi diperlukan.

Pembersihan sampah memori adalah proses latar belakang asinkron bawaan yang terjadi selama pemadatan. Pembersihan sampah memori terjadi pada jadwal tetap yang tidak bervariasi berdasarkan jumlah data yang perlu dihapus. Sebelum data dihapus, data tersebut akan muncul dalam hasil pembacaan. Anda dapat memfilter pembacaan untuk mengecualikan data ini.

Untuk mengetahui informasi selengkapnya, lihat bagian Kapan data dihapus dalam dokumen ini.

Manfaat kebijakan pembersihan sampah memori meliputi hal berikut:

  • Meminimalkan ukuran baris - Anda harus selalu mencegah baris bertambah tanpa batas. Baris yang besar berdampak negatif pada performa. Idealnya, Anda tidak boleh membiarkan baris bertambah melebihi ukuran 100 MB, dan batasnya adalah 256 MB. Jika Anda tidak perlu menyimpan data historis, atau versi data saat ini yang lebih lama, penggunaan pembersihan sampah memori dapat membantu Anda meminimalkan ukuran setiap baris.
  • Menekan biaya - Pembersihan sampah memori memastikan Anda tidak membayar untuk menyimpan data yang tidak lagi diperlukan atau digunakan. Anda akan dikenai biaya untuk penyimpanan data yang sudah tidak berlaku atau usang hingga pemadatan 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 memori secara terprogram atau dengan cbt CLI . Kebijakan pembersihan sampah memori ditetapkan di tingkat grup kolom.

Setiap grup kolom dalam tabel memiliki kebijakan pembersihan sampah memori sendiri. Proses pembersihan sampah memori mencari kebijakan pembersihan sampah memori 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 yang diberi 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, akan ditolak. Dalam contoh ini, nilai stempel waktu yang dapat diterima adalah 3023483279876000.

Properti stempel waktu sel dapat berupa stempel waktu "nyata", 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 saat sel ditulis. Sebelum 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 memori yang tersedia di Bigtable. Contoh kode untuk setiap jenis pembersihan sampah memori ada di Mengonfigurasi pembersihan sampah memori.

Nilai yang akan habis masa berlakunya (berdasarkan 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 memori ini, Anda menetapkan time to live (TTL) untuk data. Bigtable melihat setiap grup kolom selama pembersihan sampah memori dan menghapus sel yang telah habis masa berlakunya.

Jumlah versi

Anda dapat menetapkan aturan pembersihan sampah memori yang secara eksplisit menyatakan jumlah maksimum sel yang akan disimpan untuk semua kolom dalam grup kolom.

Misalnya, jika Anda hanya ingin menyimpan nama pengguna dan alamat email terbaru untuk pelanggan, Anda dapat membuat grup kolom yang berisi kedua kolom tersebut dan menetapkan jumlah nilai maksimum ke 1 untuk grup kolom tersebut.

Dalam kasus lain, Anda mungkin ingin menyimpan lima versi terakhir hash sandi pengguna untuk memastikan mereka tidak menggunakan kembali sandi tersebut, sehingga Anda akan menetapkan jumlah versi maksimum untuk grup 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 terlama akan dihapus untuk mempertahankan jumlah sel menjadi lima.

Kombinasi aturan masa berlaku dan nomor versi

Anda dapat menggunakan kombinasi aturan masa berlaku dan nomor versi untuk pembersihan sampah memori. Jenis kombinasinya adalah intersection, union, dan nested. Untuk contoh konfigurasi, lihat Pembersihan sampah memori berdasarkan beberapa kriteria.

Persimpangan

Kebijakan pembersihan sampah memori berdasarkan aturan menandai data untuk dihapus jika data tersebut memenuhi semua kriteria dalam kumpulan aturan tertentu. Misalnya, Anda mungkin ingin menghapus profil yang berusia lebih dari 30 hari, tetapi selalu menyimpan setidaknya satu profil untuk setiap pengguna. Dalam hal ini, kebijakan persimpangan Anda 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 memori union menandai data untuk dihapus jika memenuhi setiap item dalam kumpulan aturan tertentu. Misalnya, Anda mungkin ingin memastikan bahwa Anda mempertahankan maksimum dua data kunjungan halaman per pengguna, tetapi hanya jika data tersebut berusia kurang dari 30 hari. Dalam hal ini, kebijakan gabungan Anda ditetapkan untuk nilai yang akan habis masa berlakunya atau sejumlah versi.

Bertingkat

Kebijakan pembersihan sampah memori bertingkat memiliki kombinasi aturan gabungan dan irisan.

Setelan default untuk pembersihan sampah memori

Tidak ada TTL default untuk grup kolom. Jumlah sel yang dipertahankan untuk kolom bergantung pada cara Anda membuat grup kolom tempat kolom tersebut berada, seperti yang dijelaskan di bagian berikut.

Kebijakan HBase

Jika Anda membuat grup 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 grup kolom, kecuali jika Anda mengubah aturan. Setelan default ini konsisten dengan HBase.

Semua library klien atau alat lainnya

Jika Anda membuat grup kolom dengan library klien atau alat lainnya, Bigtable akan mempertahankan jumlah sel yang tak terbatas di setiap kolom dalam grup kolom. Ini termasuk grup kolom yang dibuat dengan gcloud dan cbt CLI . Anda harus mengubah kebijakan pembersihan sampah memori untuk grup kolom jika ingin membatasi jumlah versi.

Saat data dihapus

Pembersihan sampah memori adalah proses berkelanjutan saat Bigtable memeriksa aturan untuk setiap grup kolom dan menghapus data yang sudah tidak berlaku dan usang sesuai dengan aturan tersebut. Secara umum, diperlukan waktu hingga satu minggu sejak data cocok dengan kriteria dalam aturan agar data tersebut benar-benar dihapus. Anda tidak dapat mengubah waktu pembersihan sampah memori.

Karena penghapusan data yang sudah tidak berlaku dapat memerlukan waktu hingga satu minggu, Anda tidak boleh hanya mengandalkan kebijakan pembersihan sampah memori untuk memastikan bahwa permintaan baca menampilkan data yang dipilih. Selalu terapkan filter ke permintaan baca yang mengecualikan nilai yang sama dengan aturan pembersihan sampah memori Anda. Anda dapat memfilter dengan membatasi jumlah sel per kolom atau dengan menentukan rentang stempel waktu.

Misalnya, asumsikan bahwa aturan pembersihan sampah memori grup kolom ditetapkan untuk hanya menyimpan lima versi terbaru profil, dan lima versi sudah 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. Meskipun Bigtable menyimpan data yang sudah tidak berlaku dan penghapusan dalam bentuk terkompresi, penggunaan penyimpanan dan tagihan Anda tidak akan berkurang hingga pemadatan menulis ulang file penyimpanan secara permanen dan menghapus data yang sudah tidak berlaku.

Pembersihan sampah memori bersifat retroaktif: saat kebijakan pembersihan sampah memori 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 memori sedang dihapus, Anda dapat mengkueri 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 ingat bahwa pembersihan sampah memori dijalankan dengan penundaan.

Replikasi dan pembersihan sampah memori

Replikasi dapat memengaruhi pembersihan sampah memori dalam beberapa cara.

Pembersihan sampah memori dan penggunaan CPU berbasis versi

Dalam instance yang menggunakan replikasi, penghapusan dari pembersihan sampah memori berbasis versi direplikasi ke semua cluster dalam instance dengan cara yang sama seperti permintaan aplikasi direplikasi. Jika Anda menulis sel baru dengan cepat yang menyebabkan sel lama ditandai untuk dihapus, Anda mungkin melihat peningkatan penggunaan CPU saat Bigtable menghapus sel yang 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 memori berbasis versi.

Di sisi lain, pembersihan sampah memori berbasis usia tidak meningkatkan penggunaan CPU dalam instance yang direplikasi.

Mengubah kebijakan pembersihan sampah memori berbasis versi

Anda dapat mengubah jumlah maksimum versi grup kolom dalam tabel yang direplikasi. 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 menambah atau mengurangi waktu retensi yang ditentukan dalam kebijakan pembersihan sampah memori, terlepas dari apakah instance menggunakan replikasi atau tidak. Jika instance tidak menggunakan replikasi, Anda juga dapat menghapus kebijakan pembersihan sampah memori berbasis usia.

Mengurangi waktu retensi

Jika Anda mengurangi waktu retensi dalam kebijakan berbasis usia, mungkin perlu waktu hingga seminggu agar semua cluster disinkronkan dan menggunakan kebijakan baru.

Meningkatkan waktu retensi

Dalam tabel yang direplikasi, Anda dapat meningkatkan waktu retensi kebijakan pembersihan sampah memori maksimum 90 hari.

Jika Anda meningkatkan periode retensi untuk grup kolom, perlu diketahui 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 grup kolom dari 30 hari menjadi 50 hari:

  1. Permintaan tulis untuk row key ip#685 dikirim ke cluster A dengan nilai 2023-01-02 untuk kolom click-through di grup kolom profile. Data direplikasi ke cluster B.
  2. Tiga puluh satu hari kemudian, pembersihan sampah memori terjadi di cluster A, dan nilai di kolom click-through dikenali sebagai sudah tidak berlaku dan dihapus.
  3. Anda mengubah kebijakan pembersihan sampah memori untuk grup kolom profile, dengan meningkatkan TTL dari 30 hari menjadi 50 hari.
  4. Sehari kemudian, pembersihan sampah memori berjalan di cluster B. Karena TTL-nya adalah 50 hari, nilai 2023-01-02 akan dipertahankan.
  5. Cluster kini tidak sinkron dan tetap demikian selama hampir 20 hari hingga nilai yang ada di cluster B, tetapi tidak ada di cluster A, akhirnya dihapus.

Langkah berikutnya