Questão de Banco de Dados — Índices — Quadrix 2024
- Código
- qg347328
- Banca
- Quadrix
- Órgão
- CFP
- Ano
- 2024
- Nível
- Superior
- Cargo
- Analista Técnico/TI/Desenvolvimento
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: CERTO (letra C). O índice bitmap é, de fato, mais eficiente em colunas de baixa cardinalidade, ou seja, com grande quantidade de valores repetidos — exatamente o cenário típico de tabelas de Data Warehousing, como as tabelas fato. A afirmação está correta.
O índice bitmap é uma estrutura de dados especializada em consultas analíticas. Diferentemente dos índices tradicionais (como a árvore B+), que armazenam uma entrada para cada valor distinto apontando para as linhas correspondentes, o bitmap armazena, para cada valor distinto da coluna, um vetor de bits — um bit para cada linha da tabela. Se a linha possui aquele valor, o bit é 1; caso contrário, é 0.
Essa estrutura é extremamente eficiente para operações de agregação e filtragem com múltiplas condições, pois o SGBD pode realizar operações lógicas (AND, OR, NOT) diretamente sobre os vetores de bits, o que é computacionalmente muito rápido. No entanto, essa eficiência depende crucialmente da cardinalidade da coluna: se a coluna tem poucos valores distintos (baixa cardinalidade), cada vetor de bits é longo e denso, e as operações lógicas são vantajosas. Se a coluna tem alta cardinalidade (muitos valores distintos, como um CPF), o número de vetores de bits cresce, e cada vetor fica esparso (com poucos bits 1), tornando o índice ineficiente em termos de espaço e desempenho.
No contexto de Data Warehousing, as tabelas fato são repletas de chaves estrangeiras que referenciam tabelas dimensão. Essas chaves estrangeiras, embora possam ter muitos valores únicos, frequentemente apresentam baixa cardinalidade em relação ao total de linhas da tabela fato — ou seja, muitos registros compartilham o mesmo valor de chave. É exatamente nesse cenário que o índice bitmap brilha, otimizando consultas de agregação e filtragem típicas de OLAP.
A pegadinha que a banca poderia explorar é inverter o conceito: afirmar que o bitmap é eficiente em alta cardinalidade. Mas aqui a afirmação está correta, então não há pegadinha — apenas a cobrança direta do conceito.
Critério | Índice Bitmap | Índice B+ Tree (tradicional) |
|---|---|---|
Cardinalidade ideal | Baixa (poucos valores distintos, muitos repetidos) | Alta (muitos valores distintos) |
Estrutura | Vetor de bits por valor distinto (1 bit por linha) | Árvore balanceada com ponteiros para linhas |
Operações fortes | AND, OR, NOT sobre bits (agregações, filtros múltiplos) | Busca por igualdade, intervalo, ordenação |
Uso típico | Data Warehousing, tabelas fato, consultas OLAP | Sistemas transacionais (OLTP), chaves primárias |
Eficiência em escrita | Baixa (atualizações caras) | Alta (inserções/atualizações pontuais) |
Espaço em baixa cardinalidade | Compacto e denso | Pode ser maior (entradas repetidas) |
Espaço em alta cardinalidade | Ineficiente (muitos vetores esparsos) | Eficiente e escalável |
A afirmação está correta. O índice bitmap é projetado para colunas de baixa cardinalidade, onde há grande quantidade de dados repetidos. Isso é exatamente o que ocorre em tabelas de Data Warehousing, especialmente nas tabelas fato, que possuem muitas chaves estrangeiras com valores repetidos. A eficiência vem do fato de que, com poucos valores distintos, os vetores de bits são densos e as operações lógicas (AND, OR, NOT) sobre eles são extremamente rápidas, otimizando consultas analíticas.
Gabarito: letra C
Link permanente: /questoes/qg347328