Gerenciador De Armazenamento
Artigos Científicos: Gerenciador De Armazenamento. Pesquise 862.000+ trabalhos acadêmicosPor: kassioms • 23/5/2014 • 4.150 Palavras (17 Páginas) • 651 Visualizações
3. Gerenciador de Armazenamento
Conforme já vimos, o gerenciador de armazenamento é composto por 3 módulos: Gerenciador de Espaço em Disco, Gerenciador de Buffer Pool e Motor de Execução
3.1. Gerenciador de Espaço em Disco (GED)
- suporta o conceito de página como unidade de dado;
- disponibiliza comandos para alocar e desalocar uma página;
- disponibiliza comandos para ler uma página do disco ou escrever uma página no disco ;
- o tamanho da página é escolhido ser do mesmo tamanho do bloco do disco. Páginas são armazenadas como blocos do disco tal que a leitura ou escrita de uma página pode ser feito em um acesso de disco.
É frequentemente útil alocar uma sequencia de páginas como uma sequencia continua de blocos de disco para manter os dados que são frequentemente acessados em ordem sequencial. Esta capacidade é essencial para explorar as vantagens de sequencialidade ao acesso a disco que discutimos na seção 2.5. Se esta capacidade é desejável deve ser providenciada pelo GED para os níveis mais altos do SGBD. Sendo assim, o GED esconde detalhes do hardware ( e possivelmente do sistema operacional) e permite que níveis mais altos do SGBD enxergue os dados como uma coleção de páginas.
3.1.1. Gerenciamento dos blocos livres
A base de dados aumenta e diminui na medida em que registros de dados são inseridos ou removidos. Embora os blocos de disco possam ter sido alocados sequencialmente, as alocações e desalocações de blocos (ou páginas), em geral, criam "buracos" numa área contigua de disco reservada para o SGBD. O GED deve gerenciar quais blocos estão livres e em uso e quais páginas estão em cada bloco ( a página está associada a dados e metadados, enquanto o bloco é apenas um "amontoado" de bytes).
Duas maneira para implementar este controle:
livre
livre
.
livre
Base de Dados
a) manter uma lista encadeada de blocos livres - na medida que os blocos são desalocados (por níveis mais altos do SGBD), um identificador associado ao bloco é incluído em uma lista de blocos livres para uso futuro. Um ponteiro para o primeiro bloco da lista de blocos livres é armazenado numa posição conhecida do disco.
Vantagens:
- identificação rápida de um bloco livre
b) manter um bitmap de 1 bit para cada bloco da área de disco previamente alocada, indicando se um bloco está alocado ou livre (1 - ocupado, 0 - livre)
1 0 0 1 1 0
Vantagens:
- acesso ao bloco livre é rápido, pois a consulta é feita em um vetor.
3.1.2 Usando o sistema de arquivos do SO para gerenciar espaço em disco
O Sistema Operacional também gerencia espaço em disco. Tipicamente um SO suporta a abstração de um arquivo como uma sequencia de bytes. O SO gerencia espaço no disco e traduz comandos tais como "Read byte i do arquivo pt" na correspondente instrução de baixo nível: "Read bloco m da trilha t do cilindro c do disco d. Um GED poderia ser construído usando arquivos do SO. Por exemplo, toda uma base de dados poderia ser armazenada em um ou mais arquivos do SO para o qual um número de blocos são alocados (pelo SO) e inicializados. O GED seria então responsável por gerenciar os espaços neste arquivos do SO.
Muitos SGBD não utilizam o sistema de arquivos do SO, mas ao contrário, possuem seu próprio gerenciador de disco ou construindo um totalmente independente do SO ou apenas estendendo as facilidades de um SO existente. Uma razão importante para isto é a portabilidade e a limitação que o sistema de arquivos do SO impõe ao tamanho máximo de um arquivo.
3.1.3 Especificação do GED
Um GED deve dispor das seguintes funções:
a) Aloca_Área_BD – esta função deve alocar uma área destinada ao banco de dados sendo criado e uma estrutura de dados que permita gerenciar a área alocada (chamada pelo motor de execução para executar uma das etapas do comando CREATE DATABASE nome);
b) Desaloca_Área_BD - esta função deve desalocar uma área previamente alocada au banco de dados e a estrutura de dados correspondente (chamada pelo motor de execução para executar uma das etapas do comando DROP DATABASE nome);
c) Aloca_Bloco – esta função deve alocar um bloco na área previamente reservada para a Base de Dados, caso haja blocos livres (chamada pelo motor de execução para executar uma das etapas do comando INSERT INTO nome_tabela (atributos) VALUES (valores) sempre que não há mais blocos já alocados para a tabela dada com espaço para suportar a inserção de mais uma tupla);
d) Desaloca_Bloco – esta função deve tornar um bloco ocupado novamente livre para ser reusado (chamada pelo motor de execução para executar uma das etapas do comando REMOVE FROM nome_tabela WHERE condição sempre que última tupla de um bloco for removida);
e) Lê_Bloco – esta função deve ler um determinado bloco do disco e colocá-lo num frame do buffer pool (chamada pelo Gerenciador de Transações ou pelo GBP sempre que um bloco deva ser trazido para a memória principal);
f) Grava_Bloco – esta função deve gravar um bloco que está num frame da memória no disco (chamada pelo Gerenciador de Transações ou pelo GBP sempre que um bloco deva ser gravado em disco);.
TDA GED é:
Dado: um bloco de bytes
Operações:
Aloca_Área_BD
entrada:
...