Conceitos básicos do filtro Bloom
O ElastiCache é compatível com a estrutura de dados do filtro Bloom, que fornece uma estrutura de dados probabilística e eficiente em termos de memória para testar se um elemento é membro de um conjunto. Ao usar filtros Bloom, falsos positivos são possíveis: um filtro pode indicar incorretamente que um elemento existe, mesmo que esse elemento não tenha sido adicionado ao conjunto. No entanto, o uso de filtros Bloom evitará falsos negativos, indicações incorretas de que um elemento não existe, mesmo que esse elemento tenha sido adicionado ao conjunto.
Você pode definir a porcentagem de possíveis falsos positivos como uma taxa preferencial para sua workload, ajustando a taxa de fp. Você também pode configurar a capacidade (o número de itens que um filtro Bloom pode conter), propriedades escaláveis e não escaláveis e muito mais.
Depois que você criar um cluster com uma versão de mecanismo compatível, o tipo de dados do Bloom e os comandos associados estarão disponíveis automaticamente. O tipo de dados bloom é compatível com a API com a sintaxe do comando de filtro Bloom das bibliotecas de cliente oficiais da Valkey, incluindo valkey-py, valkey-java e valkey-go. Você pode migrar facilmente as aplicações baseadas em Bloom do Valkey e Redis OSS para o ElastiCache. Para obter uma lista completa de comandos, consulte Comandos de filtro Bloom.
As métricas relacionadas ao Bloom, BloomFilterBasedCmds, BloomFilterBasedCmdsLatency e BloomFilterBasedCmdsECPUs são incorporadas ao CloudWatch para monitorar o uso desse tipo de dados. Para obter mais informações, consulte Métricas para o Valkey e Redis OSS.
nota
Para usar os filtros Bloom, você deve estar executando no ElastiCache Valkey 8.1 e versões posteriores.
O tipo de dados bloom não é compatível com RDB com outras ofertas de bloom não baseadas em Valkey.
Visão geral do tipo de dados do filtro Bloom
Os filtros Bloom são uma estrutura de dados probabilística eficiente em termos de espaço que permite adicionar elementos e verificar se existem elementos. Falsos positivos são possíveis quando um filtro indica incorretamente que um elemento existe, mesmo que ele não tenha sido adicionado. No entanto, os filtros Bloom garantem que falsos negativos (indicando incorretamente que um elemento não existe, mesmo que tenha sido adicionado) não ocorram.
A principal fonte de documentação dos filtros bloom pode ser encontrada na página de documentação do valkey.io. Ela contém as seguintes informações:
Casos de uso comuns para filtros bloom
Desduplicação de anúncios e eventos
Detecção de fraudes
Filtro de conteúdo nocivo/spam
Detecção exclusiva de usuários
Diferenças entre filtros bloom escaláveis e não escaláveis
Como decidir entre filtros bloom escaláveis e não escaláveis
-
Saiba mais sobre as propriedades ajustáveis dos filtros Bloom. Isso inclui a taxa de falsos positivos, a capacidade, as propriedades de escalabilidade e não escalabilidade e muito mais.
Manipulação de grandes filtros bloom
-
Recomendações e detalhes sobre como verificar se um filtro bloom está atingindo seu limite de uso de memória e se ele pode ser dimensionado para atingir a capacidade desejada.
-
É possível verificar a quantidade de memória usada por um documento do filtro bloom usando o comando BF.INFO
.
-
Limite de tamanho do bloom
O consumo de memória por um único objeto de filtro Bloom é limitado a 128 MB. É possível verificar a quantidade de memória consumida por um filtro JSON usando o comando BF.INFO <key> SIZE.
ACLs do Bloom
Semelhante às categorias existentes por tipo de dados (@string, @hash etc.), uma nova categoria @bloom foi adicionada para simplificar o gerenciamento do acesso a comandos e dados do JSON. Nenhum outro comando do Valkey ou Redis OSS existente é membro da categoria @bloom.
Existem 3 categorias existentes de ACL que são atualizadas para incluir os novos comandos Bloom: @read, @write e @fast. A tabela a seguir indica o mapeamento de comandos Bloom para as categorias apropriadas.
| Comando 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 ao filtro Bloom
As seguintes métricas do CloudWatch relacionadas às estruturas de dados do bloom são fornecidas:
| Métricas do CW | Unidade | Tecnologia sem servidor/baseado em nós | Descrição |
|---|---|---|---|
|
BloomFilterBasedCmds |
Contagem |
Ambos |
O número total de comandos Bloom, incluindo comandos de leitura e gravação. |
|
BloomFilterBasedCmdsLatency |
Microssegundos |
Autogerenciado |
Latência de todos os comandos de filtro Bloom, incluindo comandos de leitura e gravação. |
|
BloomFilterBasedCmdsECPUs |
Contagem |
Sem servidor |
ECPUs consumidas por todos os comandos de filtro Bloom, incluindo comandos de leitura e gravação. |
Comandos de filtro Bloom
Os comandos de filtro Bloom
| Nome | Descrição |
|---|---|
| BF.ADD |
Adiciona um único item a um filtro bloom. Se o filtro ainda não existir, ele será criado. |
| BF.CARD |
Retorna a cardinalidade de um filtro bloom. |
| BF.EXISTS |
Determina se o filtro bloom contém o item especificado. |
| BF.INFO |
Retorna informações de uso e propriedades de um filtro bloom específico. |
| BF.INSERT |
Cria um filtro bloom com 0 ou mais itens ou adiciona itens a um filtro bloom existente. |
| BF.MADD |
Adiciona um ou mais itens a um filtro bloom. |
| BF.MEXISTS |
Determina se o filtro bloom contém 1 ou mais itens. |
| BF.RESERVE |
Cria um filtro bloom vazio com as propriedades especificadas. |
nota
O BF.LOAD não é compatível com o ElastiCache. Ele só é relevante para o uso da AOF, com o qual o ElastiCache não é compatível.