180 likes | 291 Views
Bases de Dados. Aula 2 SGBD e Arquitectura ANSI/SPARC Transacções. Sistema de Gestão de Base de Dados. Com o SGBD aparecem novos conceitos: Modelo de dados Busca de um modelo que traduza a estrutura lógica dos dados, que satisfaz os requisitos do Sistema de Informação - Modelo Conceptual
E N D
Bases de Dados Aula 2 SGBD e Arquitectura ANSI/SPARC Transacções
Sistema de Gestão de Base de Dados • Com o SGBD aparecem novos conceitos: • Modelo de dados • Busca de um modelo que traduza a estrutura lógica dos dados, que satisfaz os requisitos do Sistema de Informação - Modelo Conceptual • Modelo da Base de Dados - Modelo Físico, dependente do SGBD • Metadados • Informação sobre os dados, guardada numa entidade conhecida por Dicionário de Dados • São várias as técnicas e modelos utilizados de acordo com a tecnologia a aplicar: • hierárquico; rede; relacional; object-oriented;...
Sistema de Gestão de Base de Dados • O Sistema de Gestão de Base de Dados é o conjunto de software destinado a gerir todo o sistema de armazenamento e manipulação de dados, fazendo o interface entre o nível aplicacional e a base de dados propriamente dita; • Esconde do nível aplicacional os detalhes do armazenamento físico dos dados e permite às aplicações um elevado grau de abstracção.
Arquitectura ANSI/SPARC • O American National Standards Institute (ANSI) através do Standards Planning and Requirements Committee (SPARC) estabeleceu um padrão para o desenvolvimento de tecnologias de base de dados, definindo uma arquitectura de 3 níveis independentes: • Interno • Conceptual • Externo
Arquitectura ANSI/SPARC Aplicações Dados Interno Conceptual Externo SGBD
Arquitectura ANSI/SPARC Conceptual Nível Interno • Refere-se ao armazenamento físico dos dados, organização de ficheiros, métodos de acesso e organização das estruturas físicas; • Deve ser organizado para permitir um melhor desempenho nas operações que previsivelmente se realizem com maior freuquência
Arquitectura ANSI/SPARC Nível Conceptual • é também designado por esquema conceptual; • Refere-se ao modelo conceptual dos dados, independente dos utilizadores e das aplicações; • Constitui a estrutura da base de dados; • É o nível que permite esconder os detalhes do armazenamento físico dos dados, do nível aplicacional
Arquitectura ANSI/SPARC Nível Externo • Refere-se à independência programa/dados; • Como cada utilizador não necessita de trabalhar com a totalidade do esquema conceptual, o SGBD permite definir para cada um, uma view, que determina a janela de dados com que necessita de trabalhar; • Este conceito aplica-se também às aplicações
Arquitectura ANSI/SPARC • O SGBD define o interface entre o 3 níveis da arquitectura, atravé dos mapeamentos necessários, armazenando no dicionário de dados (DD) a informação relativa a cada nível; • Assim é possível alterar a estrutura ou características de um nível, sem ter de proceder a alterações ao nível superior; • Todas as acções se suportam nos conceitos de: • Independência Física - alterações ao nível interno não se repercutem no nível conceptual: • Independência Lógica - alterações no nível conceptual não se repercutem nas views do nível externo.
Conceito de Transacção Sendo a missão do SGBD servir de intermediário entre o nível aplicacional e a base de dados, torna-se esta responsável por manipular directamente os dados e garantir a sua validade. As operações sobre a base de dados só fazem sentido se forem executadas como um todo, pois só assim é possível validar se o resultado é válido. Surge assim o conceito de transacção pois todas as tarefas de gestão da base de dados vivem à custa deste conceito.
Transacções Conjunto bem definido de operações sobre a Base de Dados, com as seguintes características: • Atomicidade - as operações que constituem uma transacção formam um conjunto indivisível (atómico): • Ou terminam com sucesso - COMMIT • Ou são todas desfeitas - ROLLBACK • Integridade - caso envolva actualização de dados, uma transacção deverá levar a Base de Dados de um estado de integridade para outro estado de integridade;
Mudança de Estado Sucedida Mudança de Estado não Sucedida Cod_Func = 1234 Nome = Luis Mota Salário = 120 Cod_Func = 1234 Nome = Luis Mota Salário = 120 Cod_Func = 1234 Nome = Luis Mota Salário = 130 Cod_Func = 1234 Nome = Luis Mota Salário = 110
Transacções • Isolamento - se várias transacções ocorrerem em simultâneo, não devem as mesmas interferir entre si, tendo cada uma a ilusão de ser a única a ser executada; • Persistência - todos os efeitos de uma transacção bem sucedida tornam-se persistentes e visíveis para as outras transacções;
Tipos de Transacções Flat Transaction (tudo ou nada) - mais simples e mais comuns, consistem em delimitar o conjunto de operações que as constituem (via nível aplicacional) Ex: BEGIN TRANSATION …. <OPERAÇÕES SOBRE A BD> … END TRANSACTION /* Faz o COMMIT */ BEGIN TRANSACTION Para cada cliente Ler TOTAL_COMPRAS Ler PREMIOS PREMIOS=PREMIOS+0,1 *TOT_COMPRAS Escrever PREMIOS END TRANSACTION
Tipos de Transacções • SAVEPOINTS TRANSACTION BEGIN TRANSACTION … <OPERAÇÕES SOBRE A BD> … SAVEPOINT <X> … <OPERAÇÕES SOBRE A BD> … SAVEPOINT <Y> … <OPERAÇÕES SOBRE A BD> … END TRANSACTION /* FAZ COMMIT*/ Torna-se assim mais fácil reiniciar (rollforward) ou desfazer (rollback) a partir de um SAVEPOINT
Tipos de Transacções • CHAINED TRANSACTIONS BEGIN TRANSACTION … <OPERAÇÕES SOBRE A BD> … COMMITPOINT … <OPERAÇÕES SOBRE A BD> … COMMITPOINT … <OPERAÇÕES SOBRE A BD> … END TRANSACTION /* FAZ COMMIT*/ Torna-se mais fácil reiniciar (rollforward) ou desfazer (rollback) a partir de um COMMITPOINT, reduzindo-se a amplitude das operações de rollforwars e rollback.
Tipos de Transacções NESTED TRANSACTIONS • São as mais flexíveis e definem uma hierarquia de subtransacções, que podem ser flat ou nested transactions; • Cada subtransacção pode desfazer-se ou finalizar; • O commit de cada subtransacção só é efectivo após a transacção-pai ter finalizado; • Os resultados de uma subtransacção só são visíveis para a sua transacção-pai; • Quando uma subtransacção é desfeita, todas as suas subtransacções são desfeitas também.
BEGIN TRANSACTION … START SUBTRANSACTION… STARTSUBTRANSACTION… END TRANSACTION BEGIN TRANSACTION … END TRANSACTION BEGIN TRANSACTION … START SUBTRANSACTION… STARTSUBTRANSACTION … STARTSUBTRANSACTION … END TRANSACTION BEGIN TRANSACTION … END TRANSACTION BEGIN TRANSACTION … START SUBTRANSACTION… END TRANSACTION BEGIN TRANSACTION … END TRANSACTION BEGIN TRANSACTION … END TRANSACTION Esquema representativo de NESTED TRANSACTIONS