Portfólio-Modelo-Relacional-Normalizado-MRN.doc

Embed Size (px)

Citation preview

PAGE

SISTEMA DE ENSINO PRESENCIAL CONECTADO

Tecnologia em Anlise e Desenvolvimento de Sistemasautor: nei fbio piedade santosBANCO DE DADOS II

Itaberaba2010nei fabio piedade santosBANCO DE DADOS IITrabalho apresentado ao Curso Tecnologia em Analise e desenvolvimento de Sistema da UNOPAR - Universidade Norte do Paran, para a disciplina de BANCO DE DADOS II, Orientador: Roberto Yukio NishimuraItaberaba2010

Indice

1.0.0-Introduo...................................................................................4

1.0.1-Modelo Relacional Normalizado-MRN .....................................5

1.0.2-Modelo conceitual.......................................................................7

1.0.3-Modelo lgico..............................................................................7

1.0.4-Modelo fsico...............................................................................81.0.5 -SQL..............................................................................................8 1.1.0- Linguagem de definio de dados -DDL..............................101.1.1 - Declaraes Create................................................................101.1.2- Declaraes Drop....................................................................11

1.1.3 -Linguagem de manipulao de dados - DML.......................12

1.1.4-Linguagem de controle de dados DCL................................12

1.1.5Processamento de transaes de banco de Dados.............13

1.2.0-Propriedades ACID...................................................................15

1.2.1-Modelo de armazenamento de um banco de dados............. 18

1.2.2-Componentes do processamento de transaes...19

1.2.3-Controle de Concorrncia..........................................23

1.2.4-Escalonamento (schedules)......................................24

1.2.5-Escalonamento no serial.........................................25

1.3.0-Concluso...................................................................28

1.3.1 Bibliografia..................................................................291.0.0- Introduo

Ao iniciar o trabalho ser feito um apanhado geral, abordarei as fazes de um projeto de banco de dados, conceito, utilizao, funcionalidades e principais objetivos alcanados com a implementao do Modelo Relacional Normalizado MRN, Padro SQL, Processamento de Transaes e Controle de Concorrncia. 1.0.1- Modelo Relacional Normalizado-MRNIntroduziremos nosso trabalho fazendo as seguintes perguntas:

O que o Modelo Relacional Normalizado MRN?

Para que serve?

Qual a funcionalidade do MRN?

Quais so os objetivos?

Quais so os ganhos ao fazer a normalizao do Banco de Dados?

O modelo relacional Normalizado um modelo de dados, adequado a ser o modelo subjacente de um Sistema Gerenciador de Banco de Dados (SGBD), que se baseia no princpio em que todos os dados esto guardados em tabelas (ou, matematicamente falando, relaes). Toda sua definio terica e baseada na lgica de predicados e na teoria dos conjuntos.

O conceito foi criado por Edgar Frank Codd em 1970, sendo descrito no artigo "Relational Model of Data for Large Shared Data Banks". Na verdade, o modelo relacional foi o primeiro modelo de dados descrito teoricamente, os bancos de dados j existentes passaram ento a ser conhecidos como (modelo hierrquico, modelo em rede ou Codasyl e modelo de listas invertidas).O MRN apareceu devido s seguintes necessidades: aumentar a independncia dos dados nos sistemas operacionais de banco de dados; prover um conjunto de funes apoiadas em lgebra relacional para armazenamento e recuperao de dados; permitir processamento AD HOC(Em engenharia de software, a expresso ad hoc utilizada para designar ciclos completos de construo de softwares que no foram devidamente projetado em razo da necessidade de atender a uma demanda especfica do usurio, ligada a prazo, qualidade ou custo). O modelo relacional revelou-se ser o mais flexvel e adequados ao solucionar os vrios problemas que se colocam no nvel de concepo e implementao da Base de Dados. A estrutura fundamental do modelo relacional a relao (tabela). Uma relao e construda por um ou mais atributos (campos) que traduzem o tipo de dados a armazenar. Cada instancia do esquema (linha) e chamada de tupla (registro). O modelo relaciona no tem caminhos pr-definidos para se fazer acesso aos dados como nos modelos que o procedem. O modelo relacional implementa estruturas de dados organizados em relaes. Porem, para trabalhar com essas tabelas, algumas restries precisam ser impostas para evitar aspectos indesejveis, como: repetio de informao, incapacidade de representar parte da informao e perda de informao. Essas restries so: Integridade referencial, chaves e integridades de junes de relaes.

Tabela de Modelo Relacional normalizado Cliente Conta correnteO Modelo Entidade Relacionamento a base para a criao de um banco de dados.Para realizarmos um projeto de banco de dados, podemos dividi-lo em trs partes: inicialmente o modelo conceitual, depois o modelo lgico, e finalmente o modelo fsico.

Realizar os trs modelos de extrema importncia para que o analista de sistemas compreenda a base de dados que ele vai criar. O administrador de banco de dados (DBA) e o administrador de dados(AD) conseque separar muito bem esses trs modelos.

O primeiro passo e fazer o modelo conceitual; depois que ele j estiver completo podemos transform-lo em um modelo lgico, em que a estrutura fica mais evidente para os analistas de sistemas e programadores.

Uma vez definido qual o SGBD a se utilizado , podemos passar esse modelo lgico para o fsico. Com o modelo fsico concludo, j e possvel escrever os comandos necessrios para a criao do esquema no banco de dados.

Hoje em dia existem ferramentas CASE que auxiliam o dia a dia dos analistas , DBAs e ADs.

1.0.2- Modelo conceitual

No modelo conceitual, iniciamos a analise sob o ponto de vista do nosso usurio, o principal ciente para o sistema de banco de dados que ser desenvolvido.

Aqui a modelagem e livre para identificara as entidades, os atributos e os relacionamentos de acordo com a descrio textual narrativa do sistema.

Nesse aspecto, o nosso usurio deve olhar para o modelo e compreender totalmente como os seus dados esto sendo modelados.Aqui ainda nos nus preocupados com as caractersticas dos atributos, seu tipo de dados ou mesmo suas restries de mapeamento.

O nosso ponto de vista a compreenso conceitual dos dados que sero armazenados no banco de dados.

1.0.3- Modelo lgico

No modelo lgico, comeamos a organizar melhor os dados que sero armazenados e, identificamos os tipos dos atributos e algumas regras bsicas que podem ser implementadas dentro do prprio banco de dados (preenchimento obrigatrio do campo, valores default(valores esquecidos que deixaram de fazer ou declarar), listas e valores possveis).Nesta fase, interessante e altamente recomendadas que sejam aplicadas as formas normais atravs do Modelo Relacional Normalizado, isso evita maiores problemas na fase do modelo fsico.

Quando estamos determinando os tipos de atributos, a relevncia fica em alguns tipos bsicos, como numricos, alfabticos, alfanumricos, booleano, data, valor, binrio, etc. Ex.: no cadastro de clientes, precisamos de informaes bsicas como nome, RG, CPF, endereo e telefone. O atributo nome ser alfanumrico com 50 caracteres, o atributo RG ser numrico com 10 posies , o CPF ser numricos com 14 posies, o endereo ser alfanumricos com 50 caracteres e o telefone ser alfanumricos com 14 posies.

Aqui ainda no sabemos qual ser o SGBD adotado para a fase de implementao. Isso permite manter um modelo de dados independente e que possa satisfazer a diversas necessidades, evitando assim a manuteno de diversos modelos, um para cada SGBD demarcado.

1.0.4-Modelo fsico

No modelo fsico, a preocupao j fica mais direcionada s caractersticas de armazenamento fsico do banco de dados.

Quando um atributo e tipificado como alfanumrico, necessrio verificar com o SGBD trata esse tipo de dados (ex. varcher, char, string); o mesmo acontece se o tipo for numrico (ex. number, real, integer).Nessa hora devemos pensar se mais vantajoso armazenar as tabelas separadas dos ndices em discos diferentes, ou se devemos separar uma tabela em mais tabelas, segmentando e fragmentando, assim, o seu armazenamento.

quando algumas regras de normalizao so questionadas, pois o que pode ser correto como normalizao pode no ser to prtico ou til no dia a dia. Ser que vale apena trabalhar com o modelo desnormalizado, se podemos quebrar algumas dessas regras de modo consciente?

1.0.5- SQL

O SQL, que a sigla para Structured Query Language, uma linguagem padro para acesso a banco de dados, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulao de dados (DML - Data Manipulation Language) para suas primeiras tentativas de desenvolvimento de bancos de dados relacionais. A grande vantagem do SQL sobre modelos de dados anteriores que as operaes realizadas sobre os dados so especificadas numa linguagem no procedural e conjuntos de dados so manipulados com um nico comando. Isto faz com que os programadores no tenham de navegar por uma estrutura complexa de banco de dados, reduzindo a quantidade de cdigo necessrio para acessar os dados.

O SQL tornou-se de fato o padro depois de 1986, quando o American National Standards Institute (ANSI), a organizao responsvel pelos padres industriais nos Estados Unidos, endossou o SQL como linguagem padro para os bancos de dados relacionais. Desde ento, o SQL j sofreu duas atualizaes oficiais, uma em 1989, e outra em 1992. A reviso de 1992, SQL-92 (ANSI X3.135-1992) o padro usado atualmente, mas desde 1993 h um trabalho sendo desenvolvido para atualizar o padro de modo que este atenda s caractersticas das ltimas verses de bancos de dados relacionais lanadas no mercado. O novo padro SQL chama-se SQL3; o nmero 3 vem de 1993, o ano em que os trabalhos comearam.

Em 1986, o ANSI publicou o primeiro padro SQL, X3.135-1986. A International Organization for Standardization (OSI) pubicou um padro tecnicamente idntico, ISO 9075-1987, alguns meses depois em 1987. O padro representava um denominador comum das implementaes SQL existentes e consequentemente deixou de padronizar muitas caractersticas populares e necessrias da linguagem. Este padro continha caractersticas de SQL de quatro linguagens de programao: COBOL, FORTRAN, Pascal e PL/I.

Em 1989, tanto ANSI quanto ISO publicaram padres substitutos (ANSI X3.135-1989 e ISO/IEC 9075:1989) que aumentaram a linguagem e acrescentaram uma capacidade opcional de integridade referencial, permitindo que projetistas de bancos de dados pudessem criar relacionamentos entre dados em diferentes partes do banco de dados. No mesmo ano, o ANSI adicionou ao padro suporte para duas outras linguagens de programao, Ada e C.

Em 1992, ISO e ANSI publicaram a terceira reviso do padro SQL, o SQL92 (X3.135-1992 e ISO/IEC 9075:1992).

Na mais nova verso, SQL3, a nova caracterstica mais importante a adio de caractersticas de orientao a objetos na linguagem.1.1.0 -Linguagem de definio de dados -DDL

Linguagem de definio de dados ( DDL, do Ingls Data Definition Language) uma linguagem de computador usada para a definio de estruturas de dados. O termo foi inicialmente introduzido em relao ao modelo de banco de dados Codasyl, onde o esquema de banco de dados era escrito em uma Linguagem de Definio de Dados descrevendo os registros, campos e "conjuntos" que consituam o Modelo de dados do usurio. Inicialmente referia-se a um subconjunto da SQL, mas hoje usada em um sentido genrico para referir-se a qualquer linguagem formal para descrio de estruturas de dados ou informao, assim como esquemas XML.

Uma vez compilados, os parmetros DDL so armazenados num conjunto de arquivos denominado dicionrio de dados (ou catlogo). O dicionrio de dados contm os metadados (dados a respeito das estruturas de armazenamento). O SGBD sempre consulta os metadados a cada operao sobre o banco de dados. Por exemplo, um determinado programa precisa recuperar alguns campos (nome, CPF) de um arquivo de clientes. O SGBD ir verificar se os campos "nome" e "CPF" esto definidos para este arquivo. O interpretador DDL processa os comandos alimentados pelos DBAs na definio dos esquemas.1.1.1 -Declaraes Create

Create - utilizada para construir um novo banco de dados, tabela, ndice ou consulta armazenada. Uma declarao CREATE, em SQL, cria um objeto dentro do Sistema de Gerenciamento de Banco de Dados Relacional (SGBDR). Os tipos de objetos que podem ser criados dependem de qual SGBDR est sendo utilizado, porm a maioria suporta a criao de tabelas, ndices, usurios e banco de dados. Alguns sistemas (tais como PostgreSQL) suportam o comando CREATE, e outros comandos DDL, dentro de uma transao e portanto suportam rollback.Create database- cria um novo banco de dados

Create table- cria uma nova tabela

Create ndex- cria um novo ndice

Create view- cria uma nova viso

Create procedual- cria um novo procedimento

Create peckage cria um novo pacoteCreate funtion cria uma nova funo

1.1.2- Declaraes Drop

Drop - remove um banco de dados, tabela, ndice ou viso existente.

Uma declarao DROP em SQL remove um objeto de um sistema de gerenciamento de banco de dados relacional(SGBDR). Os tipos de objetos que podem ser removidos dependem de qual SGBDR est sendo usado, mas a maioria suporta a excluso de tabelas, usurios e banco de dados. Alguns sistemas (tais como o PostgreSQL) permitem que DROP e outros comandos ocorram dentro de uma transao e portanto suportem roll back.Drop database- remove um banco de dados

Esse comando no existe, pois, para executar os comandos SQL, necessrio esta conectado a um banco de dados e no possvel dropar o banco em que se est conectado.

Para se remover o banco de dados, basta remover do servidor de banco de dados todos os arquivos e diretrios referentes ao banco que se quer remover.

Drop table- remove uma tabela

Drop ndex- remove um ndice

Drop view remove uma viso

Drop procedure- remove um procedimento

Drop package- remove um pacote

Drop function remove uma funo.

1.1.3 -Linguagem de manipulao de dados - DML

Linguagem de manipulao de dados (ou DML, de Data Manipulation Language) uma famlia de linguagens de computador utilizadas para a recuperao, incluso, remoo e modificao de informaes em bancos de dados. Pode ser procedural, que especifica como os dados devem ser obtidos do banco; pode tambm ser declarativa (no procedural), em que os usurios no necessitam especificar o caminho de acesso, isto , como os dados sero obtidos. O padro SQL no procedural. DMLs foram utilizadas inicialmente apenas por programas de computador, porm (com o surgimento da SQL) tambm tm sido utilizadas por pessoas.

Principais comandos

As DMLs tm sua capacidade funcional organizada pela palavra inicial em uma declarao, a qual quase sempre um verbo. No caso da SQL, estes verbos so:

* Select

* Insert

* Update

* Delete1.1.4-Linguagem de controle de dados DCL

Linguagem de Controle de Dados, ou do ingls Data Control Language(DCL), uma linguagem de computador e um subconjunto de SQL, usada para controlar o acesso aos dados em um banco de dados.

Exemplos de comandos DCL incluem:

* GRANT para permitir que usurios especificados realizem tarefas especificadas.

* REVOKE para cancelar permisses previamente concedidas ou negadas.

Os seguintes privilgios podem ser CONCEDIDOS ou REVOCADOS DE um usurio ou papel:

* CONNECT

* SELECT

* INSERT

* UPDATE

* DELETE

* EXECUTE

* USAGE

Em Oracle, executar um comando DCL emite um commit implcito. Em PostgreSQL, executar um comando DCL transacional e pode suportar roll back.1.1.5-Processamento de transaes de banco de Dados

Uma transao quando um banco de dados sai do seu modo ntegro e consistente, realiza alguma operao de alterao de dados e retorna ao seu modo ntegro e consistente.Um banco de dados composto de tabelas que esto inter-relacionadas umas com as outras, de modo a representar o Diagrama Entidade Relacionamento DER que foi modelado segundo o conceito do Modelo Entidade Relacionamento MER.

As aes a serem efetuadas no banco de dados, consistem basicamente em gravar novos dados, consultar dados gravados existentes, modificar dados previamente gravados existentes e remover dados previamente gravados existentes.

Ento podemos definir que existem 4 tipos de operaes:

- gravar dados, que vamos tratar de agora em diante como inserir dados.

- consultar dados, que vamos continuar como est.

- modificar dados, que vamos tratar de agora em diante como atualizar dados.

- remover dados, que vamos tratar de agora em diante como deletar dados.Destas operaes, podemos afirmar que:

- a operao consultar dados no provoca modificaes nos dados armazenados no banco de dados.

- as operaes inserir dados, atualizar dados, deletar dados provocam alteraes nos dados armazenados.Um banco de dados deve sempre manter a sua integridade e consistncia nos dados armazenados, para garantir que as regras de negcio estabelecidas estejam sendo cumpridas.

Neste momento dizemos que o banco de dados no est em transao. Porm sempre que uma das trs operaes que provocam alteraes nos dados armazenados (inserir dados, atualizar dados e deletar dados) so executados, dizemos que o banco de dados realizou uma transao.CRUD o acrnimo da expresso em lngua Inglesa Create, Retrieve, Update e Delete, usada para definir quatro operaes bsicas usadas em bancos de dados relacionais (RDBMS) ou em interface para usurios para criao, consulta, atualizao e destruio de dados.Para iniciar uma transao, o banco de dados recebe um aviso de incio de transao que e chamado de incio de transao ou begin transaction.

Ao final da transao, o banco de dados recebe outro aviso, agora indicando o encerramento da transao que chamaremos de fim de transao ou end transaction.

Durante a realizao de uma transao podemos colocar apenas um comando de atualizao de banco de dados ou vrios comandos de atualizao de banco de dados.

Isto significa que uma transao pode ter uma nica operao ou diversas operaes.

Dentro de uma transao podemos ter tambm diversos comandos de consulta de dados, pois como estes comandos no modificam os dados armazenados, eles no interferem na integridade ou consistncia do banco de dados.

Quanto mais operaes colocarmos dentro de uma nica transao, mais demorado e critico torna-se esta transao, porm o tamanho de uma transao depender muito da regra de negcio a ser cumprida.1.2.0-Propriedades ACID

Todo Sistema Gerenciador de Bando de Dados (SGBD) aplica em seu funcionamento o conceito denominado ACID, que representa a inicial de quatro propriedades fundamentais.

Atomicidade, Consistncia,Integridade, Durabilidade. Um SGBD no pode aplicar apenas algumas destas propriedades, todas as propriedades devem ser cumpridas, seno no podemos considerar um SGBD de verdade.

Atomicidade

Dizemos que uma transao atmica, pois a transao no divisvel em partes, ou seja, a transao deve ser realizada por inteiro ou ela no pode ser realizada.

Lembramos que uma transao pode ter vrias operaes de alterao de dados, ento ou cumprimos todas elas ou no realizamos nenhuma delas.

Ex. em uma transao realizamos a incluso de um cliente novo, a gerao de uma nota fiscal e a baixa no estoque do produto vendido, ao final desta transao, devemos confirmar a transao por inteiro e gravar todas estas operaes, se esta transao no se confirmar ao final, nenhuma destas operaes pode ser gravada no banco de dados, garantindo assim a atomicidade da transao.Consistncia

Uma transao quando inicia, os dados armazenados esto todos consistentes, ao concluir a transao os dados devem estar consistentes novamente, ou seja, as regras de negcio devem continuar sendo executadas e cumpridas.

Ex. se realizar uma transao em uma conta bancria, onde o cliente possui um saldo de R$ 50,00 e no tem limite de crdito (no pode ficar negativo) e esta transao for uma retirada de R$ 60,00 , esta transao no pode ser concluda pois a consistncia do banco de dados no estaria garantida deixando a conta com um saldo negativo.Integridade

tambm conhecida como Isolamento de transaes.

Uma transao deve ser ntegra/isolada, ou seja, as regras de negcio devem ser cumpridas durante a realizao das operaes na transao independentemente de existirem mais transaes simultaneamente e ao final delas, esta integridade deve permanecer. Ex. se for estabelecida uma regra de negcio onde um cliente de uma vdeo locadora pode cadastrar at dois dependentes, mas que todo dependente deve obrigatoriamente estar vinculado a um cliente, se um determinado cliente for deletado do banco de dados, os dependentes deste cliente devero ser deletados tambm, pois se eles permanecerem no banco de dados, a integridade desta regra de negcio estar comprometida e toda esta operao ocorrer simultaneamente a outras transaes no banco de dados, inclusive podendo ser nas mesmas tabelas ou no.Durabilidade

Uma transao depois que for realizada e confirmada deve obrigatoriamente ser durvel, ou seja no pode desaparecer do banco de dados sem que uma outra transao realize esta operao.

Ex. um determinado dado que foi gravado em uma transao hoje, daqui a cinco anos, se nenhuma outra transao modificar este dado, quando este dado for consultado dever apresentar o mesmo resultado do que foi gravado hoje, quando a transao original foi realizada.Confirmao ou no de uma transao

Quando terminamos uma transao, com quantas operaes forem necessrias, necessitamos confirmar ou no a realizao desta transao.

A confirmao desta transao realizada com a execuo de um comando de confirmao ou commit.

Neste momento as quatro propriedades do banco de dados Atomicidade, Consistncia, Integridade e Durabilidade so executadas e confirmadas estas propriedades, a transao confirmada e encerrada.

Mas se por acaso a transao no trouxe o resultado esperado, apesar dos comandos de alterao j terem sido executados, ainda podemos nos arrepender e cancelar a transao atravs do comando de cancelamento ou rollback.Este comando desfaz as operaes que estavam sendo realizadas at o incio da transao, levando a um ponto onde as quatro propriedades ainda permanecem garantindo os dados do banco de dados.

Os comandos commit e rollback so muito conhecidos no ambiente dos programadores de computador, analistas de sistemas e administradores de banco de dados.

O comando end transaction geralmente est implcito dentro dos comandos commit e rollback.

Lembramos que um SGBD deve suportar diversas transaes sendo realizadas simultaneamente, por isso mesmo, as transaes podem concorrer umas com as outras, este assunto ser tratado em controle de concorrncia.Independncia de transao

Esta outra propriedade de banco de dados que surgiu no final da dcada de 70 e incio da dcada de 80.

Inicialmente os SGBDs eram praticamente todos com transaes dependentes, isto significava que apesar do banco de dados ser multiusurio, suportando diversas transaes ao mesmo tempo, caso uma das transaes tivesse algum problema e a mesma fosse interrompida ou abortada, todas as demais transaes eram interrompidas tambm, derrubando o banco de dados como um todo e provocando um rollback geral.

Esta situao deixava os fabricantes/fornecedores de SGBDs com um ponto de vulnerabilidade na confiana sobre seus produtos.

Para resolver esta situao, foi estabelecido o conceito de independncia de transao ou independent trans.

Este conceito pregava a seguinte caracterstica:

Se uma transao falhar e for necessrio interromp-la atravs do abort, que interrompa apenas esta transao e no mximo alguma outra transao que esteja na dependncia dos dados desta transao interrompida.

Aquelas outras transaes que estavam sendo realizadas em outros dados, deve continuar sendo executada sem nenhuma interferncia.

A esta caracterstica damos o nome de independent trans.1.2.1-Modelo de armazenamento de um banco de dados

Um banco de dados tem como finalidade armazenar dados de uma forma organizada, coerente, consistente, integra e durvel.Quando um comando que modifica o estado do banco de dados, por exemplo insert, update e delete, executado, uma srie de aes so desencadeadas.

O Sistema Gerenciador de Banco de Dados (SGBD), dispara internamente um comando do tipo write para o sistema operacional do computador/servidor do banco de dados.

Porm este comando no imediatamente repassado para o sistema operacional, porque se isto ocorresse haveria um estrangulamento na comunicao do SGBD com o sistema operacional.

O que acontece ento?

O comando write grava uma cpia dos dados afetados em um buffer do banco de dados ainda na memria do servidor do banco de dados.

Este buffer tem um determinado tamanho na memria principal, que configurado e parametrizado pelo Administrador de Banco de Dados DBA.

Quando esta rea de armazenamento de buffer fica cheia, o SGBD encaminha uma ordem para o sistema operacional gravar todos estes buffers em uma rea do disco pertencente ao banco de dados que vamos chamar de LOG.

Depois que este LOG gravado, uma confirmao repassada ao SGBD avisando que o LOG j foi devidamente gravado.

Com isto o SGBD j est pronto para descarregar todas as transaes confirmadas com write e que o sistema operacional est aguardando.

Este mecanismo visa diminuir a quantidade de IOs (input output) entre o sistema operacional e os discos, pois sabemos que um dos maiores gargalos em processamento de dados exatamente a transferncia de dados entre a memria principal e os discos rgidos.

Esta transferncia no envolve apenas dispositivos eletrnicos, mas dispositivos eletros-mecnico tambm.

O modelo das informaes das transaes gravadas no log baseado na identificao do incio da transao, descrio da transao e finalizao da transao.

< T , Start >

< T , tabela, campo, valor velho, valor novo >

< T , Commit >1.2.2-Componentes do processamento de transaes

Cada transao que est ocorrendo no banco de dados possui a sua prpria rea de trabalho, com uma cpia individual dos dados acessados.

Buffer do banco de dados o nome tcnico que representa estes locais.

Buffer do banco de dados so as pginas do banco de dados na memria, controlado pelo banco de dados e/ou sistema operacional.

Quanto mais buffers de banco de dados tiverem, mais dados podem ser carregados na memria principal do servidor do banco de dados, mais transaes podem ser realizadas simultaneamente e mais rpido pode ser o banco de dados.

Por isso dizemos que um servidor de banco de dados tem que ser exclusivo no equipamento, no recomendado colocar outras aplicaes no mesmo equipamento.

E quanto mais memria RAM o servidor tiver, melhor ainda.

Bancos de dados so verdadeiros consumidores de recursos computacionais como processadores, memria RAM e discos.

Buffer do sistema so os buffers responsveis pelo armazenamento das pginas dos cdigos objetos dos programas e das reas de trabalho locais das transaes ativas.

Quem controla esta rea o gerenciador de memria virtual do sistema operacional.

Buffer de log so as cpias das pginas do registro de log, de transaes que foram confirmadas pelo banco de dados e aguardando serem descarregadas em disco.

O armazenamento secundrio (discos rgidos do servidor do banco de dados) pode ser dividido em:

Cdigo objeto do sistema programas aplicativos e sistema operacionalrea de troca de memria virtual rea em disco usado para armazenar pginas da memria principal que no esto em uso no momento.

Armazenamento estvel on-line mantm os registros do log necessrios para uma recuperao de falha do banco de dados.

Armazenamento histrico estvel mantm os registros do log na forma de histrico das transaes antigas.Recuperao de falhas de transao

Uma transao de banco de dados pode apresentar falha, nestes casos temos duas aes possveis:

Reexecuo em cascata para recuperarmos uma transao T, pode ser necessrio refazer diversas outras transaes j confirmadas. Esta situao acontece se depois da transao T ocorrer, outras transaes utilizarem dos dados atualizados por T.

Desfazer em cascata cascading rollback a situao onde diversas transaes precisam ser desfeitas. T1, T2 e T3 processadas, mas T1 apresenta uma falha e as transaes T2 e T3 sero desfeitas tambm, para manter a consistncia. Esta situao pode ocorrer quando o banco de dados utiliza o protocolo de bloqueio de duas fases ou baseado em marcador de tempo.

Uma vez que a transao T2 j est compromissada, T2 no poder ser abortada, e a falha de T1 poder deixar o banco de dados inconsistente, formando assim uma situao impossvel de recuperar.

Para evitar este tipo de situao, os SGBDs implementam protocolos de controle de transao.Como utilizado o LOG na recuperao do processamento de transaes

realizada uma varredura completa do log.

Para evitar a leitura total do arquivo de log, utilizamos os pontos de verificao (checkpoint) para reduzir o nmero de registros do log que precisaro ser lidos durante uma recuperao do banco de dados.

Assim as transaes que sero os nossos alvos so aquelas que iniciaram depois do ltimo ponto de verificao e as que ainda permanecem ativas.

A leitura do log feita do final para o comeo at encontrar um checkpoint.

Cada transao identificada com um commit ser includa em uma lista refaz.

Cada transao identificada com um start, que no estiver na lista refaz vai para a lista desfaz.

Quando o checkpoint localizado, a leitura reversa encerrada.

O log ser lido novamente no sentido inverso e cada transao que estiver na lista desfaz, o processo undo executado.

Continua a leitura at localizar o ltimo start da lista refaz.

Varre o log para frente e executa redo para cada entrada na lista refaz.DeadLock

Existem situaes onde um problema transacional de concorrncia de acesso pode nos levar a uma situao de deadlock.

Abrao mortal uma situao onde duas transaes T1 e T2, cada uma bloqueou inicialmente A e B respectivamente, e para conclurem suas transaes agora necessitam de B e A respectivamente.

Porm nenhuma das duas transaes abre mo dos seus dados previamente bloqueados.

Esta exceo tratada pelo SBGD da seguinte forma:

Como A e B j esto bloqueadas, por T1 e T2, T1 no conseguir B e T2 no conseguir A.

E conseqentemente ambas as transaes ficaro paradas. Esta a situao de deadlock, quando isto ocorrer, uma das duas transaes receber o erro DEADLOCK e a outra prosseguir normalmente como se nada tivesse ocorrido.

T1 e T2 esto corretos a nvel de programao, inclusive se executado novamente, podem ou no apresentar deadlock novamente.

Podemos prever o deadlock com algumas aes na programao, aes estas que devem ser amplamente discutidas com os demais analistas da sua equipe e com o DBA principalmente.

O esquema mais simples aponta para bloqueio de todos os dados necessrios logo no incio da transao.

O problema que pode ocorrer com o bloqueio inicial dos dados que a baixa utilizao dos dados bloqueados logo no incio deixe muitos outros programas parados esperando pelos dados por um longo perodo de tempo, atrapalhando o desempenho do banco de dados e at mesmo causando um travamento generalizado no sistema.

Existe outra situao complicada tambm, sempre que o seu programa executado ele recebe um erro de deadlock, ou seja o eterno escolhido, a esta situao chamamos de Starvation ou Inanio.

Neste caso, a sua lgica de programao deve ser revista com urgncia.

Como o SGBD prev, identifica e trata o deadlock ?

Existem basicamente duas formas de deteco e tratamento de deadlock.

Wait-die ou espere-morra uma tcnica no apropriativa, quando T1 requer um dado bloqueado por T2, permite-se que T1 espere somente se o marcado de tempo da transao for menor que T2 (T1 mais velha que T2), T2 receber o erro de deadlock e T1 consegue o dado. Caso contrrio (T1 mais novo que T2), T1 receber o erro de deadlock e T2 seguir em frente normalmente.

Wound-wait ou tome flego e espere j baseado em uma tcnica apropriativa, quando T1 requer um item bloqueado por T2, T1 poder esperar pelo dado somente se o marcador de tempo de T1 for maior que T2 (T1 mais novo que T2), T2 receber o erro de deadlock e T1 consegue o dado. Caso contrrio (T1 as velho que T2), T1 receber o erro de deadlock e T2 seguir em frente normalmente.

A maioria dos SGBDs comerciais utilizam a tcnica wait-die dentro do seu ncleo.

Existem grafos de espera que permitem deteco de um deadlock e sua conferncia atravs de um algoritmo.

Depois de detectado, o SGBD parte para a escolha da vtima (qual o programa que vai receber o erro), sinalizao do erro de deadlock para a vtima, abortar a sua transao e desfazer a sua transao aplicando um rollback nas transaes j efetuadas pelo programa.

.1.2.3-Controle de Concorrncia

Um SGBD trabalha individualmente com uma transao muito bem, mas o grande desafio para a sua consagrao no mercado sem dvida a sua capacidade de tratar diversas transaes simultaneamente.

Hoje em dia muito comum e fcil o acesso a computadores com vrios processadores ou ento com processadores com vrios ncleos, a esta caracterstica chamamos de multiprocessador.

Existe tambm o multiprocessamento, que a capacidade do sistema operacional executar mais de um programa ao mesmo tempo.

Isto pode ocorrer com um computador com um nico processador, neste caso o processador acaba realizando o processamento em paralelo de diversos programas ao simultaneamente.

Se colocarmos mais processadores, ele vai distribuir as tarefas passando rotinas de processamento para cada processador, de modo independente.

E se apenas um programa estiver sendo executado, apenas um processador utilizado, os demais ficam ociosos.

Mas existem sistemas operacionais mais inteligentes, que aproveitam a capacidade de multiprocessadores dos computadores e realizam uma melhor distribuio de carga de processamento.

Se apenas um programa estiver executando no servidor, o sistema operacional divide as tarefas deste programa entre os diversos processadores do servidor, otimizando assim a carga sobre um nico processador e distribuindo entre os vrios processadores, acelerando em muito a concluso do processo.

Este tipo de sistema operacional conhecido como multiprocessamento simtrico ou SMP, onde realizado o balanceamento de carga.

O SGBD trabalha em conjunto com o sistema operacional para retirar a melhor performance possvel na execuo de transaes concorrentes, garantindo inclusive a efetiva consistncia de todas as transaes envolvidas.

Um bom SGBD deve suportar e transacionar desde poucas transaes ao mesmo tempo at dezenas e centenas de transaes simultaneamente.

A sua capacidade de resolver os problemas que possam ocorrer durante as transaes e a integridade que o mesmo garante, fazem com que o SGBD seja confivel.1.2.4-Escalonamento (schedules)

Quando diversas transaes so executadas concorrentemente, a consistncia do banco de dados pode ser destruda apesar de cada transao individual estar correta.

Podemos afirmar que o escalonamento representa a ordem cronolgica da execuo de cada instruo no banco de dados.

Uma transao de um programa deve sair de um estado consistente e levar o banco de dados para outro estado consistente tambm.

Surge ento o conceito de seriabilidade, ou seja, o escalonamento das execues.

Escalonamento serial

Um escalonamento serial consiste de uma seqncia de instrues de vrias transaes na qual as instrues pertencentes a uma nica transao aparecem juntas naquele escalonamento.1.2.5-Escalonamento no serial

Um escalonamento no serial consiste de uma seqncia de instrues de vrias transaes intercaladas entre si, o que pode provocar temporariamente um estado inconsistente.Podemos concluir que o escalonamento no serial pode comprometer a consistncia do banco de dados e causar transtornos enormes.

Por uma questo bvia o escalonamento no serial no permitido nos SGBDs comerciais mais famosos.

Ento chegamos a uma tabela de comparao do escalonamento de conflito serializvel.Protocolo baseado em bloqueios

Um modo de assegurar a seriabilidade requerer que o acesso aos itens de dados seja feito de uma maneira mutuamente exclusiva, isto , enquanto uma transao faz o acesso a um item de dado, nenhuma outra transao pode modificar aquele item.

O mtodo mais fcil de garantir isto, fazer com que uma transao ao acessar um dado, mantenha um bloqueio neste dado at o trmino da sua transao.

Formas de bloqueio

Bloqueio partilhado se uma transao T obteve um bloqueio (lock) no modo partilhado (representado por P) no item de dado A, ento T pode ler este item A mas no pode gravar A.

Bloqueio exclusivo se uma transao T obteve um bloqueio (lock) no modo exclusivo (representado por X) no item de dado A, ento T pode ler este item A e somente T poder gravar A.

Bloqueio de duas fases nesta forma de bloqueio, o protocolo divide-se em:

Fase de crescimento uma transao pode obter bloqueios, mas no pode liberar nenhum dos bloqueios feitos.

Fase de encolhimento uma transao libera um dos bloqueios, mas no pode obter nenhum outro bloqueio at concluir a transao atual.

Inicialmente, uma transao est na fase de crescimento, obtendo quanto bloqueios forem necessrios para a sua transao. Uma vez que libere um bloqueio, a transao entrar na fase de encolhimento e no pode mais bloquear nenhum outro dado, at que a transao atual termine. S ento ela poder comear outra transao com novos bloqueios.

Bloqueio baseado em grafos nesta tcnica, o modelo mais simples requer que tenhamos o conhecimento anterior da ordem na qual os itens do banco de dados sero utilizados, a nica instruo permitida o lock-x (modo exclusivo).

Os bloqueios so realizados utilizando a rvore de acesso aos dados. Muitos dados desnecessrios so bloqueados e pode comprometer outras transaes.

um protocolo livre de deadlock porm bloqueia muitos dados desnecessrios para a transao.

Bloqueio baseado em marcador de tempo o mtodo mais comum para fazer isso utilizar o esquema de ordenao por marcadores de tempo, criando duas variveis w-timestamp(A) e r-timestamp (A).

Estas variveis contm o marcador de tempo lgico do sistema para identificar nas transaes quem chegou primeiro e quem chegou depois no dado.

Os marcadores de tempo so atualizados toda vez que uma instruo read ou write for executada.1.3.0-Concluso

Abordando as fazes de um projeto de banco de dados descobri que para projetar um banco de dado e necessrio ter um pleno conhecimento nas mais diversas reas e caminho da informtica alem de exercitar bastante a pratica.1.3.1 Bibliografia.http://pt.wikipedia.org/wiki/Modelo_relacionalhttp://www.cos.ufrj.br/~marta/BdRel.pdfhttp://www.profwillian.com/bdados/aula03/AulaSQL.htmLivro didatico- Banco de Dados II UNOPAR Roberto Yukio NishimuraUNOPAR- Web Aula 248606 - Wa - Ads - Sem 3 - Unidade 1 - Banco de Dados II