Filter Bloom adalah struktur data probabilistik yang hemat ruang yang dapat Anda gunakan untuk menguji apakah suatu elemen adalah anggota dari suatu set. Dengan jenis struktur ini, Anda dapat memperoleh positif palsu. Misalnya, filter dapat menunjukkan bahwa elemen ada dalam set, meskipun tidak ada. Namun, Anda tidak boleh memiliki negatif palsu. Jadi, jika Anda menambahkan elemen ke set, filter harus menunjukkan bahwa elemen tersebut ada dalam set.
Filter mencapai hal ini dengan menggunakan beberapa fungsi hash untuk memetakan elemen ke beberapa bit dalam array bit berukuran tetap. Untuk mengontrol probabilitas positif palsu, Anda dapat menyesuaikan jumlah bit dalam array dan jumlah fungsi hash yang digunakan.
Kasus penggunaan
Bagian ini menjelaskan kasus penggunaan berikut untuk menggunakan filter Bloom:
Menghapus duplikat iklan dan acara: Jika Anda memiliki situs e-commerce, layanan streaming, jaringan iklan, atau platform pemasaran, filter Bloom dapat membantu Anda menentukan apakah pengguna melihat iklan, menerima email atau notifikasi promosi, atau membeli produk.
Anda dapat menggunakan filter Bloom untuk menyimpan semua produk yang dibeli pengguna.
- Jika produk tidak ada dalam filter, tampilkan iklan kepada pengguna dan tambahkan produk ke filter.
- Jika produk ada dalam filter, pengguna mungkin melihat iklan terkait dan membeli produk tersebut. Oleh karena itu, temukan iklan lain untuk ditampilkan kepada pengguna.
Mendeteksi penipuan: Anda dapat menggunakan filter Bloom untuk mendeteksi apakah kartu kredit ditandai sebagai dicuri. Untuk melakukannya, gunakan filter yang berisi kartu yang dilaporkan sebagai dicuri. Saat kartu digunakan, periksa apakah kartu tersebut muncul di filter.
- Jika kartu tidak ada dalam filter, berarti kartu tersebut tidak ditandai sebagai dicuri.
- Jika kartu ada di filter, Anda dapat memeriksa kartu terhadap database utama atau menolak pembelian.
Memfilter spam dan konten berbahaya: Anda dapat menggunakan filter Bloom untuk menyaring konten dari potensi ancaman, materi berbahaya, dan spam. Untuk melakukannya, buat filter yang berisi URL berbahaya, alamat email spam, dan nomor telepon spam. Saat pengguna memasukkan URL, atau menerima email atau teks, periksa apakah informasi ini muncul di filter.
- Jika URL, email, atau teks tidak ada dalam filter, izinkan pengguna mengakses situs yang diwakili oleh URL, atau menerima email atau teks.
- Jika URL, email, atau teks ada dalam filter, tolak akses pengguna ke situs terkait atau cegah pengguna menerima email atau teks.
Mendeteksi nama pengguna duplikat: Anda dapat menggunakan filter Bloom untuk menentukan apakah nama pengguna baru atau sudah ada. Untuk melakukannya, gunakan filter untuk melacak setiap nama pengguna yang mendaftar ke situs e-commerce atau layanan streaming Anda. Saat pengguna baru mencoba mendaftar dengan nama penggunanya, periksa apakah nama pengguna muncul di filter.
- Jika nama pengguna tidak ada dalam filter, buat akun dan tambahkan nama pengguna ke filter.
- Jika nama pengguna ada dalam filter, tolak nama pengguna tersebut.
Untuk mengetahui informasi selengkapnya tentang kasus penggunaan ini, lihat Kasus penggunaan umum untuk filter Bloom.
Ketersediaan
Jika Anda membuat instance Memorystore untuk Valkey, versi 8.0 dan yang lebih baru, maka jenis data Bloom dan perintah terkait versi 1.0 akan tersedia secara otomatis. Jenis data ini kompatibel dengan API menggunakan sintaksis perintah filter Bloom dari library klien Valkey berikut:
Jenis filter Bloom
Anda dapat memiliki jenis filter Bloom berikut:
- Penskalaan: Jenis filter ini tidak memiliki kapasitas tetap sehingga filter dapat bertambah. Jika filter mencapai kapasitasnya dan Anda menambahkan item baru yang unik ke filter, filter akan di-scale out dan subfilter baru akan dibuat. Subfilter ini memiliki kapasitas yang lebih besar daripada filter.
- Tidak diskalakan: Jenis filter ini memiliki kapasitas tetap sehingga ada batasan jumlah item yang dapat Anda tambahkan ke filter. Jika filter mencapai kapasitasnya dan Anda mencoba menambahkan item baru yang unik ke filter, Anda akan menerima error.
Untuk mengetahui informasi selengkapnya tentang perbedaan antara jenis filter Bloom ini, lihat Filter Bloom yang dapat diskalakan dan tidak dapat diskalakan.
Properti filter Bloom
Filter Bloom memiliki properti berikut:
- Kapasitas: Jumlah item yang dapat ditampung oleh filter Bloom sebelum filter tersebut di-scale out (untuk filter penskalaan) atau menolak penambahan item lainnya (untuk filter non-penskalaan).
- Rasio positif palsu: Rasio yang mengontrol probabilitas operasi untuk filter Bloom yang menghasilkan positif palsu. Misalnya, operasi yang Anda gunakan untuk memeriksa apakah suatu elemen ada dalam filter menunjukkan bahwa elemen tersebut ada dalam filter, meskipun sebenarnya tidak.
- Perluasan: Properti ini dikaitkan dengan penskalaan filter Bloom. Setelan ini mengontrol pertumbuhan kapasitas keseluruhan saat filter di-scale out karena filter mencapai kapasitasnya.
- Penskalaan atau non-penskalaan: Apakah filter Bloom merupakan filter penskalaan atau non-penskalaan.
Untuk mengetahui informasi selengkapnya tentang properti filter Bloom, lihat Properti Bloom.
Objek filter Bloom
Objek filter Bloom dapat menggunakan memori maksimum 128 MB. Untuk memeriksa jumlah memori yang digunakan filter Bloom, gunakan perintah BF.INFO key SIZE, dengan key adalah nama kunci untuk filter dan
SIZE adalah jumlah byte yang digunakan filter.
Kategori Bloom
Untuk mengelola akses ke perintah Bloom dan data, gunakan kategori @bloom. Selain kategori ini, kategori berikut menggunakan perintah Bloom: @read, @write, dan @fast.
Tabel berikut menunjukkan apakah Anda dapat memetakan perintah Bloom ke kategori @read,
@write, @fast, dan @bloom.
| Perintah Bloom | @bloom |
@read |
@write |
@fast |
|---|---|---|---|---|
BF.ADD |
Y | N | Y | Y |
BF.CARD |
Y | Y | N | Y |
BF.EXISTS |
Y | Y | N | Y |
BF.INFO |
Y | Y | N | Y |
BF.INSERT |
Y | N | Y | Y |
BF.MADD |
Y | N | Y | Y |
BF.MEXISTS |
Y | Y | N | Y |
BF.RESERVE |
Y | Y | N | Y |
Metrik Bloom
Untuk memantau penggunaan jenis data Bloom, metrik Cloud Monitoring berikut tersedia di Memorystore for Valkey:
objects_countused_memory
Untuk mengetahui informasi selengkapnya tentang metrik ini, lihat Metrik JSON dan filter Bloom.
Perintah Bloom
Bagian ini mencantumkan dan menjelaskan perintah Bloom yang dapat Anda gunakan untuk melakukan operasi Bloom pada jenis data Bloom.
| Perintah | Deskripsi |
|---|---|
BF.ADD |
Menambahkan satu item ke filter Bloom. Jika filter tidak ada, perintah akan membuatnya. |
BF.CARD |
Menampilkan kardinalitas filter Bloom. |
BF.EXISTS |
Menentukan apakah filter Bloom berisi item yang Anda tentukan. |
BF.INFO |
Menampilkan informasi penggunaan dan properti filter Bloom. |
BF.INSERT |
Buat filter Bloom dengan 0 item atau lebih atau tambahkan item ke filter yang ada. |
BF.MADD |
Menambahkan satu atau beberapa item ke filter Bloom. Jika filter tidak ada, perintah akan membuatnya. |
BF.MEXISTS |
Menentukan apakah filter Bloom berisi satu atau beberapa item. |
BF.RESERVE |
Buat filter bloom kosong dengan properti yang Anda tentukan. |
Memeriksa filter Bloom
Anda dapat memeriksa informasi berikut tentang filter Bloom:
- Penggunaan memori: periksa apakah filter mencapai batas penggunaan memorinya. Untuk memeriksa
jumlah memori yang digunakan filter, gunakan perintah
BF.INFO. - Kapasitas: periksa apakah filter adalah filter penskalaan. Jika ya, lakukan penskalaan filter sehingga mencapai kapasitasnya, lalu lakukan penskalaan keluar.
Untuk mengetahui informasi selengkapnya tentang cara memeriksa penggunaan dan kapasitas memori untuk filter Bloom, lihat Menangani filter Bloom besar.