Cap. 2 - Armazenamento de
Dados: Discos e Ficheiros
Abel J.P. Gomes
Bibliografia:
1. R. Ramakrishnan and J. Gehrke. “Database Management Systems”. Addison-Wesley, 2003 (cap.9).
“Yea, from the table of my memory I’ll wipe away all trivial fond records.”
2
1. Objectivos
Que tipos de memória existem num computador?Que tipos de memória existem num computador?
Quais são as características físicas dos discos rígidos eQuais são as características físicas dos discos rígidos e das cassetes (tapes), e como que afectam o design de das cassetes (tapes), e como que afectam o design de sistemas de bases de dados?
sistemas de bases de dados?
O que são os sistemas RAID de memória de massa, eO que são os sistemas RAID de memória de massa, e quais são as suas vantagens?
quais são as suas vantagens?
Como é que um DBMS regista o espaço em disco?Como é que um DBMS regista o espaço em disco? Como é que um DBMS acede e modifica os dados em Como é que um DBMS acede e modifica os dados em disco? Qual é o significado duma página enquanto disco? Qual é o significado duma página enquanto
unidade de armazenamento e transferência de dados? unidade de armazenamento e transferência de dados?
Como é que um DBMS cria e mantém ficheiros deComo é que um DBMS cria e mantém ficheiros de registos (records)? Como é que os registos estão registos (records)? Como é que os registos estão organizados em páginas, e como estão as páginas organizados em páginas, e como estão as páginas organizadas dentro dum ficheiro?
2. Estrutura Simplificada dum DBMS
Tipicamente, um RDBMS
tem uma arquitectura
estratificada.
A figura ao lado não
mostra as componentes
de controlo de
concorrência e
recuperação a falhas.
Cada sistema tem as
suas próprias
particularidades.
O livro referido mostra
uma descrição mais
detalhada.
Como será com o MS
Optimização e Execução de Inquirições Operadores Relacionais Ficheiros e Métodos de Acesso Gestão de Buffers
Gestão de Espaço em Disco
4
3. Discos e Ficheiros
Um DBMS salvaguarda
informação em discos.
No mundo da electrónica, os discos são um anacronismo mecânico!
Este facto tem grandes
implicações no design dum DBMS!
READ: transferênca de dados do disco para a memória
principal (RAM).
WRITE: transferência de dados da RAM para o disco. Ambas são operações de
custo elevado em termos de tempo e espaço em memória, de modo que devem
planeadas cuidadosamente! Optimização e Execução de Inquirições Operadores Relacionais Ficheiros e Métodos de Acesso Gestão de Buffers
Gestão de Espaço em Disco
3.1 Porque é que não se salvaguarda tudo
em memória?
Custos muito elevados.
Para ~$1000, CityDesk Ltd. vender-nos-á ou ~10GB de RAM ou 1.5TB de disco.
Memória principal é volátil. Queremos que os dados
sejam salvaguardados entre operações de execução. (Obviamente!) Optimização e Execução de Inquirições Operadores Relacionais Ficheiros e Métodos de Acesso Gestão de Buffers
Gestão de Espaço em Disco
6
4. Hierarquia de Memórias
Memória principal (RAM) para os dados actualmente em uso.
Disco para a base de dados principal (memória
secundária).
Cassetes (tapes) para arquivar versões antigas dos dados (memória
terciária). Registos Memória Cache Memória Principal Disco Electrónico Disco Magnético Disco Óptico
Cassete Magnética Maior,
Mais Lenta Mais Pequena,
5. Disco
Dispositivo de memória secundária de eleição. Principal vantagem relativamente às cassetes: acesso aleatório vs. sequencial. Dados são armazenados edevolvidos em unidades chamadas blocos de disco or páginas.
Ao contrário da RAM, o tempo para devolver um bloco dum disco varia
com a sua localização em disco, o que tem grande impacto no desempenho
8
5.1 Componentes dum disco
Os pratos giram (por exemplo, 120 rps).
A agulha move-se para dentro ou para fora de modo a posicionar a cabeça sobre a pista desejada. As pistas debaixo das cabeças formam um cilindro (imaginário!). Só uma cabeça lê/escreve em cada instante. Tamanho do bloco é múltiplo do tamanho do sector (que é fixo).
Disco com 3 pratos e 6 cabeças R/W
sector pista circular
5.2 Acesso a uma página em disco
Tempo de acesso (read/write) a um bloco em disco: tempo de procura (tempo que leva a mover agulhas
para posicionar cabeça sobre a pista)
latência rotacional (tempo de espera que o bloco/disco rode sob a cabeça)
tempo de transferência (tempo real que leva a mover os dados para/de a superfície do disco)
Tempo de procura e latência rotacional são dominantes no tempo de acesso total.
tempo de procura varia entre 0.3 e 10msec latência rotacional varia entre 0 e 4msec
taxa de transferência anda à volta de.08msec per 8K block
Chave para baixar o custo de I/O: reduzir os tempos de procura/rotação! Soluções de hardware vs.
10
5.3 Organização das páginas em disco
O conceito de bloco `Next’ :
blocos na mesma pista, seguidos por blocos no mesmo cilindro, seguidos por blocos no cilindro adjacente
Blocos num ficheiro devem ser organizados sequencialmente no disco (via `next’), para minimizar a latência rotacional e de procura. No caso dum escrutínio (scan) sequencial,
pré-pesquisa de várias páginas ao mesmo tempo é uma grande vitória!
6. Gestão de Espaço em Disco
A camada mais baixa dum DBMS faz a gestão de espaço
em disco (quer use o sistema de ficheiros do sistema operativo ou não?).
As camadas ou níveis mais elevados invocam esta camada
para:
alocar/desalocar uma página ler/escrever uma página
Melhor se um pedido de uma sequência de páginas é
satisfeita pelas páginas armazenadas sequencialmente no disco!
Responsabilidade do gestor de espaço em disco.
Níveis superiores não sabem como isto é feito, ou como o
espaço livre é gerido.
Embora eles possam assumir acesso sequencial a ficheiros!
− Daí que o gestor de espaço em disco deva fazer um trabalho decente.
12
De Volta ao Contexto
Optimização e Execução de Inquirições Operadores Relacionais Ficheiros e Métodos de Acesso Gestão de BuffersGestão de Espaço em Disco
6. Gestão de Buffers num DBMS
Dados têm de estar em RAM para que um DBMS opere sobre eles! Gestor de buffers oculta o facto de que nem todos os dados estão emRAM. Memória RAM
DB
Disco selecção da frame
ditada pela política de substituição BUFFER POOL free frame disk page
14
6.1 Quando uma página é pedida…
Dados têm de estar em RAM para que o DBMS opere sobre eles!
Tabela de informação da buffer pool contém: <frame#, pageid, pin_count, dirty> Se página pedida não está na pool:
Seleciona uma frame para substituição.
Só páginas não-afixadas (un-pinned) são candidatas!
Se frame está “dirty”, escreva-a para o disco
Ler página pedida do disco para a frame escolhida Afixa (pin) página e retorna o seu endereço.
Se os pedidos podem ser previstos (p.ex. escrutínios sequenciais) várias páginas podem pré-pesquisadas duma vez só!
6.2 Algo mais sobre gestão de buffers…
Solicitador duma página tem eventualmente de
desafixá-la (un-pinned), e indicar se a página foi modificada:
dirty bit é usado para isto.
Uma página na pool pode ser pedida várias vezes,
um pin count é usado.
Para afixar (pin) uma página, pin_count++
Uma página é candidata a substituição sse pin count == 0
(“unpinned”)
Controlo e recuperação de disrupção (crash control and recovery) pode envolver I/O adicional quando uma frame
é escolhida para substituição.
16
7. Políticas de Substituição nos Buffers
Uma frame é seleccionada para substituição com base numa política de substituição:
Least recently used (LRU) Most recently used (MRU) Clock
etc.
A política pode ter um enorme impacto no # de I/O’s; depende do padrão de acesso.
7.1 Política de substituição LRU
Least Recently Used (LRU)
para cada página na buffer pool, registar o tempo da última des-afixação (unpinned)
substituir a frame com o tempo mais antigo política muito comum: intuitiva e simples
Funciona bem para acessos repetidos a páginas
populares Problemas?
Problema: Inundação Sequencial (sequential flooding) LRU + varrimentos sequenciais repetidos.
# buffer frames < # pages in file significa que cada pedido duma página provoca uma operação de I/O. Ideia: MRU é melhor neste cenário?
18
7.2 Política de substituição ‘Clock’
Uma aproximação à LRU
Dispõe as frames num ciclo, armazena um reference bit per frame
pode ser visto como um 2nd chance bit
Quando pin count se reduz a 0, activa reference bit Quando substituição é necessária
do for each page in cycle {
if (pincount == 0 && ref bit is on) turn off ref bit;
else if (pincount == 0 && ref bit is off) choose this page for replacement; } until a page is chosen;
8. DBMS versus Sistema de Ficheiros do OS
OS faz gestão de buffers & espaço em disco: porque é
que não deixamos o OS fazer estas tarefas?
Algumas limitações, p.ex. a memória virtual do OS não tem uma gestão tão fina das páginas.
Gestão de buffers num DBMS requer a capacidade para:
afixar uma página na buffer pool, forçar uma
página para o disco & ordenar operações de escrita
(importante para implementar controlo e recuperação de disrupção)
ajustar política de substituição, and pré-pesquisar páginas com base nos padrões de acesso em
20
De Volta ao Contexto
Optimização e Execução de Inquirições Operadores Relacionais Ficheiros e Métodos de Acesso Gestão de BuffersGestão de Espaço em Disco
9. Ficheiros de Registos (records)
Blocos constituem a interface para I/O, mas…
As camadas superiores do DBMS operam sobre registos e ficheiros de registos.
FICHEIRO: Uma colecção de páginas, cada uma contendo uma colecção de registos. Deve suportar operações de:
inserir/apagar/modificar registos
pesquisar um registo particular (através do record id) escandir (scan) todos os registos (possivelmente com algumas condições sobre os registos a ser devolvidos)
22
9.1 Ficheiros (heap) não-ordenados
A estrutura mais simples dum ficheiro é aquela que
contém os registos sem qualquer ordem em particular. Estes ficheiros são conhecidos por heap files.
Quando o ficheiro se dilata ou contrai em tamanho, páginas em disco são alocadas e des-alocadas.
Para suportar operações ao nível dos registos, temos de:
registar as páginas num ficheiro registar o espaço livre em páginas registar os registos numa página
Existem muitas alternativas para registar isto. Vamos considerar 2
9.2 Heap file implementado como uma lista
O header page id e o heap file name têm de ser armazenados algures.
“catálogo” da base de dados
Cada página contém 2 ‘ponteiros’ + dados.
Header Page
Data
Page DataPage DataPage
Data
Page DataPage DataPage Pages with
Free Space Full Pages
24
9.3 Heap file implementado como uma
directoria de páginas
O verbete (entry) para uma página pode incluir o número de bytes livres na página.
A directoria é uma colecção de páginas; a
implementação por lista ligada é só uma alternativa. Muita mais pequena que a lista ligada de todas as
páginas HF! Data Page 1 Data Page 2 Data Page N header page DIRECTORY
9.4 Índices (uma antevisão furtiva)
Um heap file permite-nos devolver registos: pela especificação do rid, ou
pelo escrutínio sequencial de todos os registos
Às vezes, nós queremos registos que são devolvidos por especificação dos valores num ou mais campos, p.ex.
Encontrar todos os estudantes no DI
Encontrar todos os estudantes com nota superior a 10
Índices são estruturas de ficheiros que nos permitem
efectuar inquirições baseadas-em-valor duma forma eficiente.
26
10. Formatos de Páginas
Basicamente, temos 2 formatos:
registos de tamanho fixo
10.1 Formato de registos com tamanho fixo
Informação acerca dos tipos dos campos do registo é a mesma para todos os registos num ficheiro;
armazenada nos catálogos do sistema. Encontrar o i-ésimo campo faz-se por via
aritmética. base address (B) L1 L2 L3 L4 F1 F2 F3 F4 address = B+L1+L2 Fi = field i Li = length of field i
28
10.2 Formato de registos com tamanho
variável
Dois formatos alternativos (#fields é fixo), como se ilustra em baixo.
A segunda alternativa oferece acesso directo ao i-ésimo campo (field), armazenamento eficiente de nulls (valor especial para don’t know); pequena sobrecarga de directorias. $ F3 F1 F2 $ $ F4 $ Fields delimited by special symbol $ F2 F3 F1 F4
10.3 Formato de Páginas:
registos de tamanho fixo
Record id = <page id, slot #>. Na primeira alternativa,
quando se apaga um registo, move-se o último registo para o slot entretanto vago, o que altera o seu rid; isto pode não ser aceitável para referências externas.
Slot 1 Slot 2 Slot N
. . .
. . .
N . . . 0 1M M ... 3 2 1PACKED UNPACKED, BITMAP
Slot 1 Slot 2 Slot N Free Space Slot M 1 1 number
30
10.4 Formato de Páginas:
registos de tamanho variável
Pode mover registos sem alterar o rid; assim,
também é atractivo para registos de tamanho fixo.
Page i rid = (i,N) rid = (i,2) Rid = (i,1) Pointer to start of free space SLOT DIRECTORY N . . . 2 1 20 16 24 N # slots FREE SPACE DATA AREA Offset of record from start of data area
11. Catálogos do Sistema
Para cada relação:
nome, localização do ficheiro, estrutura do ficheiro (p.ex. heap file)
nome e tipo de cada atributo nome de cada índice
restrições de integridade Para cada índice:
estrutura (p.ex. B+ tree) e campos-chave de pesquisa Para cada vista:
nome e definição
+ estatística, autorização, tamanho da buffer pool, etc.
Catálogos são eles próprios armazenados como
32
11.1 Exemplo
Attr_Cat(attr_name, rel_name, type, position)
attr_name rel_name type position attr_name Attribute_Cat string 1
rel_name Attribute_Cat string 2 type Attribute_Cat string 3 position Attribute_Cat integer 4
sid Students string 1
name Students string 2
login Students string 3
age Students integer 4
gpa Students real 5
fid Faculty string 1
fname Faculty string 2
Sumário
Discos fornecem memória barata e não-volátil.
Acesso aleatório, mas o custo depende da localização da página
em disco; importante para organizar dados sequencialmente e minimizar os atrasos de procura e rotação do disco.
Gestor de buffers carrega páginas em RAM.
Uma página fica em RAM até ser libertada pelo solicitador. Escrita para disco quando uma frame é seleccionada para
substituição (o que acontece às vezes após solicitador libertar a página).
Escolha da frame baseia-se na política de substituição. Tenta pré-pesquisar várias páginas duma só vez.
DBMS vs. Suporte de Ficheiros do OS
DBMS precisa de funcionalidades que a maioria do OS’s não
oferecem, p.ex. forçar a ida duma página para disco, controlar a ordem de operações de escrita em disco, capacidade de controlar pré-pesquisa e política de substituição baseada em padrões de acesso previsíveis, etc.
34
Sumário
Formato de registos de tamanho variável com
directoria de offsets de campos suporta acesso directo ao i-ésimo campo e valores nulos.
Formato de entalhe (slotted) de páginas suporta registos de tamanho variável; este formato permite mover os registos na página.
Camada de ficheiros toma nota das páginas num ficheiro e suporta abstracção duma colecção de registos.
Páginas com espaço livre identificadas pela utilização duma lista ligada ou estrutura de directorias.
Índices suportam devolução eficiente de registos com base em valores de alguns campos.
Relações do catálogo armazenam informação acerca de relações, índices e vistas (Informação que é comum a todos os registos numa dada colecção.)