Questão de Banco de Dados — Banco de Dados Distribuídos — FGV 2024
- Código
- fg165227
- Banca
- FGV
- Órgão
- ALEP
- Ano
- 2024
- Cargo
- Ana Leg ( )
- Ahíbrida.
- Bhorizontal derivada.
- Chorizontal primária.
- Dvertical.
- Ereplicação.
GabaritoB — horizontal derivada.
Gabarito: letra B. A fragmentação aplicada à tabela COORDENADOR é horizontal derivada, pois as tuplas são divididas com base na fragmentação de outra tabela (LOCALIDADE), utilizando a chave estrangeira id_loc como critério de associação. A fragmentação horizontal primária, por outro lado, seria aplicada diretamente sobre os atributos da própria tabela, sem depender de outra relação.
A fragmentação é uma técnica fundamental em bancos de dados distribuídos, que consiste em dividir as relações (tabelas) em partes menores, chamadas fragmentos, que são armazenadas em diferentes sites da rede. O objetivo é melhorar o desempenho das consultas, reduzindo a quantidade de dados transferidos entre os nós, e aumentar a disponibilidade e a confiabilidade do sistema. Existem dois tipos principais de fragmentação: a horizontal e a vertical. A fragmentação horizontal divide a tabela em subconjuntos de linhas (tuplas), enquanto a vertical divide em subconjuntos de colunas (atributos).
A fragmentação horizontal pode ser primária ou derivada. A fragmentação horizontal primária é definida diretamente sobre os atributos da própria relação, usando um predicado (condição) que seleciona quais linhas pertencem a cada fragmento. Por exemplo, na tabela LOCALIDADE, poderíamos criar fragmentos com base no estado: LOCALIDADE_PR (estado = 'PR'), LOCALIDADE_SC (estado = 'SC') e LOCALIDADE_RS (estado = 'RS'). Já a fragmentação horizontal derivada é aplicada a uma relação que possui uma chave estrangeira para outra relação que já foi fragmentada. Nesse caso, as tuplas da relação filha são distribuídas de acordo com a fragmentação da relação pai, garantindo que as tuplas relacionadas fiquem no mesmo site, o que facilita a execução de junções (joins) e reduz a comunicação entre os nós.
No cenário apresentado, a tabela LOCALIDADE é fragmentada horizontalmente com base no estado (PR, SC ou RS). A tabela COORDENADOR possui uma chave estrangeira id_loc que referencia LOCALIDADE(id_loc). Para distribuir os dados de COORDENADOR, a equipe decide seguir o mesmo critério de fragmentação de LOCALIDADE. Isso significa que cada tupla de COORDENADOR será alocada no mesmo fragmento (e, portanto, no mesmo site) da localidade à qual está associada. Por exemplo, um coordenador cujo id_loc pertence a uma localidade do estado 'PR' será armazenado no fragmento correspondente a 'PR'. Essa é a definição exata de fragmentação horizontal derivada: a fragmentação de uma relação é derivada da fragmentação de outra relação, com base na chave estrangeira.
A distinção entre fragmentação horizontal primária e derivada é crucial para entender a questão. A primária é aplicada diretamente sobre a relação, sem depender de outras. A derivada é aplicada sobre uma relação que possui uma chave estrangeira para uma relação já fragmentada, herdando o critério de fragmentação. A banca explora exatamente essa diferença: muitos candidatos podem confundir a fragmentação de COORDENADOR com uma fragmentação horizontal primária, mas o fato de ela ser guiada pela fragmentação de LOCALIDADE a torna derivada. A pegadinha está em reconhecer que a fragmentação de COORDENADOR não é independente, mas sim dependente da fragmentação de LOCALIDADE.
Critério | Fragmentação Horizontal Primária | Fragmentação Horizontal Derivada |
|---|---|---|
Base da divisão | Atributos da própria tabela | Chave estrangeira de outra tabela já fragmentada |
Dependência | Independente de outras relações | Dependente da fragmentação da relação pai |
Exemplo no cenário | Dividir COORDENADOR por | Dividir COORDENADOR pelo |
Objetivo principal | Distribuir tuplas por predicado local | Manter tuplas relacionadas no mesmo site (facilitar junções) |
A fragmentação híbrida é uma combinação de fragmentação horizontal e vertical, onde a relação é dividida tanto em linhas quanto em colunas. No caso, a tabela COORDENADOR é dividida apenas em linhas (tuplas), seguindo o critério de estado da localidade. Não há divisão de colunas, portanto não se trata de fragmentação híbrida.
A fragmentação de COORDENADOR é horizontal derivada, pois as tuplas são divididas com base na fragmentação da tabela LOCALIDADE, utilizando a chave estrangeira id_loc. A distribuição das tuplas de COORDENADOR é derivada da fragmentação de LOCALIDADE, garantindo que coordenadores e suas respectivas localidades fiquem no mesmo fragmento.
A fragmentação horizontal primária seria aplicada diretamente sobre os atributos de COORDENADOR, sem depender de outra tabela. Como a fragmentação de COORDENADOR é guiada pela fragmentação de LOCALIDADE, ela não é primária, mas sim derivada.
A fragmentação vertical divide a tabela em subconjuntos de colunas (atributos). No caso, a tabela COORDENADOR é dividida em linhas (tuplas), não em colunas. Portanto, não se trata de fragmentação vertical.
A replicação consiste em copiar os dados e armazená-los em vários nós, para redundância e melhor desempenho. No caso, os dados de COORDENADOR são divididos em fragmentos, não copiados integralmente para vários sites. Portanto, não se trata de replicação.
Gabarito: letra B
Link permanente: /questoes/fg165227