Em grande escala, a seleção de usuários baseada em tags — base do marketing de precisão, recomendações personalizadas e controle de riscos — exige uma estrutura de dados bitmap capaz de processar centenas de milhões de entradas esparsas, executar interseções de conjuntos em milissegundos e manter estabilidade sob carga concorrente. Os bitmaps da Redis Open-Source Edition apresentam limitações severas nesses três aspectos. O TairRoaring, estrutura de roaring bitmap do Tair (Enterprise Edition), elimina essas restrições por meio de otimizações internas que dispensam alterações na aplicação.
Limitações dos bitmaps nativos
Os bitmaps da Redis Open-Source Edition impõem três restrições que se agravam conforme o volume de dados aumenta:
|
Restrição |
Impacto |
|
Limite de tamanho do keyspace |
Desperdício significativo de espaço para dados de tags esparsos |
|
Operações de bitmap baseadas em strings |
Necessidade de código de orquestração no lado do usuário; tempo de ida e volta (RTT) triplica |
|
Chaves grandes |
Instabilidade do cluster sob cargas intensas de tagging |
Como o TairRoaring supera essas restrições
O TairRoaring otimiza o algoritmo de roaring bitmap com três técnicas transparentes no mecanismo do Tair (Enterprise Edition):
Índices de dois níveis e contêineres dinâmicos: O TairRoaring particiona os dados do bitmap usando uma estrutura de índice de dois níveis. Conjuntos densos e esparsos são tratados automaticamente, sem necessidade de sharding manual. Isso elimina o problema de chaves grandes no nível da estrutura de dados.
Algoritmos SIMD, vetorização e popcount: O paralelismo via Single Instruction, Multiple Data (SIMD) e vetorização, combinado com contagem de cardinalidade baseada em popcount, acelera as operações de interseção (
AND), união (OR) e diferença (DIFF).Runtime de alta performance do Tair: As operações executam dentro do mecanismo do Tair (Enterprise Edition), que mantém o desempenho estável do cluster mesmo sob cargas concorrentes em larga escala.
Comparado aos bitmaps nativos do Redis, o TairRoaring oferece menor uso de memória e operações de coleção mais rápidas. Em relação à orquestração de bitmaps baseada em strings, proporciona menor latência e maior throughput ao eliminar RTTs extras.
Selecione usuários por tag
A seleção de usuários baseada em tags segue um pipeline de três etapas.
Etapa 1: Construa o repositório de tags
Armazene características dos usuários provenientes de bancos relacionais utilizando esquemas de linhas, organizados por dimensão (por exemplo, demografia, comportamento e preferências).
Processe os dados brutos sob demanda para gerar mapeamentos de UID para tag.
Sincronize os mapeamentos atualizados com o TairRoaring. As atualizações geralmente são concluídas em até dois dias após a geração dos dados de negócio correspondentes.
Etapa 2: Consulte usuários
Com o repositório de tags configurado, o TairRoaring suporta três padrões de consulta.
Verifique se um usuário possui uma tag específica
Para determinar se user1 tem a Tag-A (número serial 16161):
TR.GETBIT user1 16161
Encontre usuários que correspondam a uma combinação de tags
Para localizar todos os usuários que possuem tanto a Tag-B quanto a Tag-C:
TR.BITOP result AND Tag-B Tag-C
O comando TR.BITOP aceita os operadores AND, OR e DIFF, permitindo criar grupos lógicos arbitrários de usuários a partir dos seus conjuntos de tags.
Busca reversa: verifique se uma tag está associada a um UID específico
Em cenários de controle de risco, as tags representam atributos e os UIDs são os valores verificados. Inverta a ordem das chaves para realizar essa consulta:
TR.GETBIT Tag-A user1
Etapa 3: Utilize os resultados da consulta
Encaminhe o bitmap ou valor de bit resultante para os sistemas downstream para processamento adicional.