Introducción a los filtros de Bloom - Amazon ElastiCache

Introducción a los filtros de Bloom

ElastiCache admite la estructura de datos de filtros de Bloom, que es una estructura de datos de probabilidad y eficiente en términos de espacio que se utiliza para comprobar si un elemento es miembro de un conjunto. Cuando se utilizan filtros de Bloom, es posible que se generen falsos positivos: un filtro puede indicar incorrectamente la existencia de un elemento, aunque ese elemento no se haya añadido al conjunto. Sin embargo, el uso de los filtros de Bloom evitará los falsos negativos, es decir, indicaciones incorrectas de que un elemento no existe aunque se haya añadido al conjunto.

Puede establecer el porcentaje de posibles falsos positivos en la ratio que prefiera para la carga de trabajo ajustando la ratio de fp. También puede configurar la capacidad (la cantidad de elementos que puede contener un filtro de Bloom), las propiedades escalables y no escalables, y mucho más.

Después de crear un clúster con una versión de motor compatible, el tipo de datos Bloom y los comandos asociados están disponibles de forma automática. El tipo de datos bloom es compatible con las API con la sintaxis de comandos del filtro de Bloom de las bibliotecas de cliente oficiales de Valkey, incluidas valkey-py, valkey-java y valkey-go. Puede migrar fácilmente las aplicaciones de Valkey y Redis OSS basadas en Bloom existentes a ElastiCache. Para obtener una lista completa de los comandos, consulte Comandos de filtros de Bloom.

Las métricas relacionadas con Bloom BloomFilterBasedCmds, BloomFilterBasedCmdsLatency y BloomFilterBasedCmdsECPUs se incorporan a CloudWatch para supervisar el uso de este tipo de datos. Para obtener más información, consulte Métricas de Valkey y Redis OSS.

nota
  • Para usar los filtros de Bloom, debe ejecutar ElastiCache Valkey 8.1 y versiones posteriores.

  • El tipo de datos Bloom no es compatible con RDB con otras ofertas de Bloom que no estén basadas en Valkey.

Información general del tipo de datos Bloom

Los filtros de Bloom son una estructura de datos probabilística que ahorra espacio y que permite añadir elementos y comprobar si existen elementos. Pueden darse falsos positivos si un filtro indica incorrectamente que un elemento existe, aunque no se haya añadido. Sin embargo, los filtros de Bloom garantizan que no se produzcan falsos negativos (lo que indica incorrectamente que un elemento no existe aunque se haya añadido).

La principal fuente de documentación de los filtros de Bloom está en la página de documentación de valkey.io. Aquí se incluye la siguiente información:

Límite del tamaño de Bloom

El consumo de memoria de un único objeto de filtro de Bloom está limitado a 128 MB. Puede comprobar la cantidad de memoria que consume un filtro de Bloom mediante el uso del comando BF.INFO <key> SIZE.

ACL de Bloom

De forma similar a las categorías existentes por tipo de datos (@string, @hash, etc.), se añade una nueva categoría @bloom para simplificar la administración del acceso a los comandos y datos de Bloom. Ningún otro comando de Valkey o Redis OSS existente es miembro de la categoría @bloom.

Existen tres categorías de ACL que se actualizan para incluir los nuevos comandos de Bloom: @read, @write y @fast. La siguiente tabla indica la asignación de los comandos de Bloom a las categorías apropiadas.

Comando de Bloom @read @write @fast @bloom

BF.ADD

y

y

y

BF.CARD

y

y

y

BF.EXISTS

y

y

y

BF.INFO

y

y

y

BF.INSERT

y

y

y

BF.MADD

y

y

y

BF.MEXISTS

y

y

y

BF.RESERVE

y

y

y

Métricas relacionadas con el filtro de Bloom

Se proporcionan las siguientes métricas de CloudWatch relacionadas con las estructuras de datos de Bloom:

Métricas de CW Unidad Sin servidor/basado en nodos Descripción

BloomFilterBasedCmds

Recuento

Ambos

Número total de comandos de Bloom, incluidos los comandos de lectura y escritura.

BloomFilterBasedCmdsLatency

Microsegundos

Autoadministrado

Latencia de todos los comandos de filtros de Bloom, incluidos los comandos de lectura y escritura.

BloomFilterBasedCmdsECPUs

Recuento

Sin servidor

ECPU consumidas por todos los comandos de filtros de Bloom, incluidos los comandos de lectura y escritura.

Comandos de filtros de Bloom

Los comandos de filtros de Bloom se documentan en el sitio web Valkey.io. Cada página de comandos proporciona una descripción completa de los comandos de Bloom, incluida su sintaxis, comportamiento, valores de retorno y posibles condiciones de error.

Nombre Descripción
BF.ADD

Añade un único elemento a un filtro de Bloom. Si el filtro aún no existe, se crea.

BF.CARD

Devuelve la cardinalidad de un filtro de Bloom.

BF.EXISTS

Determina si el filtro de Bloom contiene el elemento especificado.

BF.INFO

Devuelve la información de uso y las propiedades de un filtro de Bloom específico.

BF.INSERT

Crea un filtro de Bloom con cero o más elementos, o añade elementos a un filtro de Bloom existente.

BF.MADD

Añade uno o más elementos a un filtro de Bloom.

BF.MEXISTS

Determina si el filtro de Bloom contiene uno o más elementos.

BF.RESERVE

Crea un filtro de Bloom vacío con las propiedades especificadas.

nota

ElastiCache no admite BF.LOAD. Solo es relevante para el uso de AOF, que ElastiCache no admite.