Para que não ocorram deadlocks no sistema a ser desenvolvido...
incumbência de desenvolver um sistema com as características
apresentadas a seguir.
* O sistema deverá ser integrado, interoperável, portável e
seguro.
* O sistema deverá apoiar tanto o processamento online, quanto
o suporte a decisão e gestão de conteúdos.
* O sistema deverá ser embasado na plataforma JEE (Java
enterprise edition) v.6, envolvendo servlets, JSP (Java server
pages), Ajax, JSF (Java server faces) 2.0, Hibernate 3.5, SOA
e web services.
O líder da equipe iniciou, então, um extenso processo de
coleta de dados com o objetivo de identificar as condições
limitantes da solução a ser desenvolvida e tomar decisões
arquiteturais e tecnológicas que impactarão várias características
funcionais e não funcionais do sistema, ao longo de seu ciclo de
vida. A partir dessa coleta, o líder deverá apresentar à equipe um
conjunto de informações e de decisões.
No que se refere a técnicas de análise de desempenho e otimização
de consultas SQL, no contexto do desenvolvimento do sistema
descrito no texto, julgue os itens seguintes.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - Errado.
O enunciado aborda a questão de deadlocks em sistemas de banco de dados, que são situações onde duas ou mais transações ficam bloqueadas indefinidamente, pois cada uma está esperando por um recurso que a outra transação detém. Entendendo isso, vamos analisar porque a alternativa é incorreta.
O enunciado sugere que, para evitar deadlocks, deve-se evitar transações nas quais o usuário tenha que realizar entrada de dados, especialmente em sistemas de processamento transacional online (OLTP). No entanto, esta não é uma estratégia eficaz para prevenir deadlocks. Deadlocks são prevenidos e gerenciados por meio de técnicas como detecção de deadlocks, algoritmos de prevenção e de resolução, como o algoritmo do banqueiro, e não pela forma como as transações são desenhadas em relação à entrada de dados do usuário.
Na prática, em ambientes OLTP, é comum que os usuários precisem inserir dados durante as transações. Portanto, evitar a entrada de dados do usuário não é uma solução viável. Em vez disso, são utilizadas técnicas de gerenciamento de concorrência, como controle de concorrência otimista e pessimista, e mecanismos de lock para garantir que as transações sejam processadas de maneira eficiente, mantendo a integridade do banco de dados.
Em resumo, a estratégia de evitar a entrada de dados do usuário para prevenir deadlocks não é adequada nem prática. Por isso, a assertiva é considerada errada, visto que o foco para evitar deadlocks deve estar no gerenciamento e na detecção apropriados no nível do SGBD (Sistema Gerenciador de Banco de Dados), e não na limitação da interação do usuário com o sistema.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Questão que merece ser anulada.
Justificativa abaixo dado por Marcio Vitorino.
Segundo Elmasri e Navathe (2002, p. 554) as principais estratégias utilizadas em transações OLTP para evitar deadlocks são
Bloqueio em Duas Fases Conservador, Ordenamento de Registros de Timestamp e > Validação.
> > No entanto, a questão afirma que "Para que não ocorram deadlocks
> > no sistema a ser desenvolvido pela equipe, deve-se evitar o desenho de
> > transações do SGBD nas quais o usuário precise realizar entrada de dados,
> > especialmente em sistemas de processamento transacional online."
> >
> > Esta afirmação afirma que basta evitarmos entradas de dados para
> > que não ocorram deadlock, quando na verdade as operações de exclusão e
> > atualização de dados também causam deadlock.
> >
> > ELMASRI, R.; NAVATHE, S. B. Sistemas de Banco de Dados - Fundamentos e
> > Aplicações. 3. ed. Rio de Janeiro: LTC S.A., 2002. 837p.
> >
> > Marcio Victorino
Concordo com o colega. A resposta correta da questão causa muita estranheza. Ao estudarmos o assunto nos deparamos com vários protocolos para evitar deadlocks, já que a entrada de dados é necessária.
Discordo num ponto. Podemos talvez interpretar por "entrada de dados" qualquer alteração, não apenas inclusão, mas também alteração e exclusão. Digo isso por que neste estudo resumimos as operações em "read"s e "write"s.
Mesmo considerando isso, discordo do gabarito, principalmente por que a necessidade de entrada de dados será ditada pela necessidade do negócio, não cabendo ao analista/DBA evitá-las ou não. Se num OLTP qualquer é preciso, por exemplo, registrar vendas, não há opção de evitar tais registros (inclusão, exclusão e alteração). Um OLTP implica especialmente nisso na maioria dos casso. Se a questão estivesse salientando a parte OLAP (mencionada implicitamente no enunciado em "suporte a decisão") eu até concordaria.
Na página da CESPE o gabarito ainda consta como preliminar:
http://www.cespe.unb.br/concursos/TCU2010/
Vamos aguardar.
O gabarito foi alterado de Certo para Errado em 08/09. Vide questão 145 da prova.
Link da prova: http://www.cespe.unb.br/concursos/TCU2010/arquivos/TCU10_001_5.pdf
Link da correção: http://www.cespe.unb.br/concursos/TCU2010/arquivos/TCU_10_TI_JUSTIFICATIVAS_DE_ALTERAO_DE_GABARITO.PDF
Abs, Edu.
Justificativa da banca: O item é claro ao indicar que as transações as quais se refere são aquelas do SGBD delimitadas por BEGIN e END transaction. Dessa forma, ao afirmar que “deve-se evitar o desenho de transações do SGBD nas quais o usuário precise realizar entrada de dados", está claro que a entrada de dados seria aquela realizada no escopo da transação do SGBD, e não antes ou depois da transação. Sob outro aspecto, não se pode afirmar que as entradas de dados feitas pelo usuário provocam apenas inclusão, uma vez que a exclusão ou atualização de dados também envolvem entrada de dados. O item está errado, pois afirma que evitar o desenho de transações do SGBD nas quais o usuário precise realizar entrada de dados é condição necessária e suficiente para que se obtenha um sistema livre de deadlocks, quando, de fato, existem outros aspectos envolvidos.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo