Os dados de uma agenda contendo nome, telefone e endereço de...
variável e que D pode ter arquivos (pré-existentes) de índices que se referenciam ao arquivo de dados, e supondo que D não possui cache, qual é a estratégia que realizará, em média, menos operações de I/O para consultar todos os registros cujo nome começa por uma determinada letra?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a Alternativa C. Vamos entender por quê.
Tema Central: A questão trata de métodos de acesso a registros em um arquivo de dados ordenados. É fundamental compreender como o uso de índices pode otimizar o acesso a dados, especialmente em um contexto sem cache, onde operações de I/O (entrada/saída) são mais custosas em termos de tempo.
Resumo Teórico: Em bancos de dados, o acesso eficiente a registros é crucial, especialmente em grandes conjuntos de dados. Um índice é uma estrutura de dados que melhora a velocidade das operações de consulta em um banco de dados à custa de espaço adicional e tempo de manutenção. Existem diferentes tipos de índices, como o sequencial, a árvore B-Tree e índices de acesso direto, cada um com suas vantagens e desvantagens dependendo do cenário.
Justificativa da Alternativa C - Correta: A alternativa C sugere o uso de um arquivo de índices que mapeia as letras do alfabeto para as posições de início dos registros no arquivo de dados. Este método é eficiente porque:
- Reduz o número de operações de I/O ao permitir acesso direto aos registros iniciados por uma letra específica.
- Uma vez encontrado o início dos registros com a letra desejada, uma leitura sequencial é rápida e não requer mais operações de I/O desnecessárias.
Portanto, essa estratégia minimiza o número de acessos ao disco, tornando-a a mais eficiente para o cenário descrito.
Análise das Alternativas Incorretas:
Alternativa A: Pesquisa binária diretamente sobre o arquivo de dados é menos eficiente, pois embora os dados estejam ordenados, a pesquisa binária não é ideal em arquivos de acesso direto sem cache, devido ao custo alto de I/O.
Alternativa B: A B-Tree é excelente para buscas rápidas, mas, neste caso, os dados já são ordenados por nome, e o objetivo é acessar rapidamente um grupo de registros. O uso de uma B-Tree para um conjunto específico de registros é desnecessário e pode não ser otimizado para a situação.
Alternativa D: Embora uma pesquisa binária sobre um arquivo de índices indexado pelo nome possa ser eficiente para encontrar um registro específico, não é ideal para encontrar todos os registros que começam com uma letra específica, pois requer várias operações de I/O.
Alternativa E: A leitura sequencial diretamente sobre o arquivo de dados sem índices é a abordagem menos eficiente, pois requer a leitura de todos os registros, resultando em um número muito alto de operações de I/O.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo