À propos des filtres de Bloom

Un filtre de Bloom est une structure de données probabiliste et économe en espace que vous pouvez utiliser pour vérifier si un élément fait partie d'un ensemble. Avec ce type de structure, vous pouvez obtenir des faux positifs. Par exemple, le filtre peut indiquer qu'un élément se trouve dans l'ensemble, même s'il n'y est pas. En revanche, vous ne pouvez pas avoir de faux négatifs. Par conséquent, si vous ajoutez un élément à l'ensemble, le filtre doit indiquer que l'élément se trouve dans l'ensemble.

Pour ce faire, le filtre utilise plusieurs fonctions de hachage pour mapper un élément à plusieurs bits dans un tableau de bits de taille fixe. Pour contrôler la probabilité de faux positifs, vous pouvez ajuster le nombre de bits dans le tableau et le nombre de fonctions de hachage utilisées.

Cas d'utilisation

Cette section décrit les cas d'utilisation suivants des filtres Bloom :

  • Dédupliquer les annonces et les événements : si vous possédez un site d'e-commerce, un service de streaming, un réseau publicitaire ou une plate-forme marketing, les filtres Bloom peuvent vous aider à déterminer si un utilisateur a vu une annonce, reçu un e-mail ou une notification promotionnels, ou acheté un produit.

    Vous pouvez utiliser un filtre Bloom pour stocker tous les produits qu'un utilisateur achète.

    • Si un produit n'est pas dans le filtre, diffusez l'annonce auprès de l'utilisateur et ajoutez le produit au filtre.
    • Si le produit figure dans le filtre, l'utilisateur a probablement vu l'annonce associée et acheté le produit. Vous devez donc trouver une autre annonce à diffuser à l'utilisateur.
  • Détecter la fraude : vous pouvez utiliser des filtres Bloom pour détecter si une carte de crédit est signalée comme volée. Pour ce faire, utilisez un filtre contenant les cartes signalées comme volées. Lorsqu'une carte est utilisée, vérifiez si elle apparaît dans le filtre.

    • Si la carte ne figure pas dans le filtre, elle n'est pas marquée comme volée.
    • Si la carte figure dans le filtre, vous pouvez la comparer à la base de données principale ou refuser l'achat.
  • Filtrer le spam et le contenu dangereux : vous pouvez utiliser des filtres Bloom pour examiner le contenu et détecter les menaces potentielles, les contenus dangereux et le spam. Pour ce faire, créez un filtre contenant les URL malveillantes, les adresses e-mail de spam et les numéros de téléphone de spam. Lorsque l'utilisateur saisit une URL ou reçoit un e-mail ou un message, vérifiez si ces informations apparaissent dans le filtre.

    • Si l'URL, l'adresse e-mail ou le texte ne figurent pas dans le filtre, autorisez l'utilisateur à accéder au site représenté par l'URL, ou à recevoir l'e-mail ou le message.
    • Si l'URL, l'adresse e-mail ou le texte figurent dans le filtre, refusez l'accès de l'utilisateur au site associé ou empêchez-le de recevoir l'e-mail ou le message.
  • Détecter les noms d'utilisateur en double : vous pouvez utiliser des filtres Bloom pour déterminer si un nom d'utilisateur est nouveau ou s'il existe déjà. Pour ce faire, utilisez un filtre afin de suivre chaque nom d'utilisateur qui s'inscrit sur votre site d'e-commerce ou votre service de streaming. Lorsqu'un nouvel utilisateur tente de s'inscrire avec son nom d'utilisateur, vérifiez si celui-ci apparaît dans le filtre.

    • Si le nom d'utilisateur ne figure pas dans le filtre, créez le compte et ajoutez le nom d'utilisateur au filtre.
    • Si le nom d'utilisateur figure dans le filtre, refusez-le.

Pour en savoir plus sur ces cas d'utilisation, consultez Cas d'utilisation courants des filtres Bloom.

Disponibilité

Si vous créez une instance Memorystore pour Valkey version 8.0 ou ultérieure, la version 1.0 du type de données Bloom et des commandes associées est disponible automatiquement. Ce type de données est compatible avec la syntaxe de la commande de filtre Bloom des bibliothèques clientes Valkey suivantes :

Types de filtres de Bloom

Vous pouvez disposer des types de filtres Bloom suivants :

  • Mise à l'échelle : ce type de filtre n'a pas de capacité fixe et peut donc se développer. Si le filtre atteint sa capacité et que vous y ajoutez un nouvel élément unique, il est étendu et un sous-filtre est créé. Ce sous-filtre a une capacité supérieure à celle du filtre.
  • Non évolutif : ce type de filtre a une capacité fixe. Le nombre d'éléments que vous pouvez ajouter au filtre est donc limité. Si le filtre atteint sa capacité et que vous tentez d'y ajouter un nouvel élément unique, vous recevrez un message d'erreur.

Pour en savoir plus sur les différences entre ces types de filtres Bloom, consultez Filtres Bloom évolutifs et non évolutifs.

Propriétés du filtre de Bloom

Un filtre Bloom possède les propriétés suivantes :

  • Capacité : nombre d'éléments qu'un filtre Bloom peut contenir avant d'être mis à l'échelle (pour un filtre de scaling) ou de refuser l'ajout d'éléments supplémentaires (pour un filtre sans scaling).
  • Taux de faux positifs : taux qui contrôle la probabilité que les opérations pour les filtres Bloom génèrent des faux positifs. Par exemple, une opération que vous utilisez pour vérifier si un élément se trouve dans le filtre indique que l'élément se trouve dans le filtre, même si ce n'est pas le cas.
  • Expansion : cette propriété est associée à la mise à l'échelle des filtres Bloom. Il contrôle la croissance de la capacité globale lorsque le filtre est mis à l'échelle, car il atteint sa capacité.
  • Scaling ou non-scaling : indique si un filtre Bloom est un filtre scaling ou non-scaling.

Pour en savoir plus sur les propriétés des filtres Bloom, consultez Propriétés Bloom.

Objets de filtre Bloom

Un objet de filtre Bloom peut consommer jusqu'à 128 Mo de mémoire. Pour vérifier la quantité de mémoire consommée par un filtre Bloom, utilisez la commande BF.INFO key SIZE, où key correspond au nom de clé du filtre et SIZE au nombre d'octets consommés par le filtre.

Catégories Bloom

Pour gérer l'accès aux commandes Bloom et aux données, utilisez la catégorie @bloom. En plus de cette catégorie, les catégories suivantes utilisent des commandes Bloom : @read, @write et @fast.

Le tableau suivant indique si vous pouvez mapper les commandes Bloom aux catégories @read, @write, @fast et @bloom.

Commande Bloom @bloom @read @write @fast
BF.ADD O N O O
BF.CARD O O N O
BF.EXISTS O O N O
BF.INFO O O N O
BF.INSERT O N O O
BF.MADD O N O O
BF.MEXISTS O O N O
BF.RESERVE O O N O

Métriques Bloom

Pour surveiller l'utilisation du type de données Bloom, les métriques Cloud Monitoring suivantes sont disponibles dans Memorystore pour Valkey :

  • objects_count
  • used_memory

Pour en savoir plus sur ces métriques, consultez Métriques JSON et de filtre Bloom.

Commandes Bloom

Cette section liste et décrit les commandes Bloom que vous pouvez utiliser pour effectuer des opérations Bloom sur le type de données Bloom.

Commande Description
BF.ADD Ajoutez un seul élément à un filtre Bloom. Si le filtre n'existe pas, la commande le crée.
BF.CARD Renvoie la cardinalité d'un filtre Bloom.
BF.EXISTS Déterminez si un filtre Bloom contient l'élément que vous spécifiez.
BF.INFO Renvoie des informations sur l'utilisation et les propriétés d'un filtre Bloom.
BF.INSERT Créez un filtre Bloom avec zéro élément ou plus, ou ajoutez des éléments à un filtre existant.
BF.MADD Ajoutez un ou plusieurs éléments à un filtre Bloom. Si le filtre n'existe pas, la commande le crée.
BF.MEXISTS Déterminez si le filtre Bloom contient un ou plusieurs éléments.
BF.RESERVE Créez un filtre Bloom vide avec les propriétés que vous spécifiez.

Vérifier les filtres de Bloom

Vous pouvez consulter les informations suivantes sur les filtres Bloom :

  • Utilisation de la mémoire : vérifiez si un filtre atteint sa limite d'utilisation de la mémoire. Pour vérifier la quantité de mémoire utilisée par un filtre, utilisez la commande BF.INFO.
  • Capacité : vérifiez si un filtre est un filtre de scaling. Si c'est le cas, faites évoluer le filtre pour qu'il atteigne sa capacité, puis effectuer un scaling horizontal.

Pour savoir comment vérifier l'utilisation et la capacité de mémoire des filtres Bloom, consultez Gérer les grands filtres Bloom.