Concurso Senado – FGV – Analista Legislativo – Informática Legislativa – Análise de Suporte de Sistemas – Veja Análise da Prova Discursiva
Veja a análise das questões discursivas do concurso da Senado Federal (FGV) para o cargo de Analista Legislativo, especialidade Informática Legislativa (Análise de Suporte de Sistemas), elaborada pelo professor da Equipe do Você Concursado.
A prova discursiva do concurso do Senado Federal (FGV) para Analista Legislativo, especialidade Informática Legislativa (Análise de Suporte de Sistemas) contava com duas questões.
Vamos analisar abaixo cada uma das questões.
Inicialmente, o enunciado Questão 1 previa que:
“Um SGBD deve ser capaz de garantir que apenas planos de execução serializáveis e recuperáveis sejam permitidos e que nenhuma ação de transações efetivadas seja perdida ao desfazer transações canceladas. Normalmente, um SGBD utiliza um protocolo de bloqueio.”
(Ramakrishnan, Gehrke, Database Management Systems)
Suponha um Sistema Gerenciador de Banco de Dados Relacional que tradicionalmente utiliza o bloqueio de duas fases (Strict 2PL)
1. Cite as duas regras utilizadas pelo protocolo de bloqueio em duas fases.
2. Explique o problema de impasse (deadlock) citando uma das duas políticas de tratamento.
3. Apresente um ponto negativo em relação à política de tratamento de deadlock.
Análise de cada item
Tópico 1- Cite as duas regras utilizadas pelo protocolo de bloqueio em duas fases.
Com o objetivo de garantir escalonamento serializável, deve ser empregado o protocolo de Bloqueio em Duas Fases (2PL). Este protocolo estabelece que uma transação deve obter todos os seus bloqueios antes de liberar qualquer um deles. Ou seja, uma transação não pode liberar um bloqueio para, a seguir, obter outro bloqueio. Em transações obedecem este protocolo, duas fases devem ser observadas: fase de crescimento, durante a qual os bloqueios são adquiridos, e fase de encolhimento, onde os bloqueios são liberados. A operação que separa as duas fases é a primeira operação de unlock (liberação de bloqueio), que é a primeira operação da segunda fase.
Em muitos sistemas, é utilizada uma variante do 2PL chamada Strict 2PL. Nesse caso, a fase de encolhimento somente começa quando a transação termina, sendo aceita ou abortada. A grande vantagem desta variante é que uma transação sempre lê valores escritos por uma transação já aceita. Logo, não será necessário abortar uma transação pelo fato dela estar usando valores que se tornaram obsoletos, evitando assim abortos em cascata.
Resumindo:
As regras utilizadas pelo protocolo de bloqueio em duas fases estabelecem que: (1) novos bloqueios nos itens podem ser adquiridos, mas não podem ser liberados, no caso de expansão; e (2) bloqueios existentes podem ser liberados, mas novos bloqueios não podem ser adquiridos, no caso de encolhimento.
Tópico 2 – Explique o problema de impasse (deadlock) citando uma das duas políticas de tratamento.
Segundo Tanenbaum, o deadlock ocorre quando cada transação em um conjunto de duas ou mais transações espera por algum item que esteja bloqueado por alguma outra transação do mesmo conjunto.
São estratégias para tratamento do deadlock:
- Ignorar o problema por completo, utilizando o Algoritmo Avestruz até que o deadlock não mais exista;
Porém serão consideradas como políticas para tratar deadlock:
- Detectar o deadlock e recuperar o sistema: nessa estratégia, o sistema permite que ocorra o deadlock para, a seguir, executar o procedimento de recuperação, que se resume na detecção da ocorrência e na posterior recuperação do sistema.
- Evitar o deadlock: para evitar (ou prevenir) o deadlock, devem ser consideradas ações para combater cada uma das condições que desencadeiam o deadlock, quais sejam: exclusão mútua, posse e espera, não preempção e espera circular.
Tópico 3 – Apresente um ponto negativo em relação à política de tratamento de deadlock.
As situações de deadlock podem ser tratadas ou não em um sistema, e cabe aos desenvolvedores avaliar o custo/benefício que essas implementações podem trazer. Normalmente, as estratégias usadas para detectar e tratar as situações de deadlocks geram grande sobrecarga, podendo até causar um dano maior que a própria ocorrência do deadlock, sendo, às vezes, melhor ignorar a situação.
Algoritmo do avestruz (ignorar a situação)
Esta solução é utilizada em muitos sistemas operacionais, inclusive o UNIX. Assim, quando acontece uma situação de impasse, o problema é ignorado, passando a responsabilidade do usuário para tomada de decisões. Como ponto negativo para o uso do Algoritmo do Avestruz pode-se citar o alto custo de recursos computacionais.
Detectar o deadlock e recuperar o sistema
Nessa estratégia, o sistema permite que ocorra o deadlock para, a seguir, executar o procedimento de recuperação, que se resume na detecção da ocorrência e na posterior recuperação do sistema. Nesse caso, ocorre sobrecarga na execução desse procedimento pois existem dois grandes problemas: inicialmente, como e quando detectar o deadlock e depois, como corrigi-lo. Como ponto negativo do emprego dessa política pode ser citado o baixo uso da capacidade de processamento destinada para o banco de dados, especialmente quando se tem muitos processos em situação de deadlock e poucos processos em efetiva execução.
Evitar o deadlock
Para evitar (ou prevenir) o deadlock, devem ser consideradas ações para combater cada uma das condições que desencadeiam o deadlock, quais sejam: exclusão mútua, posse e espera, não preempção e espera circular.
- Para evitar a exclusão mútua, uma solução possível seria a implementação de uma fila de trabalhos (spool), que pode não funcionar para todos os tipos de recursos computacionais existentes.
- Para lidar com o problema de posse e espera, deve-se implementar ações para impedir a posse de recursos por um processo enquanto este está esperando por outros recursos. Nesse caso, um processo pode ficar inativo por muito tempo ou mesmo nunca entre em execução.
- Para atacar a não preempção, uma estratégia utilizada está em tomar os recursos alocados a processos bloqueados a força, deixando outros processos sem execução, mesmo que sejam críticos.
- Para evitar o problema da espera circular, podem ser utilizados rótulos para todos os recursos e estabelecer políticas para que cada processo tome posse de um recurso por vez.
A principal desvantagem da prevenção de deadlocks é o alto custo, em termos de desempenho, uma vez que devem ser atacadas as quatro causas que podem gerar deadlocks.
Proposta de Resolução da questão
Clique aqui e veja a resposta de resolução da questão (exclusivo para assinantes).
Já o enunciado Questão 2 previa que:
“Dentre as estratégias de sintonia fina mais comumente utilizadas por administradores de bancos de dados, estão a construção de estruturas de acesso, tais como índices, índices parciais e visões materializadas, a desnormalização e a reescrita de consultas. Por outro lado, o particionamento de tabelas consiste na transformação de uma tabela em dois ou mais fragmentos, onde cada fragmento é, na verdade, um subconjunto dos dados da tabela gerado com base em critério pré-definido.”
(Almeida, Ana, Medeiros, Antony, Costa, Rogério, Lifschitz, Sergio: Particionamento como Ação de Sintonia Fina em Bancos de Dados Relacionais)
Considere o uso de particionamento de tabelas em SGBD Relacional.
1. Explique o que é particionamento horizontal e vertical.
2. Cite três vantagens e três desvantagens do uso de particionamento.
3. Cite e explique as quatro maneiras de particionar uma tabela no SGBD Oracle.
Análise de cada item
Tópico 1 – Explique o que é particionamento horizontal e vertical.
Define-se por partição a divisão de um banco de dados lógico ou de um dos seus elementos constituintes em partes independentes distintas. Normalmente, o particionamento é feito por razões de gerenciabilidade, desempenho ou disponibilidade e pode ser classificado em horizontal e vertical.
- O particionamento horizontal envolve distribuir diferentes linhas em tabelas diferentes. Como exemplo, o banco de dados com todos os servidores de um órgão da Administração Pública poderia ser divido em tabelas para diferentes para analistas e para técnicos.
- O particionamento vertical envolve a distribuição das colunas de uma tabela em duas ou mais tabelas. Como exemplo, o particionamento vertical pode ser utilizado para armazenar as colunas usadas com pouca frequência em uma tabela à parte, proporcionando assim maior eficiência.
Tópico 2 – Cite três vantagens e três desvantagens do uso de particionamento.
São vantagens do uso de particionamento em banco de dados:
- Melhoria no desempenho de leitura.
- Redução do tempo necessário para a recuperação de dados em função do menor volume de dados a ser percorrido pelo índice;
- Maior probabilidade de que o índice seja comportado somente pela memória primária, o que agiliza a pesquisa por reduzir a necessidade de ocorrência de swaps com a memória secundária; e
- Menor necessidade de controles de concorrência nas consultas em partições que estejam armazenadas em discos distintos.
- Possibilidade de uso de diferentes dispositivos de gravação.
- Possibilidade de armazenar dados em diferentes tipos de repositórios deixando discos mais lentos para partições menos utilizadas e discos em mais rápidos para registros muito grandes; e
- Possibilidade de se ter gravações locais e consultas remotas sem retenções ou demoras em ações críticas caso, por exemplo, seja feito o particionamento por região.
- Melhor desempenho em gravação.
- Aumento de performance na gravação de dados em partições distintas dada a possibilidade de ser realizada de forma concorrente; e
- Possibilidade de se realizar backups parciais, em partições distintas, sem que isso venha a comprometer os demais acessos a disco.
São desvantagens do uso de particionamento em banco de dados:
- Maior custo de administração.
- O processo de administração de uma tabela muito particionada tende a ser mais complexo conforme aumentam as partições;
- Possibilidade de se perder dados caso seja realizada uma parametrização equivocada;
- Problemas relacionados com a integridade:
- Dificuldade de acesso a certos dados em função da mudança no valor da chave, uma vez que nem todos os campos de uma tupla serão transportados para a nova partição;
- Ocorrência de gravações indevidas caso surjam dados com valores diferentes dos que estão especificados nas regras de negócio;
- Aumento do número de regras a serem consideradas caso aumente o número de desmembramentos de uma tabela
- Maior complexidade do processo de recuperação
- Maior necessidade de parametrizações nos comandos de consulta em função dos desmembramentos realizados na tabela;
- Maior complexidade no processo de resgate de dados específicos em função de colunas inseridas no processe de particionamento.
Tópico 3 – Cite e explique as quatro maneiras de particionar uma tabela no SGBD Oracle.
Em SGBDs Oracle, uma tabela pode ser particionada por range, lista, hash ou composto.
- Range: utiliza intervalos de valores, normalmente datas, como mecanismo de particionamento;
- Lista: utiliza listas de valores, normalmente referenciados por chaves estrangeiras, como mecanismo de particionamento. Nesse caso, um exemplo clássico envolve lista de países, estados ou municípios.
- Hash: é um mecanismo de particionamento que lida com faixas de valores, mas que não se enquadram em ranges ou em listas.
- Composto: consiste no mecanismo de particionamento que utiliza mais de uma forma de particionamento e é normalmente ligado a situações que necessitam de subparticionamento.
Proposta de Resolução da questão
Clique aqui e veja a resposta de resolução da questão (exclusivo para assinantes).
Impressões
Deixe nos comentários o que você achou do tema da prova discursiva do concurso de Analista Legislativo – Informática Legislativa (Análise de Suporte de Sistemas) – do Senado Federal (FGV) e quais os pontos também poderiam ser abordados, que não tratamos na nosso padrão de resposta.
Comente também os pontos que você pecou na sua prova e qual foi a maior dificuldade que sentiu em relação a prova discursiva.
Próxima Fase – Recurso
O recurso contra a correção da redação é uma importante fase do concurso.
A correção é realizada por pessoas e todos nos podemos errar em algum momento.
Dessa forma, pode ocorrer do examinador errar na sua correção, penalizando de forma demasiada o seu texto.
Assim, essa fase não deve ser menosprezada ou esquecida pelos candidatos.
Contudo, uma dúvida muito frequente é se a nota pode ser reduzida com o recurso.
Para isso, disponibilizo o link abaixo no qual o professor Bruno explica certinho se isso pode ocorrer ou não e caso precise de recurso, conte com o auxílio da nossa equipe de professores.