Informazioni sui filtri Bloom

Un filtro Bloom è una struttura di dati probabilistica ed efficiente in termini di spazio che puoi utilizzare per verificare se un elemento fa parte di un insieme. Con questo tipo di struttura, puoi avere falsi positivi. Ad esempio, il filtro può indicare che un elemento si trova nel set, anche se non è così. Tuttavia, non puoi avere falsi negativi. Pertanto, se aggiungi un elemento al set, il filtro deve indicare che l'elemento si trova nel set.

Il filtro lo fa utilizzando più funzioni hash per mappare un elemento a diversi bit in un array di bit di dimensioni fisse. Per controllare la probabilità di falsi positivi, puoi modificare il numero di bit nell'array e il numero di funzioni hash utilizzate.

Casi d'uso

Questa sezione descrive i seguenti casi d'uso per l'utilizzo dei filtri Bloom:

  • Rimuovi i duplicati di annunci ed eventi: se hai un sito di e-commerce, un servizio di streaming, un network pubblicitario o una piattaforma di marketing, i filtri Bloom possono aiutarti a determinare se un utente ha visto un annuncio, ha ricevuto un'email o una notifica promozionale o ha acquistato un prodotto.

    Puoi utilizzare un filtro Bloom per memorizzare tutti i prodotti acquistati da un utente.

    • Se un prodotto non è nel filtro, mostra l'annuncio all'utente e aggiungi il prodotto al filtro.
    • Se il prodotto è nel filtro, è probabile che l'utente abbia visto la pubblicità associata e acquistato il prodotto. Pertanto, trova un altro annuncio da mostrare all'utente.
  • Rilevare le frodi: puoi utilizzare i filtri Bloom per rilevare se una carta di credito è contrassegnata come rubata. Per farlo, utilizza un filtro che contenga le carte segnalate come rubate. Quando viene utilizzata una carta, controlla se viene visualizzata nel filtro.

    • Se la carta non è nel filtro, non è contrassegnata come rubata.
    • Se la carta è nel filtro, puoi controllarla nel database principale o rifiutare l'acquisto.
  • Filtrare lo spam e i contenuti dannosi: puoi utilizzare i filtri Bloom per esaminare i contenuti alla ricerca di potenziali minacce, materiali dannosi e spam. Per farlo, crea un filtro che contenga URL dannosi, indirizzi email di spam e numeri di telefono di spam. Quando l'utente inserisce un URL o riceve un'email o un messaggio, controlla se queste informazioni vengono visualizzate nel filtro.

    • Se l'URL, l'email o il testo non sono nel filtro, consenti all'utente di accedere al sito rappresentato dall'URL o di ricevere l'email o il messaggio.
    • Se l'URL, l'email o il testo si trova nel filtro, nega all'utente l'accesso al sito associato o impedisci all'utente di ricevere l'email o il messaggio.
  • Rilevare nomi utente duplicati: puoi utilizzare i filtri Bloom per determinare se un nome utente è nuovo o se esiste già. Per farlo, utilizza un filtro per monitorare ogni nome utente che si registra al tuo sito di e-commerce o servizio di streaming. Quando un nuovo utente tenta di registrarsi con il proprio nome utente, controlla se il nome utente viene visualizzato nel filtro.

    • Se il nome utente non è nel filtro, crea l'account e aggiungilo al filtro.
    • Se il nome utente è nel filtro, rifiutalo.

Per maggiori informazioni su questi casi d'uso, consulta Casi d'uso comuni per i filtri Bloom.

Disponibilità

Se crei un'istanza Memorystore for Valkey, versione 8.0 e successive, la versione 1.0 del tipo di dati Bloom e dei comandi associati è disponibile automaticamente. Questo tipo di dati è compatibile con l'API con la sintassi del comando del filtro Bloom delle seguenti librerie client Valkey:

Tipi di filtri Bloom

Puoi avere i seguenti tipi di filtri Bloom:

  • Scalabilità: questo tipo di filtro non ha una capacità fissa, quindi può crescere. Se il filtro raggiunge la sua capacità e aggiungi un nuovo elemento univoco al filtro, il filtro viene scalato e viene creato un nuovo sottofiltro. Questo sottofiltro ha una capacità maggiore rispetto al filtro.
  • Non scalabile: questo tipo di filtro ha una capacità fissa, quindi esiste un limite al numero di elementi che puoi aggiungere al filtro. Se il filtro raggiunge la sua capacità e tenti di aggiungere un nuovo elemento univoco al filtro, ricevi un errore.

Per saperne di più sulle differenze tra questi tipi di filtri Bloom, consulta Filtri Bloom con e senza scalabilità.

Proprietà del filtro Bloom

Un filtro Bloom ha le seguenti proprietà:

  • Capacità: il numero di elementi che un filtro Bloom può contenere prima che venga scalato (per un filtro di scalabilità) o che rifiuti l'aggiunta di altri elementi (per un filtro non scalabile).
  • Tasso di falsi positivi: il tasso che controlla la probabilità che le operazioni per i filtri Bloom generino falsi positivi. Ad esempio, un'operazione che utilizzi per verificare se un elemento è nel filtro indica che l'elemento è nel filtro, anche se non lo è.
  • Espansione: questa proprietà è associata al ridimensionamento dei filtri Bloom. Controlla la crescita della capacità complessiva quando il filtro viene scalato orizzontalmente perché raggiunge la sua capacità.
  • Scalabilità o non scalabilità: indica se un filtro Bloom è un filtro scalabile o non scalabile.

Per ulteriori informazioni sulle proprietà dei filtri Bloom, consulta Proprietà Bloom.

Oggetti filtro Bloom

Un oggetto filtro di Bloom può consumare un massimo di 128 MB di memoria. Per controllare la quantità di memoria consumata da un filtro di Bloom, utilizza il comando BF.INFO key SIZE, dove key è il nome della chiave del filtro e SIZE è il numero di byte consumati dal filtro.

Categorie di Bloom

Per gestire l'accesso ai comandi Bloom e ai dati, utilizza la categoria @bloom. Oltre a questa categoria, le seguenti categorie utilizzano i comandi Bloom: @read, @write e @fast.

La tabella seguente indica se puoi mappare i comandi Bloom alle categorie @read, @write, @fast e @bloom.

Comando 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

Metriche Bloom

Per monitorare l'utilizzo del tipo di dati Bloom, in Memorystore for Valkey sono disponibili le seguenti metriche di Cloud Monitoring:

  • objects_count
  • used_memory

Per saperne di più su queste metriche, consulta Filtro Bloom e metriche JSON.

Comandi Bloom

Questa sezione elenca e descrive i comandi Bloom che puoi utilizzare per eseguire operazioni Bloom sul tipo di dati Bloom.

Comando Descrizione
BF.ADD Aggiungi un singolo elemento a un filtro Bloom. Se il filtro non esiste, il comando lo crea.
BF.CARD Restituisce la cardinalità di un filtro Bloom.
BF.EXISTS Determina se un filtro di Bloom contiene l'elemento specificato.
BF.INFO Restituisce le informazioni sull'utilizzo e le proprietà di un filtro Bloom.
BF.INSERT Crea un filtro Bloom con 0 o più elementi o aggiungi elementi a un filtro esistente.
BF.MADD Aggiungi uno o più elementi a un filtro Bloom. Se il filtro non esiste, il comando lo crea.
BF.MEXISTS Determina se il filtro bloom contiene uno o più elementi.
BF.RESERVE Crea un filtro Bloom vuoto con le proprietà che specifichi.

Controllare i filtri Bloom

Puoi controllare le seguenti informazioni sui filtri Bloom:

  • Utilizzo della memoria: controlla se un filtro raggiunge il limite di utilizzo della memoria. Per controllare la quantità di memoria utilizzata da un filtro, utilizza il comando BF.INFO.
  • Capacità: controlla se un filtro è un filtro di scalabilità. In questo caso, scala il filtro in modo che raggiunga la sua capacità, quindi esegui lo scale out.

Per ulteriori informazioni sul controllo della memoria utilizzata e della capacità per i filtri di Bloom, consulta Gestire i filtri di Bloom di grandi dimensioni.