You are on page 1of 32

Yea, from the table of my memory

Ill wipe away all trivial fond records.


-- Shakespeare, Hamlet

Bases de Dados II

6638: BSc in Information Systems and Technologies

Cap. 2 Armazenamento de Dados: Discos e Ficheiros


Bibliografia:
R. Ramakrishnan and J. Gehrke. Database Management Systems. Addison-Wesley, 2003 (cap.9).

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Objectivos

Que tipos de memria existem num computador?

Quais so as caractersticas fsicas dos discos rgidos e das cassetes (tapes), e como que
afectam o design de sistemas de bases de dados?

O que so os sistemas RAID de memria de massa, e quais so as suas vantagens?

Como que um DBMS regista o espao em disco? Como que um DBMS acede e modifica
os dados em disco? Qual o significado duma pgina enquanto unidade de armazenamento
e transferncia de dados?

Como que um DBMS cria e mantm ficheiros de registos (records)? Como que os
registos esto organizados em pginas, e como esto as pginas organizadas dentro dum
ficheiro?

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Estrutura simplificada de um DBMS

Tipicamente, um RDBMS tem uma


arquitectura estratificada.

Optimizao e Execuo
de Inquiries

A figura ao lado no mostra as


componentes de controlo de concorrncia
e recuperao a falhas.

Operadores Relacionais

Cada sistema tem as suas prprias


particularidades.

O livro referido mostra uma descrio


mais detalhada.

Como ser com o MySQL Server?

Ficheiros e
Mtodos de Acesso
Gesto de Buffers
Gesto de Espao em Disco

DB

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Discos e ficheiros

Um DBMS salvaguarda informao em


discos.

No mundo da electrnica, os discos so


um anacronismo mecnico!

Este facto tem grandes implicaes no


design dum DBMS!

READ: transfernca de dados do disco para


a memria principal (RAM).

WRITE: transferncia de dados da RAM


para o disco.

Ambas so operaes de custo elevado em


termos de tempo e espao em memria,
de modo que devem planeadas
cuidadosamente!

Optimizao e Execuo
de Inquiries
Operadores Relacionais
Ficheiros e
Mtodos de Acesso
Gesto de Buffers
Gesto de Espao em Disco

DB

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Porque no se salvaguarda tudo em memria?

Custos muito elevados. Para ~$1000,


CityDesk Ltd. vender-nos- ou ~10GB de
RAM ou 1.5TB de disco.

Optimizao e Execuo
de Inquiries

Memria principal voltil. Queremos que


os dados sejam salvaguardados entre
operaes de execuo. (Obviamente!)

Operadores Relacionais
Ficheiros e
Mtodos de Acesso
Gesto de Buffers
Gesto de Espao em Disco

DB

6638 Bases de Dados II

Hierarquias de memria

Armazenamento de Dados: Discos e Ficheiros


Registos

Mais Pequena,
Mais Rpida

Memria Cache

Memria principal (RAM) para os dados


actualmente em uso.
Disco para a base de dados principal
(memria secundria).
Cassetes (tapes) para arquivar verses
antigas dos dados (memria terciria).

Memria Principal

Disco Electrnico

Disco Magntico

Disco ptico

Cassete Magntica

Maior,
Mais Lenta

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Disco

Dispositivo de memria secundria


de eleio.

Principal vantagem relativamente s


cassetes: acesso aleatrio vs.
sequencial.

Dados so armazenados e devolvidos


em unidades chamadas blocos de disco
or pginas.

Hard disk inside

Ao contrrio da RAM, o tempo para


devolver um bloco dum disco varia
com a sua localizao em disco, o
que tem grande impacto no
desempenho dum DBMS.
Hard disk with 3 plates and 6 R/W heads

6638 Bases de Dados II

Disco:
Componentes dum disco

Os pratos giram (por exemplo, 120


rps).

A agulha move-se para dentro ou para


fora de modo a posicionar a cabea
sobre a pista desejada. As pistas debaixo
das cabeas formam um cilindro
(imaginrio!).

S uma cabea l/escreve em cada


instante.

Tamanho do bloco mltiplo do tamanho


do sector (que fixo).

Armazenamento de Dados: Discos e Ficheiros


pista circular
sector

Disco com 3 pratos e 6 cabeas R/W

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Disco:
Acesso a uma pgina em disco

Tempo de acesso (read/write) a um bloco em disco:


tempo de procura (tempo que leva a mover agulhas para posicionar cabea sobre a pista)
latncia rotacional (tempo de espera que o bloco/disco rode sob a cabea)
tempo de transferncia (tempo real que leva a mover os dados para/de a superfcie do
disco)

Tempo de procura e latncia rotacional so dominantes no tempo de acesso total.


tempo de procura varia entre 0.3 e 10msec
latncia rotacional varia entre 0 e 4msec
taxa de transferncia anda volta de.08msec per 8K block

Chave para baixar o custo de I/O: reduzir os tempos de procura/rotao!


Solues de hardware vs. software?

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Disco:
Organizao das pginas 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 latncia rotacional e de procura.

No caso dum escrutnio (scan) sequencial, pr-pesquisa de vrias pginas ao mesmo


tempo uma grande vitria!

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Gesto de espao em disco

A camada mais baixa dum DBMS faz a gesto de espao em disco (quer use o
sistema de ficheiros do sistema operativo ou no?).

As camadas ou nveis mais elevados invocam esta camada para:


alocar/desalocar uma pgina
ler/escrever uma pgina

Melhor se um pedido de uma sequncia de pginas satisfeita pelas pginas


armazenadas sequencialmente no disco!
Responsabilidade do gestor de espao em disco.
Nveis superiores no sabem como isto feito, ou como o espao livre gerido.
Embora eles possam assumir acesso sequencial a ficheiros!
- Da que o gestor de espao em disco deva fazer um trabalho decente.

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

... voltando ao contexto!


Optimizao e Execuo
de Inquiries
Operadores Relacionais
Ficheiros e
Mtodos de Acesso
Gesto de Buffers
Gesto de Espao em Disco

DB

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Gesto de buffers num DBMS

Dados tm de estar em RAM


para que um DBMS opere
sobre eles!

Gestor de buffers oculta o


facto de que nem todos os
dados esto em RAM.

Pedidos de Pginas vindos de Nveis Superiores

BUFFER POOL
disk
page
free
frame

Memria RAM
Disco

DB

seleco da frame
ditada pela
poltica de
substituio

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Gesto de buffers num DBMS:


Quando uma pgina pedida...

Dados tm de estar em RAM para que o DBMS opere sobre eles!

Tabela de informao da buffer pool contm:


<frame#, pageid, pin_count, dirty>

Se pgina pedida no est na pool:


Seleciona uma frame para substituio.
S pginas no-afixadas (un-pinned) so candidatas!
Se frame est dirty, escreva-a para o disco
Ler pgina pedida do disco para a frame escolhida

Afixa (pin) pgina e retorna o seu endereo.

Se os pedidos podem ser previstos (p.ex. escrutnios sequenciais) vrias pginas


podem pr-pesquisadas duma vez s!

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Gesto de buffers num DBMS:


Algo mais sobre a gesto de buffers...

Solicitador duma pgina tem eventualmente de desafix-la (un-pinned), e indicar se


a pgina foi modificada:
dirty bit usado para isto.

Uma pgina na pool pode ser pedida vrias vezes,


um pin count usado.
Para afixar (pin) uma pgina, pin_count++
Uma pgina candidata a substituio sse pin count == 0 (unpinned)

Controlo e recuperao de disrupo (crash control and recovery) pode envolver I/


O adicional quando uma frame escolhida para substituio.
protocolo Write-Ahead Log (WAL); detalhes mais tarde!

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Polticas de substituio nos buffers

Uma frame seleccionada para substituio com base numa poltica de substituio:
Least recently used (LRU)
Most recently used (MRU)
Clock
etc.

A poltica pode ter um enorme impacto no # de I/Os; depende do padro de


acesso.

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Polticas de substituio nos buffers:


Poltica de substituio LRU

Least Recently Used (LRU)


para cada pgina na buffer pool, registar o tempo da ltima des-afixao (unpinned)
substituir a frame com o tempo mais antigo
poltica muito comum: intuitiva e simples

Funciona bem para acessos repetidos a pginas populares

Problemas?

Problema: Inundao Sequencial (sequential flooding)


LRU + varrimentos sequenciais repetidos.
# buffer frames < # pages in file significa que cada pedido duma pgina provoca uma
operao de I/O.
Ideia: MRU melhor neste cenrio?

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Polticas de substituio nos buffers:


Poltica de substituio LRU

Uma aproximao LRU

Dispe 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 substituio necessria


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;

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

DBMS versus sistema de ficheiros do OS

OS faz gesto de buffers & espao em disco: porque que no deixamos o OS


fazer estas tarefas?

Algumas limitaes, p.ex. a memria virtual do OS no tem uma gesto to fina das
pginas.

Gesto de buffers num DBMS requer a capacidade para:


afixar uma pgina na buffer pool, forar uma pgina para o disco & ordenar
operaes de escrita (importante para implementar controlo e recuperao de
disrupo)
ajustar poltica de substituio, and pr-pesquisar pginas com base nos padres
de acesso em operaes tpicas de BD.

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

... voltando ao contexto!


Optimizao e Execuo
de Inquiries
Operadores Relacionais
Ficheiros e
Mtodos de Acesso
Gesto de Buffers
Gesto de Espao em Disco

DB

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

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 coleco de pginas, cada uma contendo uma coleco de


registos. Deve suportar operaes de:
inserir/apagar/modificar registos
pesquisar um registo particular (atravs do record id)
escandir (scan) todos os registos (possivelmente com algumas condies sobre os
registos a ser devolvidos)

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Ficheiros de registos (records):


Ficheiros no-ordenados (heaps)

A estrutura mais simples dum ficheiro aquela que contm os registos sem
qualquer ordem em particular. Estes ficheiros so conhecidos por heap files.

Quando o ficheiro se dilata ou contrai em tamanho, pginas em disco so alocadas


e des-alocadas.

Para suportar operaes ao nvel dos registos, temos de:


registar as pginas num ficheiro
registar o espao livre em pginas
registar os registos numa pgina

Existem muitas alternativas para registar isto.


Vamos considerar 2

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Ficheiros de registos (records):


Heap implementado como uma lista

O header page id e o heap file name tm de ser armazenados algures.


catlogo da base de dados

Cada pgina contm 2 ponteiros + dados.

Data
Page

Data
Page

Data
Page

Full Pages

Header
Page
Data
Page

Data
Page

Data
Page

Pages with
Free Space

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Ficheiros de registos (records):


Heap implementado como uma directoria de pginas

O verbete (entry) para uma pgina


pode incluir o nmero de bytes livres
na pgina.
A directoria uma coleco de
pginas; a implementao por lista
ligada s uma alternativa.

Data
Page 1

header
page

Data
Page 2

Muita mais pequena que a lista ligada de


todas as pginas HF!
DIRECTORY

Data
Page N

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Ficheiros de registos (records):


ndices (uma anteviso furtiva)

Um heap file permite-nos devolver registos:


pela especificao do rid, ou
pelo escrutnio sequencial de todos os registos

s vezes, ns queremos registos que so devolvidos por especificao dos valores


num ou mais campos, p.ex.
Encontrar todos os estudantes no DI
Encontrar todos os estudantes com nota superior a 10

ndices so estruturas de ficheiros que nos permitem efectuar inquiries


baseadas-em-valor duma forma eficiente.

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Formatos de registos em pginas:


registos de tamanho fixo
registos de tamanho varivel

Tamanho fixo:
Informao acerca dos tipos dos
campos do registo a mesma para
todos os registos num ficheiro;
armazenada nos catlogos do sistema.

Fi = field i
Li = length of field i

F1

F2

F3

F4

L1

L2

L3

L4

base
address (B)

address = B+L1+L2

Encontrar o i-simo campo faz-se por


via aritmtica.

Tamanho varivel:
Dois formatos alternativos (#fields
fixo), como se ilustra ao lado.
A segunda alternativa oferece acesso
directo ao i-simo campo (field),
armazenamento eficiente de nulls
(valor especial para dont know);
pequena sobrecarga de directorias.

Fields delimited by
special symbol $

F1

F2

F3

$ F4 $

Array of field offsets

F1

F2

F3

F4

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Formatos de pginas: 


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 no ser aceitvel para referncias externas.
Slot 1
Slot 2

Slot 1
Slot 2
Free
Space

...

...
Slot N

Slot N

Slot M
1 ... 0 1 1M

N
PACKED

number
of records

M ...

3 2 1

UNPACKED, BITMAP

number
of slots

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Formatos de pginas: 


registos de tamanho varivel

Pode mover registos sem alterar o rid; assim, tambm atractivo para registos de
tamanho fixo.
DATA AREArid
Offset of record
from start of
data area

= (i,N)

Page i
rid = (i,2)
Rid = (i,1)

FREE SPACE

20
N

...

16
2

SLOT DIRECTORY

24 N
1 # slots

Pointer to start
of free space

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Catlogos do sistema

Para cada relao/tabela:


nome, localizao do ficheiro, estrutura do ficheiro (p.ex. heap file)
nome e tipo de cada atributo
nome de cada ndice
restries de integridade

Para cada ndice:


estrutura (p.ex. B+ tree) e campos-chave de pesquisa

Para cada vista:


nome e definio

+ estatstica, autorizao, tamanho da buffer pool, etc.

Catlogos so eles prprios armazenados como relaes!

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Catlogos do sistema:
exemplo

Attr_Cat(attr_name, rel_name, type, position)


attr_name
attr_name
rel_name
type
position
sid
name
login
age
gpa
fid
fname
sal

rel_name
Attribute_Cat
Attribute_Cat
Attribute_Cat
Attribute_Cat
Students
Students
Students
Students
Students
Faculty
Faculty
Faculty

type
string
string
string
integer
string
string
string
integer
real
string
string
real

position
1
2
3
4
1
2
3
4
5
1
2
3

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Sumrio:

Discos fornecem memria barata e no-voltil.


Acesso aleatrio, mas o custo depende da localizao da pgina em disco; importante
para organizar dados sequencialmente e minimizar os atrasos de procura e rotao do
disco.

Gestor de buffers carrega pginas em RAM.


Uma pgina fica em RAM at ser libertada pelo solicitador.
Escrita para disco quando uma frame seleccionada para substituio (o que acontece
s vezes aps solicitador libertar a pgina).
Escolha da frame baseia-se na poltica de substituio.
Tenta pr-pesquisar vrias pginas duma s vez.

DBMS vs. Suporte de Ficheiros do OS


DBMS precisa de funcionalidades que a maioria do OSs no oferecem, p.ex. forar a
ida duma pgina para disco, controlar a ordem de operaes de escrita em disco,
capacidade de controlar pr-pesquisa e poltica de substituio baseada em padres de
acesso previsveis, etc.

6638 Bases de Dados II

Armazenamento de Dados: Discos e Ficheiros

Sumrio (cont.):

Formato de registos de tamanho varivel com directoria de offsets de campos


suporta acesso directo ao i-simo campo e valores nulos.

Formato de entalhe (slotted) de pginas suporta registos de tamanho varivel; este


formato permite mover os registos na pgina.

Camada de ficheiros toma nota das pginas num ficheiro e suporta abstraco
duma coleco de registos.
Pginas com espao livre identificadas pela utilizao duma lista ligada ou estrutura de
directorias.

ndices suportam devoluo eficiente de registos com base em valores de alguns


campos.

Relaes do catlogo armazenam informao acerca de relaes (ou tabelas),


ndices e vistas (informao que comum a todos os registos numa dada coleco.)

You might also like