À propos des filtres de Bloom

Un filtre de Bloom est une structure de données probabiliste é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 avoir des faux positifs. Par exemple, le filtre peut indiquer qu'un élément se trouve dans l'ensemble, même si ce n'est pas le cas. 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.

Le filtre y parvient en utilisant 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 pour les filtres de Bloom :

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

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

    • Si un produit ne figure pas dans le filtre, affichez l'annonce à 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. Par conséquent, trouvez une autre annonce à afficher à l'utilisateur.
  • Détecter la fraude : vous pouvez utiliser des filtres de 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 les contenus nuisibles : vous pouvez utiliser des filtres de Bloom pour filtrer les contenus afin de détecter les menaces potentielles, les contenus nuisibles et le spam. Pour ce faire, créez un filtre contenant des URL malveillantes, des adresses e-mail de spam et des numéros de téléphone de spam. Lorsque l'utilisateur saisit une URL ou reçoit un e-mail ou un SMS, vérifiez si ces informations apparaissent dans le filtre.

    • Si l'URL, l'e-mail ou le SMS ne figure pas dans le filtre, autorisez l'utilisateur à accéder au site représenté par l'URL ou à recevoir l'e-mail ou le SMS.
    • Si l'URL, l'e-mail ou le SMS figure dans le filtre, refusez l'accès de l'utilisateur au site associé ou empêchez-le de recevoir l'e-mail ou le SMS.
  • Détecter les noms d'utilisateur en double : vous pouvez utiliser des filtres de Bloom pour déterminer si un nom d'utilisateur est nouveau ou s'il existe déjà. Pour ce faire, utilisez un filtre pour suivre chaque nom d'utilisateur qui s'inscrit sur votre site de commerce électronique 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 de 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 les commandes associées est disponible automatiquement. Ce type de données est compatible avec l'API et la syntaxe des commandes de filtre de Bloom des bibliothèques clientes Valkey suivantes :

Types de filtres de Bloom

Vous pouvez utiliser les types de filtres de Bloom suivants :

  • Mise à l'échelle : ce type de filtre n'a pas de capacité fixe, il peut donc évoluer. Si le filtre atteint sa capacité et que vous y ajoutez un nouvel élément unique, il est mis à l'échelle et un nouveau sous-filtre est créé. Ce sous-filtre a une capacité supérieure à celle du filtre.
  • Sans mise à l'échelle : ce type de filtre a une capacité fixe. Vous ne pouvez donc pas ajouter un nombre illimité d'éléments au filtre. Si le filtre atteint sa capacité et que vous tentez d'y ajouter un nouvel élément unique, une erreur s'affiche.

Pour en savoir plus sur les différences entre ces types de filtres de Bloom, consultez Filtres de Bloom avec et sans mise à l'échelle.

Propriétés des filtres de Bloom

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

  • Capacité : nombre d'éléments qu'un filtre de Bloom peut contenir avant d' être mis à l'échelle (pour un filtre avec mise à l'échelle) ou de refuser l'ajout d'éléments supplémentaires (pour un filtre sans mise à l'échelle).
  • Taux de faux positifs : taux qui contrôle la probabilité que les opérations des filtres de 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 aux filtres de Bloom avec mise à l'échelle. Elle contrôle la croissance de la capacité globale lorsque le filtre est mis à l'échelle, car il atteint sa capacité.
  • Mise à l'échelle ou non : indique si un filtre de Bloom est un filtre avec ou sans mise à l'échelle.

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

Objets de filtre de Bloom

Un objet de filtre de Bloom peut consommer au maximum 128 Mo de mémoire. Pour vérifier la quantité de mémoire consommée par un filtre de Bloom, utilisez la BF.INFO key SIZE commande, où key est le nom de la clé du filtre et SIZE le 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 @bloom catégorie. 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 des commandes Bloom aux catégories @read, @write, @fast et @bloom.

Commande Bloom @bloom @read @write @fast
BF.ADD Y 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 Y

Commandes Bloom

Cette section répertorie 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 Ajoute un seul élément à un filtre de Bloom. Si le filtre n'existe pas, alors la commande le crée.
BF.CARD Renvoie la cardinalité d'un filtre de Bloom.
BF.EXISTS Détermine si un filtre de 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 de Bloom.
BF.INSERT Crée un filtre de Bloom avec zéro élément ou plus, ou ajoute des éléments à un filtre existant.
BF.MADD Ajoute un ou plusieurs éléments à un filtre de Bloom. Si le filtre n'existe pas, la commande le crée.
BF.MEXISTS Détermine si le filtre de Bloom contient un ou plusieurs éléments.
BF.RESERVE Crée un filtre de Bloom vide avec les propriétés que vous spécifiez.

Vérifier les filtres de Bloom

Vous pouvez vérifier les informations suivantes sur les filtres de 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 BF.INFO commande.
  • Capacité : vérifiez si un filtre est un filtre avec mise à l'échelle. Si c'est le cas, mettez le filtre à l'échelle pour qu'il atteigne sa capacité, puis effectuer un scaling horizontal.

Pour en savoir plus sur la vérification de l'utilisation de la mémoire et de la capacité des filtres de Bloom, consultez Gérer les filtres de Bloom volumineux.