Les filtres Bloom sont une fonction d'analyse d'informations. Celles-ci permettent de déterminer si une donnée ou un ensemble de celles-ci est stocké dans une base de données ou un ensemble de données distribué. Ses principales caractéristiques sont son extrême efficacité dans cette tâche. C'est pour ces caractéristiques qu'elles sont largement utilisées dans les systèmes où il est nécessaire de vérifier l'existence d'une donnée spécifique au sein d'un vaste ensemble de celles-ci.
ULes filtres de bloom sont l'un des outils les plus utiles pour analyser les informations probabilistes et unidirectionnelles. Ces filtres de floraison sont outils ou instruments qui nous permettent d'analyser de grandes quantités d'informations probabilistes. Ceci afin de savoir si un élément ou des données font partie d'un ensemble. C'est une fonctionnalité extrêmement utile lorsque nous devons gérer de gros volumes de données. Surtout lorsque ces informations ne peuvent pas être traitées manuellement rapidement.
C'est pourquoi, grâce aux filtres de floraison, les crypto-monnaies telles que Bitcoin avoir la fonction de Sacs à main SPV. Mais nous voyons aussi cette fonction dans les crypto-monnaies comme Ethereum où ils vous permettent de rechercher des informations dans votre blockchain efficacement.
Et c'est grâce au fait que les filtres Bloom nous permettent de n'avoir que deux résultats: faux positifs ou négatifs. En d'autres termes, en implémentant des filtres de bloom, il est possible de savoir rapidement et efficacement si certains éléments peuvent exister en mémoire, ou s'ils n'existent définitivement pas. Des résultats faussement positifs révèlent la possibilité qu'un élément ou des données puissent faire partie d'un ensemble. Alors que les résultats négatifs concluent définitivement que l'élément ou les données ne sont pas inclus dans l'ensemble évalué. L'outil à son tour nous permet d'exclure complètement les faux négatifs, ce qui facilite grandement l'analyse des données.
Mais qu'est-ce qui a conduit à la création des filtres de floraison? Quelle est la relation de ceux-ci avec le monde de la blockchain? Eh bien, nous verrons cela ci-dessous.
Origine des filtres de floraison
Les filtres Bloom ont été conçus dans les années 70 par le développeur Burton Howard Bloom. Bloom, qui est diplômé en informatique du MIT, a conçu ces filtres comme une structure de données probabiliste efficace dans l'espace qui nous permet de vérifier si un élément ou des données font partie d'un ensemble ou non. L'objectif après sa création était de créer un outil de classification des données grâce à l'application de fonctions de hachage qui retournent un résultat ou une identification. En même temps, il permet de répondre avec certitude si l'élément à vérifier ne fait pas partie de l'ensemble, ou de refléter qu'il en fait probablement partie.
Ainsi, la conception de ces filtres Bloom permet de gérer de grandes bases de données ou des informations à grande vitesse. Et en même temps, une utilisation efficace de l'espace de stockage est réalisée. Cela est dû au fait que les filtres de floraison ne nécessitent pas de contenir ou de stocker les éléments ou les données eux-mêmes, mais simplement de vérifier s'ils sont ou non dans l'ensemble. Une opération de données en lecture seule qui permet des performances élevées et des capacités de traitement de l'information étendues.
Comment les filtres de floraison sont-ils configurés?
Les filtres Bloom ont ce que l'on appelle une structure de données de matrice d'entrée. Cette baie a une longueur ou une capacité de stockage aussi grande que nécessaire. Cela signifie que au moment de la construction d'un filtre de floraison, vous pouvez définir la longueur du filtre, comme demandé. Définir combien d'entrées seront ajoutées à la structure de données de base et combien fonctions de hachage Ils seront utilisés dans le filtre, s'associant à chacune de ces entrées.
De même, au moment de sa conception, il faut tenir compte du fait que la plage de fonctions de hachage doit commencer à 0 et aboutir au nombre du nombre d'entrées existantes moins 1. Autrement dit, si un filtre de floraison est conçu pour 10 entrées, il commencera par le numéro 0 et se terminera par le numéro 9. Si un filtre est conçu pour 20 entrées, le filtre de floraison commencera au numéro 0 et se terminera au numéro 19. Une pratique de conception informatique qui cherche à optimiser au maximum les ressources de traitement des filtres.
De même, lorsque l'ensemble des entrées existantes trouve toutes ses valeurs à 0, cela signifie que les données ne sont pas dans le filtre de floraison. C'est donc vide. Ainsi, au moment où vous commencez à ajouter des données ou des éléments au filtre, les informations seront transmises via les fonctions de hachage respectives qui placeront ces informations à l'endroit correspondant dans le filtre de floraison. Par conséquent, ces emplacements refléteront la valeur 1, indiquant qu'ils contiennent des éléments déjà analysés.
A partir de ces valeurs est construit le fonctionnement des filtres de bloom que nous expliquerons en détail ci-dessous.
Comment fonctionnent les filtres de floraison
Ainsi, une fois le filtre de floraison configuré, nous pouvons commencer à vérifier si un élément fait partie de l'ensemble ou non. Pour y parvenir, le processus à suivre commence par la transmission de l'entrée de données souhaitée à l'algorithme de filtre de floraison. Autrement dit, nous prenons les données du système et les traitons à l'aide des fonctions de hachage du système. Ces fonctions de hachage renverront en conséquence deux positions.
Ces hachages et les positions qu'ils renvoient en conséquence sont stockés et liés aux données qui les génèrent. Ainsi, le filtre continue à collecter des informations, en leur appliquant des fonctions de hachage et en stockant les résultats de son fonctionnement. Cependant, ce processus a une procédure supplémentaire qui maximise son efficacité et améliore le temps de réponse des systèmes qui appliquent ce type de filtres à leurs structures.
Premièrement, si les données qui ont été transmises au filtre passent par les fonctions de hachage et retournent des positions avec des valeurs autres que 0, alors l'élément est dans l'ensemble. C'est ce que l'on appelle positif indiquant l'existence de cet élément dans l'ensemble. Cela peut également être le cas où les hachages renvoient des résultats avec des valeurs différentes.
Au contraire, si l'une ou les deux positions affichent une valeur de 0, alors l'élément n'est certainement pas dans l'ensemble. Une autre situation prévue par l'algorithme et qui est appelée négatif ou faux positif. Ce résultat est définitif ou concluant car les filtres de bloom n'entraîneront jamais de faux négatifs. Autrement dit, si l'algorithme d'un filtre de bloom détecte un négatif ou un faux positif, cette information n'est certainement pas dans l'ensemble de données analysé.
D'autre part, lors de la configuration d'un filtre de bloom, il est très important de définir le nombre de bits et de fonctions de hachage qui seront appliqués. Avec un plus grand nombre de fonctions de hachage, le taux d'erreur est considérablement réduit, de sorte que la probabilité d'avoir des résultats faussement positifs sera plus faible. De même, une fois que l'ensemble de bits de filtre de floraison est complètement rempli, les données saisies ne peuvent pas être effacées. Ceci afin de ne pas provoquer l'apparition de faux négatifs dans le filtre.
Quelle est l'importance des faux positifs et des négatifs dans les filtres de floraison?
L'importance des états faux positifs et négatifs des filtres de bloom réside dans l'efficacité. Comme nous l'avons déjà mentionné, les filtres de bloom sont programmés pour prendre en compte les deux états. Et dans le cas où ils surviennent, nous pouvons prendre les mesures pertinentes pour apporter une réponse appropriée.
Par exemple, si nous travaillons avec un système de stockage de données pour générer un cache, un filtre de floraison est d'une grande aide. Ceci est dû au fait qu'à chaque fois que le système reçoit une donnée, ce que nous devons faire est de vérifier si ces données ne sont pas dans les données que nous avons stockées dans le cache. Donc, si nous introduisons ces données et que le filtre de bloom renvoie un négatif ou un faux positif, nous pouvons être sûrs que ces données ne font pas partie de l'ensemble d'informations que nous traitons. Et à ce stade, nous pouvons procéder au stockage de ces nouvelles données dans le cache afin que nous puissions y accéder plus tard rapidement et efficacement.
Si, au contraire, le filtre de bloom renvoie un résultat positif, nous pouvons simplement ignorer le stockage des informations et travailler avec ce que nous avons dans le cache, donnant un meilleur accès aux informations et économisant ainsi de précieuses ressources de calcul.
Ce type d'opération n'est pas étranger aux logiciels que nous utilisons au quotidien. Par exemple, les navigateurs Web utilisent la mémoire cache stockée sur nos disques durs pour nous donner accès à certaines ressources rapidement, par rapport à la consultation desdites données en ligne. Les bases de données de serveurs et autres systèmes qui traitent d'énormes quantités de données utilisent également des filtres de floraison ou des algorithmes similaires pour améliorer l'efficacité de leurs réponses et la gestion des données.
Fonctions de hachage dans les filtres de floraison
Lors de la configuration d'un filtre de floraison, des fonctions de hachage indépendantes et uniformément distribuées doivent être utilisées. Ces fonctions de hachage vous permettent d'attribuer un identifiant à tout type de données, qui peut être utilisé pour indexer ou comparer lesdites données dans un ensemble.
Lorsque nous parlons de fonctions de hachage, nous parlons des fonctions bien connues SHA-256, MD5 ou d'autres telles que CRC32. Cependant, dans les filtres de floraison, vous devez faire attention. L'utilisation de nombreuses fonctions de hachage ajoute de la sécurité, mais la rend également plus complexe et lente, de sorte que les fonctions doivent être choisies de manière à ce que leurs capacités soient pleinement exploitées.
De son côté, la caractéristique unidirectionnelle des fonctions de hachage permet de déterminer ou de créer un identifiant à partir d'un élément ou d'une donnée, mais le processus inverse ne peut être réalisé. Ainsi, si un utilisateur découvre un identifiant, il ne pourra pas savoir quels sont les données ou éléments qui y sont liés.
Avantages et inconvénients de l'utilisation du filtre de floraison
Avantages
- Les filtres bloom, en ne stockant pas un jeu de données en tant que tel, sont plus efficaces en termes d'utilisation de l'espace de stockage. Puisqu'ils ne sauvegardent que si une information ou un élément existe ou non dans le filtre de floraison.
- De même, cette fonctionnalité permet la vérification des données ou des éléments peut être effectuée beaucoup plus rapidement et efficacement. Bien qu'il faille également tenir compte du fait que plus le nombre de fonctions de hachage est élevé, plus le temps nécessaire au filtre de bloom pour vérifier l'existence des éléments ou des données est long.
- le Les filtres de floraison utilisent le concept de hachage unidirectionnel. Si un utilisateur y accède, il ne pourra pas connaître directement les informations contenues dans ces filtres.
Inconvénients
- Ces outils ne pas renvoyer les données vérifié. Au lieu de cela, ils vous permettent uniquement de vérifier s'ils existent ou non.
- Lorsque vous obtenez des résultats positifs, vous ne pouvez que supposer qu'ils sont probablement corrects. Vous ne pouvez pas être certain ou totalement certain que les données positives font partie de l'ensemble. Contrairement à ce qui se passe en cas de résultats négatifs. Où vous pouvez avoir une réponse ou un résultat final décisif.
- Lors de la conception du filtre de floraison, une taille doit lui être attribuée, qu'il s'agisse de quelques bits ou de millions de bits. Une fois qu'une taille est désignée, elle ne rétrécira pas ou ne grossira pas plus que précédemment. Par conséquent, pour que le filtre de floraison soit efficace, il est nécessaire de définir ou d'être clair à l'avance combien de données seront ajoutées. Par conséquent, si ces informations ne sont pas connues, il est probable qu'un filtre de floraison sera conçu avec très peu d'éléments qui ne sont pas aussi efficaces pour traiter les informations recherchées. Ou cela peut être le cas dans lequel un très grand filtre anti-efflorescence est conçu qui nécessite un très grand espace de stockage pour la petite quantité d'informations à traiter. Ce qui entraînerait un gaspillage d'espace.
Cas d'utilisation des filtres Bloom
Crypto-monnaies: Bitcoin et Ethereum
Le système Bitcoin utilise des filtres de floraison pour accélérer la synchronisation des portefeuilles ou porte-monnaie SPV; qui leur permettent de spécifier uniquement les transactions pour lesquelles ils souhaitent recevoir des mises à jour du système. Former un ensemble de transactions qui peuvent transmettre aux nœuds complets du réseau. Là, vous pouvez consulter ces filtres. Puis recevoir la confirmation de l'ajout ou non de cet ensemble de transactions à la chaîne. Pas besoin de gérer une copie complète de la blockchain. Dans Bitcoin, cette fonctionnalité est modifiée par les blocs compacts mentionnés dans le BIP-158.
De son côté, le réseau Ethereum utilise des filtres de floraison comme mécanisme par lequel vous pouvez trouver des journaux dans votre blockchain. Ainsi, en implémentant ces filtres, vous pouvez facilement rechercher des événements qui se sont produits dans le système Ethereum. Sans le surcharger en manipulant des informations excessives. Faire des applications peut gérer ces informations beaucoup plus efficacement. Sans nécessiter une grande quantité d'espace de stockage. Étant donné qu'avec les filtres de floraison, il n'est pas nécessaire de stocker des données qui pourraient être dupliquées dans le système.
Dans Ethereum, lorsqu'un bloc est généré et vérifié, l'adresse du contrat et les champs indexés des enregistrements sont ajoutés à un filtre de floraison. Ce filtre est situé dans l'en-tête du bloc. Ainsi, si une application souhaite trouver toutes les entrées de registre, le nœud ne doit analyser que l'en-tête. Ainsi, vous pouvez reconnaître si les données requises sont là ou non. Par conséquent, ces éléments ne sont pas ajoutés au bloc en tant que tels, afin d'économiser de l'espace de stockage.
Réseaux et canaux d'information
Une autre mise en œuvre importante des filtres de floraison permet aux réseaux ou aux canaux d'information de pouvoir faire des recommandations d'articles aux utilisateurs. Permettre à ceux-ci de ne pas se répéter. C'est-à-dire, Vous pouvez découvrir quels articles un utilisateur a lu pour recommander ceux qu'il n'a pas encore vus.
De même, les grands centres de données et la distribution de contenu (CDN) utilisent des filtres de floraison pour maximiser l'efficacité du stockage des données et de l'utilisation du réseau, en évitant que des éléments répétés ou peu utilisés fassent partie de leurs systèmes en les surchargeant. Cela inclut des entreprises comme Akamai, Namecheap CDN, Fastly ou Cloudflare.