SóProvas


ID
61225
Banca
CESPE / CEBRASPE
Órgão
STF
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

O armazenamento e a recuperação de grandes quantidades de dados é um trabalho importante e muito explorado em um sistema
gerenciador de banco de dados (SGBD). Com relação aos conceitos que envolvem esse sistema, julgue os itens que se seguem.

A execução de transações de maneira concorrente possibilita o surgimento de inconsistências dos dados armazenados em um banco de dados. A responsabilidade pela consistência dos dados é única e exclusiva do banco de dados, mais especificamente, do componente de controle de concorrência.

Alternativas
Comentários
  • Controle de concorrência é um método usado para garantir que as transações sejam executadas de uma forma segura e sigam as regras ACID. Os SGBD devem ser capazes de assegurar que nenhuma ação de transações completadas com sucesso (committed transactions) seja perdida ao desfazer transações abortadas (rollback).Uma transação é uma unidade que preserva consistência. Requeremos, portanto, que qualquer escalonamento produzido ao se processar um conjunto de transações concorrentemente seja computacionalmente equivalente a um escalonamento produzindo executando essas transações serialmente em alguma ordem. Diz-se que um sistema que garante esta propriedade assegura a seriabilidade.Fonte: http://pt.wikipedia.org/wiki/Banco_de_dados
  • C.J. Date esina:

    O componente do sistema que fornece essa atomicidade é chamado gerenciador de transações (também conhecido como monitor de processamento de transações ou monitor TP), e as operações COMMIT e ROLLBACK são a chave para se entender o modo como ele funciona[...]

    (Introdução a sistemas de banco de dados, Date, C.J., pág 389)

  • O livro do Silberschatz trás tudo que esta questão pediu bem explicadinho:

    "É tarefa do Banco de Dados garantir que qualquer schedule executado deixe o banco de dados em um estado consistente. O Componente de controle de concorrência do sistema de banco de dados executa esta tarefa."

    Silberschatz (2006), pg 416

    Abraços

  • Errei a questão porque achei que o certo seria SGBD e não BD que garante isso.
  • Discordo do gabarito. Ao dizer "A responsabilidade pela consistência dos dados é única e exclusiva do banco de dados (...)", a questão é totalmente contrária à lição do Navathe: "A preservação da consistência é geralmente considerada responsabilidade do programador que codifica os programas de banco de dados, ou do módulo do SGBD que garante as restrições de integridade." (Elmasri & Navathe, 4ed, pg.405)
    O banco de dados só terá responsabilidade exclusiva da consistência durante a execução da transação, visto que não há como o programador interferir nisso. Isso, porém, não está explícito na questão.
    Basta pensar em um exemplo de lógica de programação. Se em uma transação de depósito bancário o programador faz besteira na implementação e codifica retirar(X) de uma conta e inserir(X+10) em outra, o banco de dados é inconsistente pq não vai atender às regras do negócio.
  • Também discordo do gabarito, principalmente quando se fala da consistência semântica dos dados.
  • Definicao dos autores:

    Navathe afirma q "a preservacao da consistencia geralmente eh de responsabilidade dos programadores ou do modulo de SGBD q impoe restricoes de integridade.

    Silberchatz afirma q "garantir a consistencia para 1 transacao individual eh de responsabilidade do programador de aplicacao.
    Ou seja, tanto o modulo do sistema de banco de dados qto o programador sao responsaveis pela consistencia. Sendo q, no caso de concorrencia de transacoes, a responsabilidade eh unicamente do proprio sistema, pois nao ha como o programador prever q transacao vao executar intercaladamente com outra.
    Questao maldosa e cruel, pq nao basta 1 conhecimento superficil sobre transacoes, mas a meu ver esta' correta. ant!
  • Outra questão semelhante do Cespe, onde considera que o SGDB não
    é responsável exclusivo pela restrição de integridade do banco de dados.
    Um peso duas medidas.

    http://www.questoesdeconcursos.com.br/questoes/d0964d18-6f
  • Será que não teve alteração de gabarito de uma dessas questões, e essa alteração não foi atualizada aqui no QC? As duas questões STF e TJ-DF são praticamente idênticas e com gabaritos opostos, e ainda são do mesmo ano. Já vi isso em outras questões, mas não de forma tão explícita...

  • A questão está errada. Em nenhum momento se falou em controle de consistência entre transações concorrentes como apontado por um colega acima. O SGBD não é capaz sozinho de manter a consistência dos dados, em muitas situações o desenvolvedor tem que programar para que algumas restrições sejam estabelecidas.

  • Do apanhado de todos os comentários aqui, concluí o seguinte:

    1- Nosso amigo Sérgio mandou muito bem quando observou que na questão está escrito BG, e não SGBD, o que por si só, já tornaria o gabarito ERRADO.

    2- Um erro do programador, pode sim tornar o banco inconsistente, caso a aplicação venha com um erro de somar à conta da pessoa um valor, quando esta faz um saque em dinheiro, por exemplo.

    3- Outra coisa, o SGBD não trabalha sozinho, mas sim, faz parte de um sistema, o qual involve hardware, sistema operacional...ele pode até, em caso de falha, em última instância garantir o controle de falhas e inconsistência, mas dizer que a responsabilidade é única e exclusiva dele, é um atentado.

    Com certeza o gabarito deve ter sido mudado...

  • Pessoal, a questão apresentada pelo colega trata de integridade, e não de inconsistência. Já vi o conceito de integridade sendo dado como a preservação dos dados no quesito segurança, por exemplo, quando este trafega de uma rede para a outra. 

  • Gente, mas isso é um grande absurdo. Questão flagrantemente errada. Veja o que diz[1]

    "A preservação da consistência geralmente é considerada uma responsabilidade dos programadores que escrevem os programas de banco de dados ou do módulo de SGBD que impõe restrições de integridade. Lembre-se de que um estado de banco de dados é uma coleção de todos os itens de dados armazenados (valores) no banco de dados em determinado ponto no tempo. Um programa de banco de dados deve ser escrito de modo que garanta que, se o banco de dados estiver em um estado consistente antes de executar a transação, ele estará em um estado consistente depois de concluir a execução da transação, supondo que não haja interferência em outras transações".

    Ou seja, o próprio autor afirma que é responsabilidade de ambos, programadores e SGBD, e o CESPE me vem com esse papelão.

    Ninguém entrou com recurso. Engoliram essa?

    Fonte:

    [1] SBD, E&N, pg 508

  • tranquilidade! Quem errou, acertou!

  • Só faltam o Chapolim, o Poucas Trancas e o Tripa Seca...

  • Que desânimo essa banca...

  • Esse gabarito tá errado, não é possível, os programadores não têm responsabilidade?

  • Pedir comentário do Professor.