Ringkasan pembersihan sampah memori

Halaman ini menjelaskan cara kerja pembersihan sampah memori di Bigtable dan membahas topik berikut:

  • Jenis pembersihan sampah memori
  • Setelan pembersihan sampah memori default
  • Kapan data dihapus
  • Perubahan pada kebijakan pembersihan sampah memori untuk tabel yang direplikasi

Ringkasan pembersihan sampah memori

Pengumpulan sampah adalah proses otomatis dan berkelanjutan untuk menghapus data yang sudah habis masa berlakunya dan tidak digunakan lagi dari tabel Bigtable. Kebijakan pembersihan sampah memori adalah kumpulan aturan yang Anda buat yang berstatus saat data dalam kelompok kolom tertentu tidak lagi diperlukan.

Pembersihan sampah memori adalah proses latar belakang asinkron bawaan. Perlu waktu hingga satu minggu sebelum data yang memenuhi syarat untuk pembersihan sampah memori benar-benar dihapus. Pembersihan sampah memori dilakukan pada jadwal tetap yang tidak bervariasi berdasarkan jumlah data yang perlu dihapus. Hingga dihapus, data akan muncul dalam hasil baca. Anda dapat memfilter pembacaan untuk mengecualikan data ini.

Manfaat kebijakan pembersihan sampah memori mencakup hal berikut:

  • Minimalkan ukuran baris - Anda selalu ingin mencegah baris bertambah tanpa batas. Baris besar berdampak negatif pada performa. Idealnya, Anda tidak boleh membiarkan baris berukuran melebihi 100 MB, dan batasnya adalah 256 MB. Jika Anda tidak perlu menyimpan data lama, atau versi lama dari data saat ini, penggunaan pembersihan sampah memori dapat membantu Anda meminimalkan ukuran setiap baris.
  • Menghemat biaya - Pembersihan sampah memori memastikan Anda tidak perlu membayar untuk menyimpan data yang tidak lagi diperlukan atau digunakan. Anda dikenai biaya untuk penyimpanan data yang sudah tidak berlaku atau yang sudah tidak berlaku hingga pemadatan terjadi dan data yang memenuhi syarat untuk pembersihan sampah memori dihapus. Proses ini biasanya membutuhkan waktu beberapa hari, tetapi mungkin juga hingga satu minggu.

Anda dapat menetapkan kebijakan pembersihan sampah memori secara terprogram atau dengan cbt CLI . Kebijakan pembersihan sampah memori ditetapkan pada tingkat kelompok kolom.

Setiap grup kolom dalam tabel memiliki kebijakan pembersihan sampah memori masing-masing. Proses pembersihan sampah memori mencari kebijakan pembersihan sampah memori saat ini untuk setiap kelompok kolom, lalu menghapus data sesuai dengan aturan dalam kebijakan.

Stempel waktu

Di Bigtable, perpotongan 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 "nyata", yang menunjukkan waktu sebenarnya saat nilai untuk sel ditulis, atau dapat berupa stempel waktu "buatan". Stempel waktu buatan mencakup angka urut, nol, atau nilai berformat stempel waktu yang bukan merupakan waktu aktual penulisan sel. 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 tersedia di artikel Mengonfigurasi pembersihan sampah memori.

Nilai yang akan berakhir (berdasarkan usia)

Anda dapat menetapkan aturan pembersihan sampah memori berdasarkan stempel waktu untuk setiap sel. Misalnya, Anda mungkin tidak ingin menyimpan sel dengan stempel waktu lebih dari 30 hari sebelum tanggal dan waktu saat ini. Dengan jenis aturan pembersihan sampah memori ini, Anda dapat menetapkan time to live (TTL) untuk data. Bigtable melihat setiap kelompok kolom selama pembersihan sampah memori dan menghapus sel apa pun yang telah kedaluwarsa.

Jumlah versi

Anda dapat menetapkan aturan pembersihan sampah memori yang secara eksplisit menyatakan jumlah maksimum sel yang harus dipertahankan 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 dua 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 bahwa sandi tersebut tidak digunakan kembali. Jadi, Anda harus menetapkan jumlah maksimum versi 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 persimpangan, gabungan, dan bertingkat. Untuk contoh konfigurasi, lihat Pengumpulan sampah berdasarkan beberapa kriteria.

Irisan

Kebijakan pembersihan sampah memori intersection menandai data untuk dihapus jika memenuhi semua kriteria dalam serangkaian 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 untuk grup kolom yang berisi kolom profil akan terdiri dari aturan untuk nilai yang akan berakhir dan aturan untuk jumlah versi.

Union

Kebijakan pembersihan sampah memori union menandai data untuk dihapus jika memenuhi item apa pun dalam serangkaian aturan tertentu. Misalnya, Anda mungkin ingin memastikan bahwa Anda menyimpan maksimal dua data penayangan halaman per pengguna, tetapi hanya jika data tersebut berusia kurang dari 30 hari. Dalam hal ini, kebijakan union Anda akan disetel untuk nilai yang akan habis masa berlakunya atau sejumlah versi.

Bertingkat

Kebijakan pembersihan sampah memori tumpang-tindih memiliki kombinasi aturan union dan intersection.

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 akan menyimpan sel terbaru di setiap kolom dalam kelompok kolom, kecuali jika Anda mengubah aturan. Setelan default ini konsisten dengan HBase.

Semua alat atau library klien lainnya

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

Kapan data dihapus

Pembersihan sampah memori adalah proses berkelanjutan di mana Bigtable memeriksa aturan untuk setiap jenis kolom serta menghapus data yang telah habis masa berlakunya dan tidak berlaku lagi. Secara umum, penghapusan data memerlukan waktu hingga satu minggu sejak data cocok dengan kriteria dalam aturan. Anda tidak dapat mengubah waktu pembersihan sampah memori.

Karena perlu waktu hingga satu minggu untuk menghapus data yang habis masa berlakunya, Anda tidak boleh hanya mengandalkan kebijakan pembersihan sampah memori untuk memastikan bahwa permintaan baca menampilkan data yang diinginkan. Selalu terapkan filter untuk 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, aturan pembersihan sampah memori grup kolom ditetapkan untuk hanya menyimpan lima versi terbaru dari sebuah profil, dan lima versi sudah disimpan. Setelah versi profil baru ditulis, mungkin perlu waktu hingga satu minggu untuk menghapus sel terlama. Oleh karena itu, agar tidak membaca nilai keenam, Anda harus selalu memfilter semuanya, kecuali lima versi terbaru.

Anda akan dikenai biaya untuk penyimpanan data yang habis masa berlakunya hingga pemadatan terjadi dan data dihapus.

Pembersihan sampah memori bersifat retroaktif: jika kebijakan pembersihan sampah memori baru ditetapkan, selama beberapa hari ke depan kebijakan tersebut akan diterapkan ke semua data dalam tabel. Jika kebijakan baru lebih ketat dari kebijakan sebelumnya, data lama akan dihapus saat pekerjaan latar belakang terjadi, termasuk data yang ditulis sebelum perubahan kebijakan.

Jika ingin memastikan data yang ditandai untuk pembersihan sampah memori dihapus, Anda dapat membuat kueri tabel dan membandingkan data dengan hasil yang diharapkan. Anda juga dapat memantau ukuran tabel di Google Cloud Console. 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 jika ada penundaan.

Replikasi dan pembersihan sampah memori

Replikasi dapat memengaruhi pembersihan sampah memori dalam beberapa cara.

Pengumpulan sampah 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 dengan cepat menulis sel baru yang menyebabkan sel lama ditandai untuk dihapus, Anda mungkin melihat peningkatan pemakaian 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 berdasarkan usia tidak meningkatkan penggunaan CPU dalam instance yang direplikasi.

Mengubah kebijakan pembersihan sampah memori berbasis versi

Anda dapat mengubah jumlah versi maksimum grup kolom dalam tabel yang direplikasi. Namun, jika Anda menurunkan jumlah versi grup kolom, perlu waktu hingga satu minggu agar semua cluster yang direplikasi dapat 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. Anda juga dapat menghapus kebijakan pembersihan sampah memori berdasarkan usia.

Mengurangi waktu retensi

Jika Anda mengurangi waktu retensi dalam kebijakan berbasis usia, diperlukan waktu hingga satu minggu untuk menyinkronkan semua cluster 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 grup kolom, perhatikan bahwa cluster Anda mungkin tidak sinkron selama lebih dari seminggu. Untuk mengetahui alasannya, pertimbangkan kasus hipotesis ketika Anda memiliki tabel dalam instance dua cluster dan Anda mengubah periode retensi grup kolom dari 30 hari menjadi 50 hari:

  1. Permintaan tulis untuk kunci baris ip#685 dikirim ke cluster A dengan nilai 2023-01-02 untuk kolom click-through dalam grup kolom profile. Data tersebut direplikasi ke cluster B.
  2. Tiga puluh satu hari kemudian, pembersihan sampah memori dilakukan 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, sehingga 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 tersebut sekarang tidak sinkron dan tetap tidak sinkron selama hampir 20 hari hingga nilai yang ada di cluster B tetapi tidak ada di cluster A akhirnya dihapus.

Langkah selanjutnya