Questão nº 50
Questão de Tecnologia da Informação · FGV TRF1 2024 (nº 50)
João não sabe fazer consultas em banco de dados e buscou a literatura para fazer uma junção interna otimizada. Um dos pontos observados por João foi que suas relações não tinham seus registros fisicamente organizados, necessitando de uma ordenação externa. Os atributos de junção são atributos chave. Pares de blocos de arquivo são copiados para buffers de memória na ordem, e os registros de cada arquivo são varridos apenas uma vez cada um, para combinar com o outro arquivo.
O método de implementação da junção utilizado por João foi o(a):
- Aloop alinhado;
- Bbloco alinhado;
- Cordenação - intercalação; (alternativa correta)
- Dúnico loop;
- Epartição - hash.
Resposta comentada
Gabarito Alternativa C
A junção (join) interna é uma operação de banco de dados que combina linhas de duas ou mais tabelas com base em uma coluna relacionada entre elas, resultando em um novo conjunto de linhas. Um algoritmo de junção otimizado busca realizar essa combinação da forma mais eficiente possível, minimizando acessos a disco e uso de CPU.
- (A) Incorreta: O loop alinhado (Nested Loop Join) varre a relação interna múltiplas vezes para cada registro ou bloco da relação externa, o que contradiz a descrição de que "os registros de cada arquivo são varridos apenas uma vez cada um". Não exige ordenação prévia.
- (B) Incorreta: O bloco alinhado (Block Nested Loop Join) é uma otimização do loop alinhado, lendo blocos inteiros da relação externa. Ainda assim, a relação interna é varrida várias vezes (uma vez para cada bloco da externa), e não exige ordenação prévia.
- (C) Correta: O método de ordenação - intercalação (Sort-Merge Join) primeiro ordena ambas as relações pelos atributos de junção (o que é necessário, pois os registros não estavam organizados, como João observou). Em seguida, ele intercala (merge) as duas relações ordenadas, varrendo cada uma delas apenas uma vez para encontrar os registros correspondentes, exatamente como descrito.
- (D) Incorreta: "Único loop" não é um algoritmo de junção padrão e não se encaixa na descrição de otimização ou varredura única após ordenação.
- (E) Incorreta: A partição - hash (Hash Join) particiona as relações usando uma função hash nos atributos de junção e não requer ordenação prévia. Embora cada relação seja lida uma vez, o processo não envolve a varredura "na ordem" como na intercalação de dados ordenados, e a necessidade explícita de "ordenação externa" afasta esta opção. A armadilha aqui é que o Hash Join também lê os arquivos uma vez, mas a descrição "na ordem" e a necessidade de "ordenação externa" são as chaves que apontam para Sort-Merge.
Fonte: FGV TRF1 2024 Analista Judiciário - Suporte em TI (Caderno Tipo 1). Reproduzida para fins de estudo.