livro banco de dados

191
  1  Projeto Físico de Banco de Dados  Esta unidade discute em detalhes os principais aspectos relacionados ao projeto físico de sistemas de bancos de dados. Inicialmente, defini-se o que é um Sistema de Banco de Dados. Em seguida, discute-se uma possível arquitetura para um Sistema de Banco de Dados. Uma classificação das várias tendências para arquiteturas de Sistemas de Bancos de dados é apresentada. Posteriormente, examinamos os conceitos, técnicas e estratégias relacionadas ao armazenamento de dados, ao gerenciamento de buffer e à indexação de dados.

Upload: alan-moreira

Post on 22-Jul-2015

422 views

Category:

Documents


0 download

TRANSCRIPT

Projeto Fsico de Banco de Dados

Esta unidade discute em detalhes os principais aspectos relacionados ao projeto fsico de sistemas de bancos de dados. Inicialmente, defini-se o que um Sistema de Banco de Dados. Em seguida, discute-se uma possvel arquitetura para um Sistema de Banco de Dados. Uma classificao das vrias tendncias para arquiteturas de Sistemas de Bancos de dados apresentada. Posteriormente, examinamos os conceitos, tcnicas e estratgias relacionadas ao armazenamento de dados, ao gerenciamento de buffer e indexao de dados.

1

SUMRIO

UNIDADE I PROJETO FSICO DE BANCOS DE DADOS

1. SISTEMAS DE BANCOS DE DADOS 1.1. Introduo .................................................................. 15 1.2. Arquitetura ................................................................. 18 1.3. Classificao...... ........................................................ 21 1.4. Exerccios ................................................................... 37

2. ARMAZENAMENTO DE DADOS 2.1. Introduo .................................................................. 40 2.2. Discos Magnticos...................................................... 43 2.3. RAID............................................................................ 46 2.4. Armazenamento Tercerio.......................................... 49 2.5. Gerenciamento de Arquivos ........................................ 2.6. Organizao de Arquivos .............................................

3. GERENCIAMENTO DE BUFFER 3.1. Sistema de Memria Virtual........................................ 51 3.2. O Gerenciador de Buffer............................................. 53 3.3. Mecanismo de Paginao de SGBDs......................... 58 3.4. Polticas de Alocao de Pginas............................... 3.5. Exerccios .................................................................. 61

4. INDEXAO DE DADOS 3.1. Conceitos Bsicos...................................................... 51 3.2. ndices Baseados em rvores.................................... 53 3.3. ndices Baseados em Hash........................................ 58 3.4. ndices em SQL.......................................................... 3.4. Exerccios .................................................................. 61

2

5. WEBLIOGRAFIA ..................................................................... 64

6. REFERNCIAS BIBLIOGRFICAS ........................................ 65

3

UNIDADE I PROJETO FSICO DE BANCOS DE DADOS SISTEMAS DE BANCOS DE DADOS A finalidade de um sistema de bancos de dados simplificar e facilitar o acesso aos dados. Assim, os usurios do sistema no devem preocupar-se desnecessariamente com os detalhes fsicos da implementao do sistema. Contudo, o principal fator na satisfao de um usurio com o sistema de bancos de dados seu desempenho. Se o tempo de resposta a uma solicitao muito longo, o valor do sistema diminudo. Porm, o desempenho de um sistema de banco de dados depende da eficincia das estruturas de dados internas usadas para representar os dados no banco de dados, das tcnicas utilizadas para a troca de dados entre o disco rgido e a memria principal do sistema, bem como das estruturas de ndices utilizadas para recuperar dados de forma mais eficiente.

1.1. Introduo Um Banco de Dados (BD) uma coleo de dados interrelacionados, representado informaes sobre um domnio

especfico. J um Sistema Gerenciador de Banco de Dados (como no Brasil) ou Sistema de Gerenciamento de Banco de Dados (SGBD) o conjunto de programas de computador (softwares) responsveis pelo gerenciamento de um banco de dados, o que inclui o armazenamento, o acesso, o controle de concorrncia e a recuperao desses dados. Assim, o principal objetivo de um SGBD retirar da aplicao cliente a responsabilidade de gerenciar o acesso, manipulao e organizao dos dados. O SGBD

disponibiliza uma interface para que os seus clientes possam incluir, alterar ou consultar dados. Um Sistema de Banco de Dados (SBD) consiste em uma coleo de dados inter-relacionados (BD) e uma coleo de programas para prover o acesso aos dados 4

armazenados (SGBD). O objetivo principal de um sistema de banco de dados prover um ambiente que seja adequado e eficiente para uso no armazenamento e recuperao de informaes.

1.2. Arquitetura Um sistema de banco de dados (SBD) dividido em mdulos que tratam de cada uma das responsabilidades do sistema. Na maioria dos casos, o sistema operacional (SO) do computador fornece apenas os servios mais bsicos e o sistema de banco de dados precisa ser construdo sobre essa base. Portanto, o projeto do sistema de banco de dados precisa incluir consideraes sobre a interface entre o sistema de banco de dados e o sistema operacional.

Figura 1.1: Possvel Arquitetura de um SGBD

A Figura 1.1 ilustra os principais componentes funcionais de um sistema de banco de dados. Nesta arquitetura, um SGBD (ou DBMS Database Management System) formado por dois mdulos principais: O Processador de Consultas e o Sistema de Armazenamento.

5

O processador de consultas responsvel por traduzir as consultas recebidas do usurio ou de uma aplicao, as quais so representadas por comandos em uma determinada linguagem de consulta (como SQL, por exemplo), em operaes de baixo nvel que o gerenciador do banco de dados pode interpretar e executar. Alm disso, o processador de consultas tenta transformar uma requisio do usurio em uma representao interna que seja equivalente (ou seja, retorne os dados solicitados) consulta recebida, porm mais eficiente em termos de desempenho, encontrando uma boa estratgia para executar a consulta. O processador de consultas dividido nos seguintes mdulos:

Compilador DML Analisa sintaticamente e semanticamente os comandos DML

(Data Manipulation Language) expressos em uma determinada linguagem de consulta (SQL, por exemplo) recebidos do usurio. Em seguida, traduz estes comandos para uma das formas de representao interna de consultas (como por exemplo, a lgebra relacional). Pr-Compilador DML Traduz comandos DML, embutidos em um programas aplicativos que acessam o sistema de banco de dados, em chamadas a procedimentos (rotinas) em uma linguagem hospedeira. O pr-compilador precisa interagir com o processador de consultas pra gerar o cdigo apropriado. Interpretador DDL Interpreta comandos DDL (Data Definition Language) e os armazena no catlogo. Um catlogo uma tabela que armazena meta-dados. J os meta-dados descrevem o banco de dados, ou seja, o esquema do banco de dados. Mecanismo de Consultas Responsvel pela otimizao e gerao de planos de execuo de consultas.

6

O Sistema de Armazenamento fornece a interface entre os dados de baixo nvel armazenados no disco e os programas aplicativos e de consulta que necessitam acessar os dados armazenados. O Sistema de Armazenamento dividido nos seguintes mdulos:

Gerenciador de Transaes Responsvel pelo controle de concorrncia e pela

recuperao do banco de dados aps falhas. Gerenciador de Buffer Responsvel por recuperar objetos em disco e carreg-los na memria principal em forma de pginas. Gerenciador de Arquivo (File System) Responsvel pelo armazenamento fsico em disco. O gerenciador de arquivos gerencia a alocao do espao em disco e as estruturas de dados usadas para representar a informao armazenada no disco.

Adicionalmente, diversas estruturas de dados so requeridas como parte da implementao do sistema fsico de um banco de dados (BD), incluindo: Arquivos de dados, que armazenam o banco de dados propriamente dito. Catlogo ou Dicionrio de dados, que armazena

metadados sobre a estrutura do banco de dados. Esse metadados incluem: nomes das tabelas, atributos de cada tabela, definio de ndice para uma tabela, alm de informaes estatsticas, como por exemplo, a cardinalidade de uma tabela. O dicionrio de dados usado com freqncia. Assim, deve-se dar grande nfase no desenvolvimento de um bom projeto e implementao eficiente do dicionrio. ndices, estruturas que fornecem acesso rpido aos itens de dados guardando determinados valores. 7

Fragmentos

de

Cdigo,

tais

como

procedimentos

armazenados (stored procedures) e gatilhos (triggers).

1.3. Classificao dos Sistemas de Bancos de Dados Os primeiros Sistemas de Bancos de dados usavam mainframes para executar o processamento de todas as funes do sistema, incluindo os programas aplicativos, programas de interface com o usurio, bem como a funcionalidade dos SGBDs. Assim, a maioria dos usurios fazia acesso aos sistemas via terminais que no possuam poder de processamento, apenas a capacidade de visualizao. Todos os processamentos eram feitos remotamente, apenas as informaes a serem visualizadas e os controles eram enviados do mainframe para os terminais de visualizao, conectados a ele por redes de comunicao. Como os preos do hardware foram decrescendo, muitos usurios trocaram seus terminais por computadores pessoais (Personal Computer - PC) e estaes de trabalho. Inicialmente, os SGBDs usavam esses computadores da mesma maneira que usavam os terminais, ou seja, o SGBD era centralizado e toda sua funcionalidade, execuo de programas aplicativos e processamento da interface do usurio eram executados em apenas uma mquina. Gradualmente, os SGBDs comearam a explorar a disponibilidade do poder de processamento no lado do usurio, o que levou arquitetura clienteservidor. Atualmente, existem vrias tendncias para arquitetura de Sistemas de Bancos de Banco de Dados, nas mais diversas direes. Essas tendncias sero discutidas a seguir. As arquiteturas possveis para um Sistema de Bancos de Dados podem ser classificadas em dois grandes grupos:

Arquitetura Centralizada e Arquitetura Distribuda. Na arquitetura centralizada os componentes do SBD residem no mesmo host (hardware). Os SBDs que utilizam essa arquitetura so denominados Sistema de Banco de Dados Centralizados.

8

Nas arquiteturas distribudas, busca-se distribuir alguns dos seguintes critrios: funo, controle e dados. Neste contexto, algumas arquiteturas de SBDs so possveis:

Sistema de Banco de Dados Cliente-Servidor Distribuio de funes do SGBD entre clientes e servidor. Sistema de Banco de Dados Paralelos Distribuio do controle de funes do DBMS entre diversos

sistemas computacionais. Sistema de Banco de Dados Distribudos Distribuio de dados atravs de diversos SBDs homogneos. Sistema de Banco de Dados Heterogneos Caracteriza-se pela distribuio de dados atravs de SBDs heterogneos e autnomos. Diversas abordagens foram propostas para SBDs Heterogneos, dentre elas destacam-se: Sistema de banco de dados mltiplos (MDBS Multiple Database System) Sistema de banco de dados federados (FDBS Federated Database System) Arquitetura de Mediadores

Sistema de Banco de Dados Mvel Caracteriza-se pela distribuio de funes e dados do SGBD

entre clientes e servidor em ambientes de computao mvel.

1.4. Exerccios 1. Descreva os componentes funcionais de um SGBD.

9

UNIDADE I PROJETO FSICO DE BANCOS DE DADOS2. ARMAZENAMENTO DE DADOS

Um dos aspectos importantes que distinguem os sistemas de bancos de dados de outros sistemas a habilidade de um SBD de lidar de forma eficiente com grandes volumes de dados. Embora um sistema de banco de dados oferea uma viso de alto nvel dos dados armazenados, estes dados, em ltima instncia, precisam ser armazenados como bits em um ou mais dispositivos de

armazenamento. A grande maioria dos SBDs atuais armazena dados em discos magnticos. Quando os dados necessitam ser processados, o SBD copia os dados armazenados nos discos magnticos para a memria principal do computador. Alm disso, o SBD pode copiar os dados armazenados em disco para fitas e outros dispositivos de armazenamento, por questes de segurana (backup), e retornar esses dados para o disco magntico quando for necessrio. As caractersticas fsicas dos dispositivos de

armazenamento desempenham um papel importante no modo como os dados so armazenados. Por exemplo, o acesso aleatrio a um dado armazenado em disco muito mais lento que em memria principal. Contudo, a capacidade de armazenamento da memria principal muito menor que a de um disco rgido. Neste captulo discutiremos as principais tcnicas utilizadas pelos SBDs para representar, armazenar e recuperar dados.

2.1. Introduo Na maioria dos sistemas computacionais existem vrios tipos de armazenamento de dados. Esses meios fsicos de armazenamento so classificados pela velocidade com que os dados podem ser acessados, pelo custo e pela confiabilidade. A seguir, destacamos os principais tipos de meios fsicos de armazenamento. Esses meios 10

de armazenamento formam uma hierarquia de armazenamento que inclui as seguintes categorias:

Memria Interna do Processador Compreende pequeno conjunto de registradores de alta

velocidade. Esses registradores so utilizados como memria de trabalho para armazenamento temporrio de instrues e dados. Memria Cache Dispositivo de memria que funciona como dispositivo de armazenamento temporrio e intermedirio entre registradores e memria principal. Memria Principal (ou Memria Primria)

Utilizada no armazenamento de programas e dados que esto sendo operados pelo sistema computacional. uma memria relativamente rpida, cara, normalmente apresenta capacidade muito limitada e voltil, ou seja, seu contedo perdido em caso de queda de energia ou crash do sistema. Os endereos de memria so facilmente e rapidamente acessados pelo conjunto de instrues da CPU. A memria principal denominada RAM (Random Access Memory) ou Memria de Acesso Randmico (Aleatrio). Atualmente comeam a surgir tecnologias de bancos de dados armazenados inteiramente em memria principal. Memria Flash A memria flash difere da memria principal porque os dados sobrevivem falta de energia. A leitura de dados da memria flash apresenta aproximadamente a mesma velocidade da leitura de dados em memria principal. Porm, a escrita de dados na memria flash mais complicada. Para escrever sobre um endereo de memria que j foi escrito, necessrio apagar um bloco de memria inteiro ao mesmo tempo e, em seguida, gravar o novo contedo. Uma desvantagem da memria flash que ela s pode aceitar um nmero limitado de ciclos de apagamento, variando de 10.000 a 1 milho. A memria flash um tipo de memria EEPROM (Electrically-Erasable Programmable Read-Only Memory). 11

A memria flash ganhou popularidade como um substituto para os discos magnticos, para armazenar pequenos volumes de dados, em equipamentos portteis como cmeras fotogrficas digitais e pendrives USB (Universal Serial Bus). Memria Secundria (Armazenamento em Discos

Magnticos) O principal meio para armazenamento de dados em longo prazo o disco magntico. Este dispositivo apresenta uma capacidade de armazenamento maior que a memria principal. Em contrapartida, o acesso a dados em disco mais lento que na memria principal. Os discos magnticos apresentam um

armazenamento no voltil, ou seja, os dados armazenados sobrevivem a sobrevivem a faltas de energia e falhas do sistema. Assim, os discos magnticos so utilizados para armazenar dados de forma persistente (permanente), podendo armazenar programas aplicativos, grandes arquivos de dados, etc. Normalmente, o banco de dados inteiro armazenado em disco magntico. Logo, o SBD precisa mover os dados do disco para a memria principal, de modo que possam ser acessados. Posteriormente, os dados que foram modificados na memria principal precisam ser gravados

(atualizados) em disco. Logicamente, os discos magnticos tambm esto sujeitos a falhas e, portanto, dados podem ser perdidos, mas estas falhas normalmente ocorrem com muito menos freqncia do que as falhas do sistema. Memria Terciria Classe composta por dispositivos mais lentos, tais como: fitas magnticas e discos ticos (CD Compact Disk e DVD Digital Video Disk). Esse tipo de memria utilizado para armazenar um grande volume de dados (back-up). Nos discos pticos os dados so armazenados de forma ptica e so lidos por um laser. Sistemas de junkebox de discos pticos contm algumas unidades e vrios discos que podem ser carregados em uma das unidades automaticamente (por um brao mecnico). 12

O armazenamento em fita usado principalmente para backup e arquivamento de dados. Embora a fita magntica seja mais barata do que os discos pticos, o acesso aos dados muito mais lento, pois a fita precisa ser acessada seqencialmente desde o incio. Assim, o armazenado em fita chamado de armazenamento de acesso seqencial, enquanto o armazenamento em disco chamado de armazenamento de acesso direto. As fitas possuem uma alta capacidade de armazenamento, alm disso, podem ser removidas das unidades Logo, so (leitoras/gravadoras) bastante de fita para e o

transportadas.

adequadas

armazenamento de grandes volumes de dados, por longos perodos de tempo. Bibliotecas de fitas (jukeboxes) so usadas para manter colees de dados excepcionalmente grandes, como dados de satlites, que poderiam incluir at centenas de terabytes (1 terabyte = 1012 bytes), ou ainda vrios petabytes (1 petabyte = 1015 bytes) de dados.

Figura 2.1. Hierarquia de Meios de Armazenamento

Os diversos meios fsicos de armazenamento podem ser organizados em uma hierarquia (Figura 2.1), de acordo com sua velocidade (tempo de acesso) e seu custo. Os nveis mais altos so caros, mas so rpidos. Ao descemos na hierarquia, o custo por bit diminui, a capacidade de armazenamento aumenta e a velocidade diminui (ou seja, o tempo de aceso tambm cresce).

13

2.1.1. Caractersticas dos Meios Fsicos de Armazenamento Custo

(c):

O

custo

de

um

meio

fsico

de

armazenamento definido por:

c=CT/CA (dollars/bit)

onde, CT representa o custo total do sistema de memria completo cuja capacidade de armazenamento dado por CA. Tempo de Acesso (TA): Representa o tempo mdio necessrio para ler uma quantidade fixa de informao da memria, como por exemplo, uma palavra (word). O tempo de acesso utilizado como medida de performance memria. Taxa de acesso (bA): A taxa de acesso de um dispositivo de memria dada por 1/TA e representa a quantidade de palavras lidas por segundo. (desempenho) para dispositivos de

Mtodo de Acesso: (i) Random-access memory (RAM): Dispositivos de memria cujas posies podem ser acessadas em qualquer ordem. O tempo de acesso independente da localizao a ser acessada, uma vez que existe um mecanismo de acesso (leitura/gravao) para cada posio de memria.

14

(ii)

Serial-access

memory

(memria

de

acesso

seqencial): Dispositivos cujas posies s podem ser acessadas em seqncias pr-definidas. Este tipo de memria apresenta um nico mecanismo de acesso (leitura/gravao) compartilhado por vrias posies de memria. Alterabilidade: memria. (i) Read-only memory (ROM) (ii) Read-write memory (RWM) Persistncia de Armazenamento: Os processos fsicos envolvidos no armazenamento so algumas vezes instveis, podendo provocar a perda da informao armazenada aps certo perodo de tempo. A seguir discutimos algumas propriedades de memria de que podem destruir informao armazenada. (i) Destructive read-out DRO (leitura destrutiva): Em alguns dispositivos de armazenamento, o mtodo de leitura destri a informao armazenada. Em

Caracterstica

que

representa

a

capacidade de permitir a alterao do contedo de

dispositivos DRO, cada operao de leitura precisa ser seguida de uma operao de escrita para restaurar o estado original da memria. (ii) Memria dinmica: Certos dispositivos de

armazenamento apresentam a seguinte caracterstica: Um 1 armazenado torna-se um 0 devido a algum 15

processo

de

decaimento.

Por

exemplo,

muitos

dispositivos armazenam um 1 atravs de uma carga eltrica em um capacitor, com o passar do tempo, a carga armazenada tende a se descarregar (decair). Logo, esses dispositivos necessitam de um processo de recarga, denominado de refreshing. (ii) Volatilidade: Fenmeno no qual certos dispositivos de memria tm seu contedo destrudo por falhas eltricas ou crash de sistema. Distinguem-se dois tipos de memria: memria voltil e memria no voltil.

2.1.2. Armazenamento de Bancos de Dados Em geral, os bancos de dados envolvem grandes volumes de dados que devem ser armazenados por longos perodos de tempo. Durante sua existncia, os dados necessitam ser acessados e processados diversas vezes. Esse requisito contrasta com a noo de estruturas de dados transitrios (transient), que so armazenados somente por um tempo limitado, durante a execuo de um programa, por exemplo. Os bancos de dados, geralmente, necessitam ser armazenados de forma permanente (ou persistente) em memria secundria, ou seja, em discos magnticos, pelas seguintes razes: Freqentemente os bancos de dados so muito grandes para caberem inteiramente na memria principal; As circunstncias que causam a perda permanente de dados armazenados so menos do freqentes que em em armazenamento secundrio

armazenamento primrio. O custo de armazenamento por unidade de dado uma ordem de grandeza menor para discos magnticos do que para o armazenamento primrio;

16

Por estes motivos, espera-se que os discos magnticos continuem a ser a mdia mais utilizada para grandes bancos de dados nos prximos anos. Vale ressaltar que as tcnicas utilizadas para armazenar grandes volumes de dados em discos magnticos so importantes para os projetistas de bancos de dados e DBAs (Database Administrator), os quais devem conhecer as vantagens e desvantagens de cada tcnica de armazenamento, a fim de poderem projetar, implementar e operar, com eficincia, um banco de dados em um SGBD especfico. Em geral, os SGBDs fornecem diversas opes para a organizao dos dados, e o processo de projeto fsico envolve escolher, dentre as opes disponveis, as tcnicas de organizao que melhor se adqem aos requisitos de uma determinada aplicao. J os desenvolvedores (ou fabricantes) de SGBDs devem estudar as tcnicas de organizao de dados a fim que possam implement-las de forma eficiente e, assim, proporcionar boas opes aos DBAs e usurios de SGBDs.

2.2. Discos Magnticos Disco rgido, disco duro, (popularmente tambm winchester) ou HD (do ingls Hard Disk) a parte do computador onde so armazenadas as informaes, ou seja, a "memria permanente" propriamente dita. caracterizado como memria fsica, no-voltil, que aquela na qual as informaes no so perdidas quando o computador desligado. O disco rgido um sistema lacrado contendo discos de metal recobertos por material magntico onde os dados so gravados atravs de cabeas, e revestido externamente por uma proteo metlica que presa ao gabinete do computador por parafusos. nele que normalmente gravamos dados (informaes) e a partir dele lanamos e executamos nossos programas mais usados. Este mecanismo necessrio porque o contedo da memria RAM apagado quando o computador desligado. Desta forma, temos um meio de executar novamente programas e carregar arquivos contendo os dados da prxima vez em que o computador 17

for ligado. O disco rgido tambm chamado de memria de massa ou ainda de memria secundria. Um disco rgido possui uma ou vrias superfcies de gravao/leitura com uma estrutura de gravao composta por cilindros, trilhas e setores. Em cada superfcie de um disco, existem vrias trilhas que so arranjadas de forma concntrica (existem de 20 a 1500 trilhas por disco). Cada trilha est subdividida em setores. Um setor representa a menor unidade de informao que pode ser lida ou escrita no disco. Setores podem variar de 32 bytes at 4096 bytes. Mas, tipicamente, um setor possui 512 bytes e existem de 4 a 32 setores por trilha. Um cilindro definido como sendo um conjunto de trilhas verticalmente alinhadas e com mesmo dimetro. Os discos magnticos (superfcies) de um disco rgido so recobertos por uma camada magntica extremamente fina. Na verdade, quanto mais fina for esta camada de gravao, maior ser sua sensibilidade, e conseqentemente maior ser a densidade de gravao permitida por ela. Poderemos assim armazenar um volume maior de dados num disco do mesmo tamanho, criando HDs de maior capacidade.

18

2.2.1. Acessando uma Unidade de Disco O motor de rotao faz o disco girar a uma velocidade constante (60, 90 ou 120 rps). Cada superfcie do disco possui um cabeote de leitura/escrita. O cabeote est montado em um dispositivo chamado brao do disco. O brao movimenta-se transversalmente pelo disco para acessar as diferentes trilhas do disco. Uma unidade de disco possui geralmente um conjunto de discos (superfcies). Os cabeotes de leitura/escrita de todas as 19

superfcies de discos de uma unidade movimentam-se em conjunto (simultaneamente) e so acionadas pelo suporte do brao. A ttulo de exemplo suponha que os discos de uma unidade A apresentem 1000 trilhas cada um. Em um instante de tempo t todos os cabeotes acessam a mesma posio nos diferentes discos (superfcies). Assim, os cabeotes acessam trilhas de diferentes discos ou superfcies, mas que apresentam mesmo dimetro, ou seja, pertencem ao mesmo cilindro (como por exemplo, o conjunto de todas as trilhas 450 dos discos da unidade A). Por este motivo, procura-se otimizar o acesso a disco armazenando-se os dados de um mesmo arquivo em um mesmo cilindros. A superfcie de gravao dos discos (ou pratos) composta de materiais sensveis ao magnetismo (geralmente, xido de ferro). O cabeote de leitura e gravao manipula as molculas desse material atravs de seus plos. Para isso, a polaridade das cabeas muda numa freqncia muito alta: quando est positiva, atrai o plo negativo das molculas e vice-versa. De acordo com essa polaridade que so gravados os bits (0 e 1). No processo de leitura de dados, o cabeote simplesmente "l" o campo magntico gerado pelas molculas e gera uma corrente eltrica correspondente, cuja variao analisada pela controladora do HD para determinar os bits.

2.2.2. Medidas de Desempenho de Discos Tempo de procura (TP) ou Tempo de Busca ou Seek Time: Tempo gasto para posicionar o brao sobre a trilha correta. Tempo mdio de latncia rotacional (TL): Tempo mdio necessrio para que o setor desejado passe pelo cabeote de leitura/escrita. O TL definido como 1/2 do tempo de uma rotao completa. Assim, se r a taxa de rotaes/segundo, ento TL=(2r)-1.

20

Taxa de transferncia de dados (TTr): Taxa na qual os dados so lidos ou armazenados por segundo. Se N a capacidade das trilhas em palavras, ento TTr= rN. Tempo de transferncia de dados de um setor (TT): Tempo (segundos) necessrio para transferir dados de um setor. Se n o tamanho (em palavras) de um setor, ento TT= n(rN)-1. Tempo de acesso a um setor (TA): Tempo gasto desde um pedido de leitura/escrita at o fim da transferncia de dados. A frmula para determinar o tempo de acesso de um disco dada por: TA=TP + TL + TT TA= TP + (2r)-1 + n(rN)-1 O acesso a disco extremamente lento. Logo, o custo de acesso a disco domina o custo de execuo das consultas executadas pelo SGBD.

2.3. Tcnicas RAID RAID a sigla para Redundant Array of Independent Disks. Sua definio em portugus seria "Matriz Redundante de Discos Independentes". Trata-se de uma tecnologia que combina vrios discos rgidos (HD) para formar uma nica unidade lgica. Em outras palavras, um conjunto de HDs que funcionam como se fossem um s. Isso permite ter uma alta tolerncia contra falhas, pois se um disco tiver problemas, os demais continuam funcionando. O RAID uma tecnologia consolidada, tendo sido proposta por pesquisadores da Universidade de Berkesley, na California (EUA) no final da dcada de 1980. Para que o RAID seja formado, preciso utilizar pelo menos 2 HDs. O sistema operacional, neste caso, enxergar os discos como uma unidade lgica nica. Quando h gravao de dados, os 21

mesmos se repartem entre os discos do RAID (dependendo do nvel). Com isso, alm de garantir a disponibilidade dos dados em caso de falha de um disco, possvel tambm equilibrar o acesso s informaes, de forma que no haja "gargalos". As tcnicas RAID so baseadas em dois mecanismos principais: o espelhamento e a distribuio paralela de dados. O espelhamento assegura confiabilidade (atravs da redundncia dos dados), contudo uma tecnologia extremamente cara. A distribuio paralela de dados possibilita altas taxas de transferncia de dados, porm no garante confiabilidade. Assim, as tcnicas RAID buscam combinar diferentes graus redundncia. de distribuio de dados e de

2.3.1. Os nveis de RAID A tecnologia RAID funciona de vrias maneiras. Tais maneiras so conhecidas como "nveis de RAID".

RAID nvel 0 - Este nvel tambm conhecido como "Striping" ou "Fracionamento" e consiste em uma distribuio de paralela e no-redundante dos blocos que compem um arquivo. Nele, os dados so divididos em pequenos segmentos e distribudos entre os discos. Este nvel no oferece tolerncia a falhas, pois no existe redundncia. Isso significa que uma falha em qualquer um dos HDs pode ocasionar perda de informaes. Por essa razo, o RAID 0 usado para melhorar a performance do computador, uma vez que a distribuio dos dados entre os discos proporciona grande velocidade na gravao e leitura de informaes. Quanto mais discos houver, mais velocidade obtida. Isso porque, se os dados fossem gravados em um nico disco, esse processo seria feito de forma seqencial.

22

As principais caractersticas do RAID nvel 0 so: Projeto simples Fcil de implementar No apresenta overhead com clculos de paridade Requer pelo menos dois discos A perda de um disco implica na perda total dos dados I/O performance is greatly improved by spreading the I/O load across many channels and drives Should never be used in mission critical environments

RAID nvel 1 - Tambm conhecido como "Mirroring" ou "Espelhamento", o RAID 1 funciona adicionando HDs paralelos aos HDs principais existentes no computador. Assim, se, por exemplo, um computador possui 2 discos, pode-se aplicar mais um HD para cada um, totalizando 4. Os discos que foram adicionados trabalham como uma cpia do primeiro. Assim, se o disco principal recebe dados, o disco adicionado tambm os recebe. Da o nome de 23

"espelhamento", pois um HD passa a ser uma cpia praticamente idntica do outro. Dessa forma, se um dos HDs apresentar falha, o outro imediatamente pode assumir a operao e continuar a disponibilizar as informaes. A conseqncia neste caso, que a gravao de dados mais lenta, pois realizada duas vezes. No entanto, a leitura dessas informaes mais rpida, pois pode-se acessar duas fontes de dados distintas. Por esta razo, uma aplicao muito comum do RAID 1 seu uso em servidores de arquivos. O RAID 1 utiliza uma organizao de discos com distribuio paralela (baseada em blocos) e redundncia

(implementada atravs de replicao).

RAID nvel 2 - Este tipo de RAID adapta o mecanismo de deteco de falhas em discos rgidos para funcionar em memria. Assim, todos os discos da matriz ficam sendo "monitorados" pelo mecanismo. Atualmente, o RAID 2 pouco usado, uma vez que praticamente todos os discos rgidos novos saem de fbrica com mecanismos de deteco de falhas implantados. O RAID 2 utiliza uma organizao de discos com distribuio paralela (baseada em bytes) e redundncia implementada atravs de bits de correo, os quais podem ser implementados atravs de bit de paridade. 24

RAID nvel 3 - Neste nvel, os dados so divididos entre os discos da matriz, exceto um, que armazena informaes de paridade. Assim, todos os bytes dos dados tem sua paridade (acrscimo de 1 bit, que permite identificar erros) armazenada em um disco especfico. Atravs da verificao desta informao, possvel assegurar a integridade dos dados, em casos de recuperao. Por isso e por permitir o uso de dados divididos entre vrios discos, o RAID 3 consegue oferecer altas taxas de transferncia e confiabilidade das informaes. Para usar o RAID 3, pelo menos 3 discos so necessrios.

25

RAID nvel 4 - Este tipo de RAID, basicamente, divide os dados entre os discos, sendo que um exclusivo para paridade. A diferena entre o nvel 4 e o nvel 3, que em caso de falha de um dos discos, os dados podem ser reconstrudos em tempo real atravs da utilizao da paridade calculada a partir dos outros discos, sendo que cada um pode ser acessado de forma independente. O RAID 4 indicado para o armazenamento de arquivos grandes, onde necessrio assegurar a integridade das informaes. Isso porque, neste nvel, cada operao de gravao requer um novo clculo de paridade, dando maior confiabilidade ao armazenamento (apesar de isso tornar as gravaes de dados mais lentas). O RAID 4 no apresenta distribuio, ou seja, os blocos so armazenados da mesma forma que em discos comum. Assim, uma 26

leitura de bloco acessa somente um disco. Isso permite que outras solicitaes sejam processadas pelos outros discos de forma paralela. A redundncia implementada atravs de blocos de paridade. Um disco redundante (disco de paridade) armazena todos os blocos de paridade. Neste disco, o bloco i armazena bit de paridade dos blocos i de todos os discos de dados.

O RAID nvel 4 utiliza um mecanismo de paridade de blocos entrelaados. Assim, caso um disco falhe, o bloco de paridade mais

27

os blocos dos discos em funcionamento so utilizados para recuperar os blocos do disco que falhou. O RAID 4 apresenta ainda as seguintes caractersticas: RAID Level 4 requires a minimum of 3 drives to implement; Block Read transfer rate equal to that of a single disk ; A taxa de transferncia de dados para cada acesso menor, mas mltiplos acessos de leitura podem ser processados em paralelo, levando a uma taxa geral de I/O mais alta; Uma nica escrita requer quatro acessos ao disco: dois para ler os dois blocos (dados e paridade) antigos e dois para gravar os dois blocos;

RAID nvel 5 - Este muito semelhante ao nvel 4, exceto o fato de que a paridade no fica destinada a um nico disco, mas a toda a matriz. Isso faz com que a gravao de dados seja mais rpida, pois no necessrio acessar um disco de paridade em cada gravao. Apesar disso, como a paridade distribuda entre os discos, o nvel 5 tende a ter um pouco menos de performance que o RAID 4. O RAID 5 o nvel mais utilizado e que oferece resultados satisfatrios em aplicaes no muito pesadas. Este nvel precisa de pelo menos 3 discos para funcionar. O RAID nvel 5 apresenta distribuio de dados (baseada em blocos). A redundncia implementada atravs de blocos de paridade, onde se utiliza um bloco de paridade para cada bloco armazenado nos discos de dados. Assim, o RAID nvel 5 conhecido como mecanismo de paridade distribuda de blocos entrelaados. Os blocos de dados e de paridade so distribudos nos N+1 discos, enquanto que no RAID nvel 4, os dados so armazenados nos N discos e o bloco de paridade armazenado em um disco separado. 28

Considere o seguinte exemplo. Para cada bloco i em um conjunto de 5 discos o bloco de paridade de i armazenado no disco (i mod 5) +1, enquanto os i-simos blocos dos outros quatro discos armazenam os dados do bloco i. Assim, o bloco de paridade para um bloco i armazenado em um disco diferente dos discos que armazenam i. Caso um disco falhe, o bloco de paridade mais os blocos dos discos em funcionamento so utilizados para recuperar os blocos do disco que falhou. 29

O RAID 5 apresenta ainda as seguintes caractersticas: RAID Level 5 requires a minimum of 3 drives to implement; Highest Read data rate/Medium Write data rate; More difficult to rebuild in the event of a disk failure; RAID nvel 6 - Semelhante ao nvel 5 (mas, usa redundncia P + Q), ou seja, armazena informaes adicionais para recuperar dados no caso de falha em mais de um disco. Assim, garante maior grau de confiabilidade que o nvel 5. Contudo, o RAID 6 requer um mnimo de quatro discos para ser implementado.

RAID nvel 10 ou 1 + 0 - Em um RAID 1+0 os dados so primeiramente espelhados, e para cada espelho h a segmentao sobre vrios discos.

30

Este nvel de RAID apresenta as seguintes caractersticas: RAID Level 10 requires a minimum of 4 drives to implement; Very expensive / High overhead; All drives must move in parallel to proper track lowering sustained performance;

RAID 0 + 1 - O RAID 0 + 1 uma combinao dos nveis 0 (Striping) e 1 (Mirroring), onde os dados so divididos entre os discos para melhorar o rendimento, mas tambm utilizam outros discos para duplicar as informaes. Assim, possvel utilizar o bom rendimento do nvel 0 com a redundncia do nvel 1. No entanto, necessrio pelo menos 4 discos para montar um RAID desse tipo. Tais caractersticas fazem do RAID 0 + 1 o mais rpido e seguro, porm o mais caro de ser implantado. A ilustrao abaixo ilustra este tipo de RAID:

31

As principais caractersticas do RAID 0 + 1 so: RAID Level 0+1 requires a minimum of 4 drives to implement; Very expensive / High overhead; All drives must move in parallel to proper track lowering sustained performance; Excellent solution for sites that need high performance but are not concerned with achieving maximum reliability (confiabilidade/integridade);

2.3.2. Tipos de RAID Existem 2 tipos de RAID, sendo um baseado em hardware e o outro baseado em software. Cada uma possui vantagens e desvantagens. O primeiro tipo o mais utilizado, pois no depende de sistema operacional (pois estes enxergam o RAID como um nico disco grande) e so bastante rpidos, o que possibilita explorar integralmente seus recursos. Sua principal desvantagem ser um tipo caro inicialmente. O RAID baseado em hardware utiliza 32

dispositivos denominados "controladores RAID", que podem ser, inclusive, conectados em slots PCI da placa-me do computador. J o RAID baseado em software no muito utilizado, pois apesar de ser menos custoso, mais lento, possui mais dificuldades de configurao e depende do sistema operacional para ter um desempenho satisfatrio. Este tipo ainda fica dependente do poder de processamento do computador em que utilizado.

2.4. Armazenamento Tercirio.......................................... 49 2.5. Gerenciamento de Arquivos ........................................ 2.6. Organizao de Arquivos .............................................

2.7. Exerccios

1. Tanto a memria principal quanto o disco possibilitam o acesso direto a uma determinada localizao (pgina). Entretanto, em mdia, o acesso a memria principal mais rpido. Qual a outra diferena fundamental entre esses dispositivos (do ponto de vista do tempo necessrio para acessar uma determinada pgina) ? 2. Caso voc tenha um arquivo que freqentemente percorrido seqencialmente, qual a melhor maneira de armazenar as pginas deste arquivo em um disco ? 3. Considere um disco com setores de 512 bytes (tamanho), 2.000 trilhas por superfcie, 50 setores por trilha, 5 pratos (discos fsicos) de dupla face e tempo de busca de 10 ms. Qual a capacidade de uma trilha em bytes ? Qual a capacidade de uma superfcie ? Qual a capacidade de um disco (prato) ? Quantos cilindros existem em um disco ? Fornea exemplos de tamanhos de blocos vlidos. Pode existir um bloco de 256 bytes ? Podemos ter blocos de 2048 bytes ? e de 51.200 ? Se a taxa de rotao for de 5.400 rpm (rotaes por minuto), qual o tempo mximo de espera ? Assumindo-se que uma trilha de dados pode ser transferida a cada rotao, qual a taxa de transferncia ?

33

4. Considere a especificao do disco da questo anterior, e suponha que os blocos utilizados so de 1024 bytes. Suponha tambm que um determinado arquivo que contm 1000.000 registros de 100 bytes cada deve ser armazenado no disco em questo, e que os dados de um registro devem ser armazenados em um nico bloco. Quantos registros podem ser armazenados em um bloco ? Quantos blocos so necessrios para armazenar o arquivo por inteiro ? Quantos registros de 100 bytes cada podem ser armazenados usando este disco ? Qual o tempo necessrio para ler um arquivo contendo 100.000 registros de 100 bytes cada seqencialmente ? Qual o tempo necessrio para ler um arquivo contendo 100.000 registros de 100 bytes cada em uma determinada ordem randmica ?

-

34

UNIDADE I PROJETO FSICO DE BANCOS DE DADOS3. GERENCIAMENTO DE BUFFER

O gerenciador de buffer o subsistema responsvel pela alocao de memria onde so armazenados os blocos (pginas) de informaes que compem um banco de dados e que so lidos/gravados nos discos rgidos (armazenamento secundrio). O ideal seria que todas as informaes que um banco de dados manipula estivessem na memria principal do computador, como isso no possvel, pois as memrias so pequenas e caras, necessrio gerenciar a alocao do espao disponvel na memria principal para o armazenamento dos blocos que compem um banco de dados. O buffer a parte da memria principal disponvel para o armazenamento de cpias dos blocos (pginas) de um banco de dados. H sempre uma cpia de cada bloco que mantida no disco rgido. Contudo, para um determinado bloco possa ser efetivamente utilizado (processado) ele necessita estar armazenado na memria principal (mais precisamente no buffer). Assim, a cpia de um determinado bloco armazenada em disco pode ser uma verso mais antiga do que a verso da cpia do mesmo bloco armazenada do buffer.

3.1. Sistema de Memria Virtual Quando uma aplicao solicita uma informao do banco e dados, o SGBD antes de busc-la no disco, verifica se ela no se encontra em algum bloco no buffer, caso afirmativo, o SGBD envia aplicao o endereo do bloco na memria. Se o bloco no estiver no buffer, o gerenciador alocar espao no buffer para o bloco requisitado, retirando algum outro bloco, pra liberar espao e far a transferncia do bloco requisitado do disco para a memria principal 35

e enviar o endereo para a aplicao que requisitou a informao. O bloco retirado do buffer reescrito no disco apenas se ele foi modificado desde a ltima vez que foi escrito no disco. O gerenciador de buffer funciona de maneira anloga ao gerenciador de memria virtual de um sistema operacional. Uma diferena que um banco de dados pode ser muito maior que a memria virtual de um sistema computacional qualquer. Outra diferena que as tcnicas utilizadas para gerenciamento do buffer so mais sofisticadas que as de gerenciamento de memria virtual. Mais formalmente, um sistema de memria virtual pode ser definido como um sistema de armazenamento hierrquico, com no mnimo dois nveis de memria. A maioria dos sistemas de memria virtual implementam uma hierarquia de dois nveis, compreendendo: Uma memria principal M1 (Buffer), cuja capacidade de armazenamento representada por S1 e cujo custo dado por C1. O tempo de acesso memria M1 dado por TA1. Uma memria secundria M2 (Disco), cuja

capacidade de armazenamento representada por S2 e cujo custo dado por C2. O tempo de acesso memria M2 dado por TA2. Sabe-se que: S2 >> S1 ; C1 > C2 ; TA1 < TA2 O objetivo de um sistema de memria virtual dar a iluso ao usurio do SGBD que existe uma nica memria principal com grande capacidade, permitir um compartilhamento eficiente do espao de memria entre diferentes usurios (Reentrncia), apresentar altas taxas de acesso a baixo custo de armazenamento por bit e otimizar acesso ao banco de dados. A reentrncia consiste na capacidade de um cdigo de programa (cdigo reentrante) ser compartilhado, na memria, por diversos usurios, existindo, deste modo, apenas uma cpia carregada. Logicamente, este cdigo no pode ser alterado e cada 36

usurio pode estar em um ponto diverso do programa, manipulando seus prprios dados.

3.2. O Gerenciador de Buffer O gerenciador de buffer funciona com base no seguinte princpio: toda informao armazenada em M1, em qualquer instante, tambm est armazenada em M2. Contudo, o inverso no verdade. O SGBD comunica-se diretamente com M1 e M1 comunica-se com M2. Caso a informao desejada pelo SGBD no se encontre em M1, o gerenciador de buffer realiza uma realocao de armazenamento apropriada de M1, ou seja, carrega de M2 para M1 a informao requerida. Desta forma, um gerenciador de buffer eficiente aquele em que a Informao desejada deve ser encontrada em M1 com uma taxa de freqncia tima. O desempenho (performance) de um gerenciador de buffer medida com base na sua taxa de acerto (H). A taxa de acerto definida pela probabilidade que os endereos gerados pelo SGBD refiram-se a informao j alocada em M1. A taxa de acerto determinada experimentalmente como descrito a seguir: um conjunto de programas (consultas) executado. Os nmeros de referncias de endereos satisfeitas por M1 e M2 so registrados (contabilizados). Essas quantidades so denotadas por N1 e N2. Assim, N1 a quantidade de vezes que a informao (bloco/pgina) desejada j se encontrava em M1, enquanto N2 a quantidade de vezes que a informao (bloco/pgina) desejada teve que ser levada (copiada) do disco (M2) para o buffer (M1). A taxa de acerto calculada aplicando-se a frmula:

H= N1 / (N1+N2) Assim, a taxa de acerto tima deve tender a 1. J taxa de no acerto definida por 1-H.

37

Considere que TA1 e TA2 sejam os tempos de acesso de M1 e M2, respectivamente. O tempo mdio para o SGBD acessar um dado no sistema de memria dado por:

TA = H.TA1 + (1-H).TA2

(1)

Caso um determinado bloco (pgina) no seja encontrado em M1, uma pgina do banco de dados (em disco) contendo a palavra transferida para M1. Seja TB o tempo de transferncia de uma pgina do disco para o buffer, temos que:

TA2 = TB + TA1 Assim, substituindo (2) em (1), temos:

(2)

TA = TA1 + (1-H).TB A razo (r) do tempo de acesso de um sistema de memria virtual com dois nveis definida como:

r= TA2 / TA1 A eficincia de acesso (e) de um sistema de memria virtual determinada pela equao:

e= 1 / [r+(1-r).H]

O objetivo obter valores para e prximos a 1.Para isso necessrio que H seja prximo a 1.

38

3.3. Mecanismo de Paginao em SGBDs A operao mais importante em qualquer sistema de memria virtual a troca de blocos de informao entre os nveis de memria. Esta operao denominada paginao (ou swapping). Essa troca ocorre de acordo com a demanda de processamento. Por Demanda de Paginao entende-se a propriedade que indica quando uma operao de paginao deve ocorrer. A Poltica de Alocao diz respeito ao mtodo utilizado para determinar o local (endereo) da memria principal, onde uma nova pgina deve ser carregada. Existem dois tipos de alocao: Alocao esttica e Alocao Dinmica. Na alocao esttica, cada pgina de dados est ligada a uma regio fixa da memria principal. J na alocao dinmica, a regio de memria principal na qual uma pgina K carregada varivel. A alocao dinmica pode ser ainda classificada em preemptiva e no preemptiva. Na alocao dinmica no preemptiva, a pgina a ser carregada s pode ser alocada em um espao vazio da memria principal (buffer), enquanto na alocao dinmica preemptiva a pgina a ser carregada pode ser alocada em um espao ocupado por outra pgina K. Neste caso, a pgina K deve ser re-alocada em outro endereo ou removida totalmente da memria (e copiada para disco).

3.4. Polticas de Alocao de Pginas Quando no h mais lugar disponvel no buffer, um bloco deve ser removido do buffer antes que um novo bloco possa ser copiado para ele. O objetivo principal de uma poltica (ou estratgia) de substituio de pginas (blocos) em um buffer minimizar os acessos a disco. As principais polticas de alocao dinmica preemptiva so:

39

FIFO (First-In First-Out): A pgina a ser carregada alocada na regio de buffer ocupada pela pgina carregada menos recentemente no buffer.

LRU (Least Recently Used): A pgina a ser carregada alocada na regio de buffer ocupada pela pgina acessada mais remotamente (tempo).

MRU (Most Recently Used): A pgina a ser carregada alocada na regio de buffer ocupada pela pgina acessada mais recentemente.

Para programas de propsito geral, como um sistema operacional, por exemplo, no possvel prever precisamente quais blocos sero referenciados. Por isso, tais sistemas, em geral, utilizam o padro de referncias passadas como uma forma de prever as referncias futuras. Entretanto, um sistema de banco de dados capaz de prever o modelo de futuras referncias de forma mais precisa que um sistema operacional. A solicitao de um usurio ao sistema de banco de dados envolve diversos passos. O sistema de banco de dados capaz de determinar antecipadamente quais blocos sero necessrios por meio da verificao de cada um dos passos necessrios para executar a operao solicitada pelo usurio. Assim, diferentemente dos sistemas operacionais, que devem se basear no passado para prever o futuro, os sistemas de bancos de dados podem ter informaes relativas ao futuro prximo. Os SGBDs costumam utilizar os algoritmos LRU (Least Recently Used) ou Clock2 (Two Round Clock) para gerenciar o buffer na memria principal. Contudo, o esquema LRU, em banco de dados, mais elaborado que em sistemas operacionais, pois o sistema de banco de dados capaz de determinar antecipadamente quais blocos sero necessrios por meio da verificao de cada um dos passos necessrios para executar a operao solicitada pelo usurio. Para ilustrar, consideremos a seguinte expresso da lgebra relacional:

40

Credor

Cliente

Suponha que o algoritmo de juno a ser utilizado o NestedLoop Join (mostrado a seguir). Assuma tambm que as duas relaes deste exemplo sejam armazenadas em arquivos

separados. For each tupla b de credor do For each tupla c de cliente do If b[nome_cliente] = c[nome_cliente] then Begin Seja x definida da seguinte forma: X[nome_cliente]:= b[nome_cliente] X[numero_emprestimo]:= b[numero_eprestimo] X[rua_cliente]:= b[rua_cliente] X[cidade_cliente]:= b[cidade_cliente] Inclua a tupla x como parte do resultado de credor x cliente End End End

Porm, as polticas de LRU e clock2 nem sempre constituem a melhor estratgia para substituio de pginas em um sistema de banco de dados. Um dos principais cenrios que evidenciam este fato ocorre quando vrios usurios requisitam a leitura seqencial (scan) de um conjunto de dados (uma tabela, por exemplo). Considere a seguinte situao. Suponha que o buffer pool possua 10 pginas, e que o arquivo a ser lido contm 10 ou menos pginas. Assuma, por simplicidade, que no existe concorrncia na requisio das pginas, durante o primeiro scan sobre o arquivo todas as pginas sero levadas do disco para o buffer pool (executa operaes de I/O). As operaes de scan subseqentes iro

sempre encontrar a pgina desejada no buffer. Por outro lado, suponha que o arquivo, a ser lido seqencialmente, possui 11 pginas (o qual um nmero maior que o nmero de pginas disponveis no buffer pool). Usando LRU, todas as operaes de scan (sobre o arquivo) tero que ler todas as pginas do arquivo do 41

disco e levar para o buffer pool (operao de I/O). Nesta situao, chamada sequential flooding, LRU a pior estratgia para substituio de pginas. Podemos observar, para este exemplo, que uma vez que uma tupla de Credor tenha sido processada, a tupla no ser necessria novamente. Portanto, uma vez que o processamento de um bloco inteiro de tuplas de Credor seja completado, este bloco no mais necessrio na memria. Entretanto, como ele foi usado

recentemente ele ainda permanecer no buffer por um longo perodo de tempo. O gerenciador de buffer deveria ser instrudo a liberar o espao ocupado por um bloco de credor assim que a ltima tupla tenha sido processada. Essa estratgia de gerenciamento de buffer chamada de arremesso imediato. Agora considere os blocos contendo as tuplas de Cliente. Precisamos analisar cada bloco de tuplas de Cliente uma vez para cada tupla da relao Credor. Assim, quando o processamento de um bloco de tuplas de Cliente concludo, este no ser mais necessrio at o processamento da prxima tupla de Credor, antes disso todos os demais blocos de Cliente devero ser lidos novamente. Entretanto, como este bloco foi usado recentemente ele ainda permanecer no buffer por certo perodo de tempo, o que inteiramente desnecessrio. Na verdade, a estratgia tima para a substituio de pginas neste exemplo a MRU. Para que esta estratgia funcione corretamente para o nosso exemplo, o sistema deve imobilizar (fixar) o bloco cliente sendo correntemente processado. Assim que a ltima tupla deste bloco tiver sido processada, o bloco liberado e ele se tornar o bloco mais recentemente utilizado. Sendo, portanto, o prximo a ser retirado do buffer. De forma similar este mecanismo se aplica aos blocos da relao Credor. Surpreendentemente, a estratgia mais utilizada em sistemas de banco de dados a LRU. A poltica FIFO tambm possui situaes em que comete srios equvocos. Um bloco usado repetidamente, digamos o bloco raiz de um ndice de uma rvore B, eventualmente se tornar o bloco 42

mais antigo em um buffer poll. Logo, ele ser gravado mais uma vez em disco. Entretanto, pouco tempo depois ele ter que ser lido novamente e transferido do disco para o buffer (por exemplo, quando o ndice for utilizado novamente). Uma soluo para este problema fixar a raiz, ou seja, indicar que a pgina em que esta se encontra no pode ser removida do buffer. Estes blocos so ditos fixados. A estratgia ideal de substituio de pginas em bancos de dados requer o conhecimento das operaes de banco de dados em processamento. No se conhece uma nica estratgia que manipule bem todos os possveis cenrios. De fato, surpreendentemente, um grande nmero de SGBDs utiliza o LRU a despeito das falhas dessa estratgia. A estratgia utilizada por um gerenciador de buffer para a substituio de blocos influenciada por outros fatores alm do tempo no qual o bloco ser referenciado novamente. Se o sistema est processando solicitaes de vrios usurios concorrentemente, o subsistema de controle de concorrncia pode ter de atrasar algumas solicitaes para assegurar a preservao da consistncia do banco de dados. Se o gerenciador de buffer receber informaes do subsistema de controle de concorrncia indicando quais solicitaes esto sendo atrasadas, ele pode usar estas informaes para alterar sua estratgia de substituio de blocos.

Especificamente, os blocos necessrios para as solicitaes ativas (no atrasadas) podem ser retidos no buffer s custas de blocos necessrios para as solicitaes atrasadas. O subsistema de recuperao de falhas impe restries rigorosas substituio de blocos. Se um bloco tiver sido modificado, o gerenciador de buffer no tem permisso de escrever de volta no disco a nova verso do bloco no buffer, uma vez que isso destruiria a verso antiga. Em vez disso, o gerenciador de buffer deve obter permisso do subsistema de recuperao de falhas antes de escrever um bloco de volta. O subsistema de recuperao de falhas pode demandar que determinados blocos tenham sua sada 43

forada antes de dar permisso para que o gerenciador de buffer remova o bloco solicitado. Adicionalmente utilizao do conhecimento que o sistema deve ter sobre a solicitao sendo processada, o gerenciador de buffer pode utilizar informaes estatsticas relativas probabilidade de que uma solicitao ir referenciar uma relao em particular. O dicionrio de dados uma das partes do banco de dados mais freqentemente acessadas. Assim o gerenciador de buffer no deveria tentar remover blocos do dicionrio de dados da memria principal a no ser que outros fatores determinem que isso seja feito. Como um ndice pode ser acessado mais freqentemente que o prprio arquivo, o gerenciador de buffer, em geral, no deveria remover os blocos de ndices da memria principal se houver outras alternativas.

3.5. Exerccios 1. Considere um mecanismo de buffer com dois nveis. A rea de buffer em memria principal M1 apresenta tempo de acesso igual a 10-7s e taxa de acerto igual a 0.7. A memria M2 est montada atravs de uma unidade de disco com as seguintes caractersticas: (a) Palavra de 64 bits (b) Velocidade de rotao do disco: 5400 r/min (c) Capacidade de armazenamento de cada trilha: 64000 bits (d) Capacidade de cada setor de uma trilha: 64 bits Suponha que o sistema apresenta um barramento com velocidade de transmisso extremamente alta. Portanto, o tempo gasto para transferir dados atravs do barramento da unidade de disco at a memria principal desprezvel. Considere o tempo de procura igual a 10-6s. Calcule a eficincia de acesso desse sistema e indique se este valor est prximo ou no do valor ideal. Justifique sua resposta.

44

Processamento de Transaes

Esta

unidade

discute

em

detalhes

o

problema

do

processamento de transaes em bancos de dados. definido precisamente os conceitos do modelo convencional de transaes. Noes de transao e schedules so discutidas e examinadas. O critrio de corretude convencional, denominado de serializabilidade, descrito. Vantagens e desvantagens deste modelo so apontadas e discutidas. Abordamos tambm a relao entre corretude e confiabilidade de schedules.

45

SUMRIO

UNIDADE II PROCESSAMENTO DE TRANSAES

1. INTRODUO 1.1. O Problema da Concorrncia em BDs ..................... 00 1.2. Conceito de Transao............................................. 00 1.3. Estados de uma transao........................................00 1.4. Propriedades da transao....................................... 00

2. EXECUES CONCORRENTES 2.1. Acessos Concorrentes.............................................. 00 2.2. Controle de Concorrncia......................................... 00 2.3. Reviso..................................................................... 00

3. ISOLAMENTO DE TRANSAES 3.1. Transaes Sequenciais........................................... 00 3.2. Execuo Correta de Transaes Concorrentes...... 00 3.2.1. Equivalncia de estado final.......................... 00 3.2.2. Equivalncia de viso.................................... 00 3.2.3. Equivalncia de conflito................................. 00 3.3. Serializabilidade........................................................ 00 3.4. Grafo de serializao de um schedule S................... 00 3.5. Prefixo de um Schedule............................................ 00 3.6. Exerccios.................................................................. 00

4. CONFIABILIDADE DE SCHEDULES 4.1. Corretude x Confiabilidade....................................... 00 4.2. Schedule Recupervel............................................... 00 4.3. Schedule que Evita Abort em Cascata.......................00 4.4. Schedule Preciso (Strict)............................................ 00 46

4.5. Exerccios............................................. 00

47

UNIDADE II PROCESSAMENTO DE TRANSAES1. INTRODUO

Aps o acompanhamento dessa lio o aluno ser capaz de entender como tratar as questes referentes a transaes, tipos de isolamento e modos de bloqueios.

1.1. O Problema da Concorrncia em BDs Os SGBDs so sistema multiusurio, geralmente. Desta forma, a informao contida nele pode ser acessada e modificada de maneira concorrente. Esta situao pode levar o banco de dados a um estado inconsistente (por exemplo, redundncia de dados). Para que possamos entender melhor esta situao, vamos definir que todo banco de dados em seu estado inicial, est em um estado consistente, ou seja, todas as suas restries de consistncia esto preservadas. A mudana de estado (figura 1) do Banco de Dados (BD) se d no instante em que os dados do mesmo sofrem alguma alterao. Sendo assim, as operaes de incluso, excluso e alterao de dados, alteram o estado do BD e necessrio que qualquer alterao de estado do BD, leve o mesmo a um estado sempre consistente.

Figura 1. Mudana de estados do BD

O SGBD deve oferecer mecanismos para esse controle sem prejudicar o acesso concorrente aos dados, pois um SGBD multiusurio tem que permitir o acesso simultneo de vrios usurios 48

base de dados. O SGBD deve oferecer um controle de concorrncia para garantir que o resultado de vrias modificaes base de dados seja correto, como no caso de uma aplicao que controla reservas de vos. desta necessidade que surge o princpio do controle de concorrncia que limita as leituras e modificaes simultneas disparadas ao mesmo dado por diferentes usurios. A ideia de acesso concorrente ou multi-usurios considera que operaes de um programa podem ser executadas entre duas operaes de outro programa. Como vimos, estas operaes causam transies de estado no BD e caso estas transies de estado gerem estados inconsistentes do BD, ento elas so ditas transies incorretas. (Figura 2) Portanto, o estado de um banco de dados representa uma viso instantnea do mundo, refletindo apenas seus aspectos estticos. Entretanto, as mudanas que ocorrem em um mundo real devem ser refletidas no banco de dados. Essas mudanas so capturadas pelo conceito de transio de estados. Uma transio de estado representa o salto de um determinado estado para outro. Estas transies so realizadas pelos programas aplicativos que contm operaes de leitura e escrita sobre os objetos do banco de dados. A figura 2 apresenta o caso de transies incorretas. Acompanhando a execuo de acordo com a linha do tempo (seta verde, de cima para baixo), vemos que o programa 1 inicia sua execuo realizando duas leituras de dados (select) e uma atualizao (update) antes do programa 2 iniciar suas operaes. Quando o programa 2 realiza suas consultas base de dados, verificando os saldos das contas 12 e 13, respectivamente, neste instante o programa 1 ainda no alterou o valor do saldo da conta 13. Desta forma quando o programa 2 mostrar os valores dos saldos, a atualizao feita pelo programa 1 no saldo da conta 13 no aparecer, provocando uma inconsistncia no resultado da consulta.

49

medida que mais usurios comeam a compartilhar os mesmos dados, aqueles sistemas que no tiveram um planejamento adequado esto sujeitos a apresentar problemas de desempenho, deadlocks e bloqueios que diminuem a concorrncia no acesso aos dados.

Programa-1 Select saldo into :valor1 From t_conta where num_conta = 12 Select saldo into :valor2 From t_conta where num_conta = 13 valor1 = valor1 + 500 update t_conta set saldo = :valor1 where num_conta = 12

Programa-2

Select saldo into :valor1 From t_conta where num_conta = 12 Select saldo into :valor2 From t_conta where num_conta = 13

Valor2 = valor2 +300 update t_conta set saldo = :valor2 where num_conta = 13

Tempo

Display (Valor1, Valor2) inconsistente retrieval

Figura2. Transies Incorretas

Este um problema comum em SGBDs. No decorrer deste captulo, veremos mais exemplos como este, bem como a forma existente para trat-lo. Para entender o conceito de concorrncia em banco de dados, se faz necessrio entender primeiramente o conceito de transao.

50

1.2. Conceito de transao Transao pode ser entendida como uma Abstrao que representa a seqncia de operaes de bancos de dados resultantes da execuo de um programa [Eswaram et al]. A transao leva em conta apenas as operaes de leitura (read) e escrita (write) que esto presentes nela. Como pode ser visto na Figura 3, o cdigo executado pelo programa-1 executado em uma transao (T1) e para esta transao, apenas os acessos ao Banco de Dados sero contabilizados.

Programa-1 Select saldo into :valor1 From t_conta where num_conta = 12 valor1 = valor1 + 500 update t_conta set saldo = :valor1 where num_conta = 12

Figura 3. Cdigo de uma transao

Desta forma, a expresso que soma 500 varivel valor1 desconsiderada pela transao, sendo que apenas as operaes de select (read) e update (write) sero consideradas como operaes da transao T1. Como forma de simplificao abreviamos a leitura (read) para r e a escrita (write) para w, ambos indexados pelo nmero da transao, neste caso T1. Sendo assim, a sequncia de operaes executadas na figura 3, passa a ser representada da seguinte forma: T1 = r1(conta_12) w1(conta_12) Como visto, transao pode ser entendida como uma srie de operaes sobre itens no banco de dados que podem alterar o seu estado. As operaes so delimitadas com uma instruo de incio da transao (Begin Transaction) e no final com uma instruo de fim da transao Commit para efetivar as alteraes, ou uma 51

instruo Rollback quando for necessrio descartar todas as alteraes realizadas no banco de dados. Para alguns renomados autores, Transao : uma unidade lgica de processamento no BD (Navathe) uma unidade de execuo do programa que acessa e possivelmente atualiza vrios itens de dados (Silberschatz)

Possveis operaes dentro de um banco de dados: BEGIN_TRANSACTION Incio da execuo de uma transao END_TRANSACTION Fim da Transao READ(x) ou WRITE(x) Operaes de leitura de um dado x e escrita do dado x em um banco de dados COMMIT Transao completou sua execuo com sucesso ROLLBACK (ou ABORT) Transao foi abortada, no terminou com sucesso e as mudanas realizadas devem ser desfeitas.

Este conjunto de operaes compreendidos dentro da transao considerado uma unidade lgica de trabalho, desde que possua um conjunto de propriedades conhecida pelo acrnimo de ACID, descrito mais frente neste captulo.

52

1.3 Estados de uma transao

Ativa estado inicial de toda transao selecionada para execuo enquanto ativa, uma transao executa uma ou mais operaes read e write

Em Processo de Efetivao entra nesse estado aps executar sua ltima operao (solicitao de COMMIT) neste momento, o SGBD precisa garantir que as suas atualizaes sejam efetivadas com sucesso (no sofra falhas) aplicao de tcnicas de recovery

Efetivada entra nesse estado aps o SGBD confirmar que todas as modificaes da transao esto garantidas no BD (COMMIT OK) exemplos: gravao em Log, descarga de todos os buffers em disco

53

Em processo de aborto entra nesse estado se no puder prosseguir a sua execuo pode passar para esse estado enquanto ativa (I) ou em processo de efetivao (II) exemplo (I): violao de RI exemplo (II): pane no S.O. suas aes j realizadas devem ser desfeitas (ROLLBACK)

Concluda estado final de uma transao indica uma transao que deixa o sistema as informaes da transao mantidas em catlogo podem ser excludas operaes utilizados, ... se a transao no concluiu com sucesso, ela pode ser reiniciada automaticamente feitas, dados manipulados, buffers

1.4. Propriedades da transao Nos bancos de dados que trabalham com transaes de curta durao, como o caso dos bancos de Dados Relacionais (BDR), excencial que sejam respeitadas as propriedades de ACID (Atomicidade, Consistncia, Isolamento, Durabilizade), descritas a seguir: Atomicidade: tudo ou nada. Todas as aes da transao acontecem ou nenhuma pode acontecer; Consistncia: se toda a transao consistente, e o BD inicia consistente, ento o BD termina consistente; Isolamento: a execuo de uma transao isolada de outras transaes, ou seja, as alteraes realizadas por uma

54

transao no sero visualizadas pelas outras transaes at que elas sejam efetivamente atualizadas (commit); Durabilidade: se uma transao finalizada, seu efeito persiste.

Exemplo Bancrio - considere a seguinte transao: Suponha que T2 seja uma transao que transfere R$ 100,00 da conta X para a conta Y. T2: read (X); X := X 100; write (X); read (Y); Y := Y + 100; write (Y)

Analisando cada uma das propriedades ACID no exemplo bancrio: Atomicidade Suponha os valores X=R$1.000 e Y=R$2.000 Suponha uma falha no meio da transao R$ 900,00 e R$ 2.000,00 (somente a retirada foi efetuada) A atomicidade garante que todas as operaes sero efetuadas ou nenhuma delas ser. Para esta suposta falha, a operao de retirada desfeita retornando o saldo da conta X para R$ 1.000 Consistncia Se os dados elas estiverem devem consistentes permanecer antes da

transao,

consistentes

depois da transao tambm. Isolamento Operaes no podem se intercalar, gerando um estado inconsistente. Mesmo que uma operao leia informaes da outra, a consistncia deve ser garantida. Durabilidade 55

Quando uma transao executou com sucesso, preciso garantir que nenhuma falha resulte na perda dos dados j armazenados.

56

UNIDADE II PROCESSAMENTO DE TRANSAES

2. EXECUES CONCORRENTES

2.1 Acessos Concorrentes Os acessos concorrentes devem ser tratados pelos bancos de dados para garantir a integridade das alteraes realizadas nas informaes. Em um mesmo momento diversos usurios podem estar realizando as mais variadas atualizaes no mesmo banco de dados, e em alguns casos alterando as mesmas informaes. Para solucionar este problema o banco de dados possui diferentes mecanismos, possibilitando ao desenvolvedor a escolha da melhor forma para a aplicao tratar acessos concorrentes mesma informao.

Figura 4. Lost update

Na figura 4 apresentado um erro provocado pelo acesso concorrente ao banco de Dados, a perda de atualizao ou lost update. Este problema ocorre com bastante frequncia e se no for tratado devidamente pode trazer srios problemas de inconsistncia 57

para os dados. O occorreu neste caso, foi que a atualizao (update da conta 12) do programa-1 foi sobreposta pela atualizao (update da conta 12) do programa-2, perdendo a adio de 500 ao valor inicial. Ou seja, o banco de dados foi levado de um estado incial consistente a um novo estado, agora inconsistente. Quando vrias transaes executam simultaneamente, a propriedade de ISOLAMENTO pode no ser mais preservada, pode haver interferncias. Um modo de evitar o problema de transaes executando simultaneamente executar transaes de modo serial, uma aps a outra. Para garantir que ela seja PRESERVADA o sistema precisa controlar a interao entre as transaes simultneas. Da a necessidade de se fazer o CONTROLE DE CONCORRNCIA.

2.2 Controle de Concorrncia o gerenciamento das operaes concorrentes no BD, garantindo o isolamento Permite das que transaes vrios usurios executadas acessem

concorrentemente.

simultaneamente os dados compartilhados. Estes usurios entram em concorrncia quando tentam acessar os mesmos dados ao mesmo tempo. Porque fazer o controle de concorrncia: Melhor throughput e utilizao dos recursos Transao consiste de muitas etapas como: atividades de E/S, utilizao da CPU que podem ser executadas em paralelo. Tudo isso aumenta o throughput, isto , o nmero de transaes executadas em determinada quantidade de tempo e a utilizao dos recursos. Tempo de espera reduzido Pode haver transaes curtas e longas. Se a execuo for serial, uma transao curta pode esperar muito tempo at uma que transao longa termine. Se elas forem executadas simultaneamente, compartilhando os

58

ciclos da CPU, o tempo mdio de resposta ser reduzido.

No SGBD, o responsvel pelo Controle de Concorrncia o escalonador (Scheduler). Ele o responsvel por fazer o entrelaamento (interleaving) de operaes. Por entrelaamento, entenda que operaes de um programa podem ser executadas entre duas operaes de outro programa. O Schedule (histria) representa a ordem cronolgica em que as instrues so executadas no sistema. O escalonador (scheduler) define uma seqncia de operaes de um conjunto de transaes concorrentes, preservando a ordem das operaes em cada uma das transaes.

Escalonador serializvel: As operaes de cada transao so executadas de maneira consecutiva sem nenhuma intercalao nas operaes. Soluo ineficiente !!! vrias transaes podem esperar muito tempo para serem executadas. CPU pode ficar muito tempo ociosa. enquanto uma transao faz I/O, por exemplo, outras transaes poderiam ser executadas.

59

Obs.1: A execuo em srie no permite nunca que um BD fique em um estado inconsistente. Obs.2: Planos seriais desperdiam tempo da CPU e so inaceitveis na prtica.

Escalonador no-serializvel: as operaes de um conjunto de transaes so executadas de maneira intercaladas. escalonamento (schedule) no-serial e ntegro.

O objetivo da capacidade de serializao de encontrar escalonadores no seriais que permitam uma execuo concorrente, sem interferir uma transao na outra e conseqentemente, sem gerar um estado inconsistente.

Execuo

concorrente

de

transaes

implica

em

um

entrelaamento das operaes destas transaes. Sendo assim, uma execuo correta das transaes depende do entrelaamento correto de suas operaes (Figura 5).

60

Figura 5. Entrelaamento de operaes.

Quando um entrelaamento est correto? Dizemos que uma execuo correta produz um estado consistente no BD.

Problemas de um escalonamento no-serial mal definido (invlido): atualizao perdida (lost-update)

Uma transao Ty grava em um dado atualizado por uma transao Tx

leitura suja (dirty-read)

61

TX atualiza um dado X, outras transaes posteriormente lem X, e depois TX falha

2.3 Reviso

O que uma transao? Uma seqncia de aes que so consideradas uma unidade atmica (indivisvel) de trabalho.

O que conflito entre transaes? O conflito entre transaes ocorre quando mais de uma transao tenta acessar o mesmo item de dado.

O que mecanismo de controle de concorrncia? um mecanismo que garante a Consistncia e a Isolao dos dados, dada a atomicidade das transaes.

Por que estudar mecanismos de controle de concorrncia? Trabalhamos em ambientes multi-tarefas necessrio compartilhar dados; necessrio manter a consistncia dos dados.

62

UNIDADE II PROCESSAMENTO DE TRANSAES

3. ISOLAMENTO DE TRANSAES

3.1 Transaes Sequenciais Conforme vimos anteriormente, transaes executadas de forma seqencial uma seguida da outra so ditas transaes corretas. Entretanto a execuo de schedules seriais limita o acesso concorrente aos dados e, por conseqncia, diminui o throughput (quantidade de trabalho realizado em um intervalo de tempo). O ideal seria permitir a execuo concorrente de transaes, mas de tal forma que resultados consistentes sejam produzidos no banco de dados. Podemos dizer ento que temos: Premissa o A execuo de uma transao correta, se executada isoladamente. consistente. Teorema o Toda execuo serial de transaes correta S=T1 T2 T3 ... Tn-1 Tn Este o padro para corretude de schedules!!! Pois, produz sempre um estado

A figura 6 apresenta o exemplo da execuo serial de transaes. Primeiramente executada toda a transao T1 e s depois executada a transao T2.

63

T1 Select saldo into :valor1 From t_conta where num_conta = 12 Select saldo into :valor2 From t_conta where num_conta = 13 valor1 = valor1 + 500 update t_conta set saldo = :valor1 where num_conta = 12 Valor2 = valor2 +300 update t_conta set saldo = :valor2 where num_conta = 13

T2

Select saldo into :valor1 From t_conta where num_conta = 12 Select saldo into :valor2 From t_conta where num_conta = 13

Figura 6. execuo serial de transaes

Como vimos, apesar de correto este mtodo no o desejvel para um ambiente multi-usurio. Precisamos de um critrio de corretude que garanta mais paralelismo. Neste caso, precisamos de transaes executando concorrentemente e de maneira correta. 3.2 Execuo Correta de Transaes Concorrentes Partindo do teorema de que toda execuo serial de transaes correta, temos que um escalonamento no-serial de um conjunto de transaes deve produzir resultado equivalente a alguma execuo serial destas transaes. Logo: Seja um schedule S o Se S produz um estado de banco de dados igual ao produzido por alguma execuo serial do mesmo conjunto de transaes, ento a execuo S correta (Figura 7).

64

Figura 7. Execuo serial e execuo no-serial de schedules.

Logo, escalonamento serializvel um escalonamento equivalente a uma execuo serial das transaes. Desta premissa, surge o conceito de SERIALIZABILIDADE. Serializabilidade a Iluso de que transaes so executadas como aes atmicas (sem interferncias ou interleavings). Equivalncia de schedules o Dado um conjunto = {T1, T2, ..., Tn} de transaes Encontrar schedules cujas execues produzam o mesmo estado no BD que a execuo de algum schedule serial sobre . Desta forma, reduzimos o problema de identificar schedules corretos ao problema de definir equivalncia entre schedules. Existem trs diferentes noes de equivalncia que podem ser encontradas na literatura. So elas: Equivalncia de estado final Equivalncia de viso Equivalncia de conflito Para o estudo de equivalncias, a notao ri(x) e wi(x) ser utilizada para representar operaes de leitura e escrita executadas por uma transao Ti sobre um objeto x. OP(Ti) representa o conjunto de todas as operaes executadas pela transao Ti. Alm das operaes de leitura e escrita uma transao Ti dever conter aps todas as operaes de leitura e escrita uma operao commit (ci) ou abort (ai), mas no ambas. 65

A relao de ordem