Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Estrutura de arquivos 
 
1. Introdução 
Armazenar dados significa retê-los para assegurar que sejam recuperados e utilizados 
quando quer que sejam necessários. Nessa perspectiva, desprende-se o conceito de memória, 
a qual consiste em dispositivos eletrônicos responsáveis por realizar essa função de 
armazenamento. Assim, o presente texto versará sobre os tipos de memória, suas estruturas e 
seu funcionamento, explicando suas características e peculiaridades. 
 
2. Hierarquia de armazenamento 
2.1. Armazenamento primário 
Um dos tipos de armazenamento é o primário. Ele caracteriza-se por ser rápido, 
pequeno comparado aos outros tipo e volátil (os dados somem quando o computador é 
desligado). A exemplo disso, há a memória RAM (Random Access Memory) que guarda 
temporariamente os dados ativos do computador e a memória cache, cuja função é armazenar 
de forma temporária as informações mais acessadas pelo processador. 
2.2. Armazenamento secundário 
Em contrapartida, a memória secundária é lenta e extensa, porém, não-volátil. Por 
exemplo, o disco rígido do computador (HD) e a Solid State Drive (SSD). Além de sua 
capacidade, um fator que torna o HD mais indolente é o fato de ele ser um dispositivo 
mecânico, o que impacta diretamente seu desempenho. 
2.3. Armazenamento terciário 
Ademais, há a memória terciária, que também é ampla e mantém as informações a 
longo prazo. Entretanto, ela precisa ser inserida, pois é externa ao computador. Exemplos 
clássicos são os disquetes, CDs e Pen Drives. 
 
3. Anatomia e desempenho do Disco magnético 
Para compreender a organização de arquivos, é crucial entender a estrutura do disco 
magnético (HD), o principal meio de armazenamento secundário. 
 3.1. Estrutura Física e Lógica 
Um HD é composto por um eletroímã (cabeçote) que se move sobre pratos 
magnéticos que giram, a fim de ler/interpretar, gravar ou alterar os dados contidos nos pratos, 
como mostra a Figura 1 abaixo: 
 
Figura 1. Estrutura do HD [1] 
A informação é gravada magneticamente nesses pratos em partes; por exemplo, para 
guardar 1 byte (8 bits) em um sistema com 4 pratos, cada prato armazenaria 2 bits daquele 
byte. O cabeçote de leitura/escrita, um componente eletromagnético, move-se sobre os pratos 
para ler, gravar ou alterar os dados. É importante notar que o cabeçote não encosta 
fisicamente na superfície do disco, mas flutua a uma distância mínima sobre ela. 
A organização dos dados segue uma geometria específica: 
● Trilha: Corresponde a uma volta completa do prato, formando um círculo concêntrico. 
Quanto mais externa a trilha, maior seu comprimento físico, pois seu raio é maior. 
● Setor: As trilhas são divididas fisicamente em pedaços de tamanho fixo chamados 
setores. 
● Bloco: É a unidade lógica de transferência de dados entre o disco e a memória 
principal. Um bloco é formado por um ou mais setores, e seu tamanho é definido 
durante a formatação do disco. O cabeçote sempre lê ou escreve um bloco de dados 
por vez. O endereço de um bloco no disco é fixo e não varia. 
● Página: Em muitos contextos de banco de dados, o termo "página" é utilizado como 
sinônimo de "bloco". 
 3.2. Métricas de Desempenho 
O fato de o HD ser um dispositivo mecânico o torna lento em comparação com a 
memória primária. O tempo total para acessar um bloco de dados no disco é a soma de três 
componentes, majoritariamente mecânicos: 
● Tempo de Pesquisa (Seek Time): O tempo necessário para o braço mecânico mover o 
cabeçote de leitura/escrita até a trilha correta. 
● Tempo de Latência Rotacional: O tempo de espera para que o giro do disco posicione 
o início do setor desejado sob o cabeçote. 
● Tempo de Transferência de Bloco: O tempo para que os dados do bloco sejam 
efetivamente lidos e transferidos para a memória. Esta é a única parte do processo que 
não é puramente mecânica, mas sua velocidade ainda depende da rotação do disco. 
A soma desses tempos resulta em um acesso que é ordens de magnitude mais lento 
que o acesso à memória RAM, tornando a E/S (Entrada/Saída) de disco o principal gargalo de 
desempenho em sistemas de banco de dados. 
 
4. Buffering de blocos 
Para mitigar a lentidão do acesso ao disco, os sistemas utilizam buffers. Um buffer é 
um pedaço de memória principal (RAM) reservado para armazenar temporariamente os 
dados que estão sendo transferidos do ou para o disco. Quando um programa solicita a leitura 
de um arquivo, o sistema operacional copia um bloco do disco para um buffer na memória. O 
programa, então, processa os dados diretamente do buffer, que é um acesso muito mais 
rápido. 
Uma técnica comum para otimizar leituras sequenciais é o buffering duplo, que 
utiliza dois buffers. Enquanto a CPU processa os dados do primeiro buffer, o controlador de 
disco, em paralelo, já está lendo o próximo bloco do disco e preenchendo o segundo buffer. 
Isso cria um fluxo contínuo de dados e mascara a latência do disco para todos os blocos, 
exceto o primeiro. 
 
5. Organização de Arquivos e Registros 
A forma como os dados são estruturados em arquivos e alocados em blocos impacta 
diretamente a eficiência do armazenamento e do acesso. 
5.1. Conceitos fundamentais 
● Arquivo: É uma sequência de registros. Geralmente, um arquivo contém registros de 
um mesmo tipo, descrevendo uma coleção de entidades semelhantes. 
● Registro: Corresponde a uma instância de uma entidade (por exemplo, um 
funcionário, um produto). É uma coleção de campos relacionados. 
● Campo: Representa um atributo de um registro (por exemplo, o nome ou o salário de 
um funcionário). 
 
5.2. Registros de Tamanho Fixo vs. Variável 
Os registros podem ter tamanho fixo, onde todos ocupam o mesmo espaço, ou 
tamanho variável. A variabilidade pode ocorrer devido a campos com comprimentos 
diferentes (como um campo de "descrição"), campos opcionais (que podem ser nulos) ou 
campos multivalorados (que contêm uma lista de valores). Para gerenciar registros de 
tamanho variável, são utilizados caracteres separadores especiais que delimitam o início e o 
fim de cada campo ou registro. 
Esse mecanismo é análogo ao processo de síntese proteica na biologia celular. Na 
tradução do material genético, a maquinaria celular precisa saber exatamente onde começar e 
onde parar de ler a fita de RNA mensageiro (RNAm) para construir uma proteína 
corretamente. Essa sinalização é feita por sequências específicas de nucleotídeos chamadas 
códons. O códon "AUG", por exemplo, atua como um sinal de "início", marcando o ponto de 
partida para a tradução. De forma similar, códons de "parada" (como UAA, UAG e UGA) 
indicam o fim da sequência a ser traduzida. Da mesma forma que esses códons delimitam a 
informação genética, os caracteres separadores em um arquivo delimitam a informação 
digital, garantindo que o sistema de computador possa interpretar corretamente os limites de 
cada campo e registro, mesmo quando seus tamanhos não são predefinidos. 
 
6. Blocagem de Registros 
A alocação de registros em blocos é chamada de blocagem. O fator de blocagem 
(bfr), ou taxa de blocagem, define a quantidade de registros que um bloco suporta e é 
calculado pela fórmula bfr=⌊B/R⌋, onde B é o tamanho do bloco e R é o tamanho do registro, 
arredondando-se o resultado para baixo. Existem duas abordagens principais para a 
blocagem, as quais serão abordadas a seguir. 
6.1 Blocagem Não Espalhada (Unspanned) 
Cada registro deve começar e terminar no mesmo bloco. Essa abordagem torna mais 
fácil e rápido localizar um registro, pois sua posição dentro do bloco pode ser calculada 
diretamente. No entanto, pode levar ao desperdício de espaço no final de cada bloco se o 
tamanho dos registros não for um divisor exato do tamanho do bloco. 
● Leitura: Para ler um registro, o sistema realiza uma única operação de E/S para 
transferir o bloco que contém o registro para a memória. Como o registro está 
inteiramente contido nesse bloco, nenhuma buscaadicional é necessária, tornando o 
acesso mais rápido. 
● Escrita: Para inserir um novo registro, o sistema localiza um bloco com espaço livre 
suficiente para acomodar o registro inteiro. O bloco é então transferido para um 
buffer, o novo registro é adicionado e o bloco é reescrito no disco em uma única 
operação de E/S. 
6.2. Blocagem Espalhada (Spanned) 
 Um registro pode começar em um bloco e terminar em outro. No final do bloco 
inicial, um ponteiro indica o endereço do próximo bloco que contém o restante do registro. 
Essa técnica otimiza o aproveitamento do espaço, mas torna o acesso aos registros mais 
complexo, pois, durante a leitura exige a navegação através de ponteiros. 
● Leitura: A leitura de um registro que se estende por múltiplos blocos requer várias 
operações de E/S. O sistema primeiro lê o bloco inicial, processa o primeiro segmento 
do registro e, em seguida, segue o ponteiro para ler o próximo bloco. Esse processo se 
repete até que todos os segmentos do registro sejam lidos e remontados na memória, o 
que torna a operação mais lenta. 
● Escrita: Ao escrever um novo registro, o sistema preenche o espaço disponível no 
bloco atual. Se o registro for maior que o espaço restante, ele é dividido: a primeira 
parte é escrita no bloco atual, um ponteiro para um novo bloco é adicionado, e a parte 
restante do registro é escrita no bloco seguinte. Isso pode exigir múltiplas operações 
de escrita em disco. 
 
7. Organização primária de arquivo 
A organização de arquivo primária determina a ordem física na qual os registros são 
colocados no disco. A escolha da organização primária é uma das decisões de projeto mais 
fundamentais, pois define o método de acesso padrão e o desempenho para operações 
básicas. 
7.1 Arquivos Desordenados (Heap) 
Na sua forma mais simples, os registros são inseridos na ordem em que chegam, com 
novos registros sendo sempre adicionados ao final do arquivo. Essa organização é chamada 
de arquivo de heap ou pilha. 
● Operações: A inserção é extremamente eficiente. No entanto, a busca por um registro 
específico exige uma varredura linear de todo o arquivo, lendo e inspecionando cada 
bloco, o que é um processo dispendioso. 
● Manutenção: Para excluir um registro, uma técnica comum é usar um marcador de 
exclusão, um bit ou byte extra que indica se o registro é válido. O registro permanece 
fisicamente no disco, mas é ignorado pelas buscas. Com o tempo, isso desperdiça 
espaço e exige uma reorganização periódica do arquivo para remover fisicamente os 
registros marcados. 
7.2 Arquivos Ordenados (Sequenciais) 
Uma alternativa é manter os registros fisicamente ordenados no disco com base nos 
valores de um campo de classificação. 
● Vantagens: Esta organização é otimizada para leitura. A leitura sequencial é muito 
rápida, e a ordem física permite o uso de pesquisa binária nos blocos, o que reduz 
drasticamente o custo de busca de um registro específico para O(log2 b) acessos a 
blocos. 
● Desafios: A principal desvantagem é o alto custo de inserção e exclusão. Para inserir 
um novo registro, é preciso encontrar sua posição correta e deslocar todos os registros 
subsequentes para abrir espaço, o que é inviável para arquivos dinâmicos. Para 
contornar isso, pode-se usar um arquivo de overflow desordenado, onde as novas 
inserções são colocadas. Isso acelera as inserções, mas complica a busca, que agora 
precisa verificar o arquivo principal (com busca binária) e o arquivo de overflow 
(com varredura linear). 
 
8. Arquivos de Registros Mistos 
As organizações de arquivo que vimos até agora assumem que todos os registros são 
do mesmo tipo. No entanto, em muitos sistemas de banco de dados, especialmente os mais 
antigos (hierárquicos e de rede) e os orientados a objetos, é comum ter arquivos de registros 
mistos. 
Nessa abordagem, registros de tipos diferentes são fisicamente agrupados no disco 
para representar relacionamentos. Por exemplo, um registro de DEPARTAMENTO pode ser 
seguido por todos os registros de FUNCIONARIO que pertencem a ele. Isso pode aumentar 
muito a eficiência de consultas que recuperam entidades relacionadas. Para que o sistema 
possa interpretar esses arquivos, cada registro precisa de um campo de tipo de registro que 
o identifique. 
 
9. Conclusão 
A análise das estruturas de armazenamento e organização de arquivos revela um 
conjunto de compromissos fundamentais. A hierarquia de memória equilibra velocidade e 
custo, forçando os sistemas de banco de dados a gerenciar a lenta transferência de dados do 
disco para a RAM. A própria estrutura mecânica do disco rígido impõe gargalos de 
desempenho, que são mitigados por técnicas como o buffering. 
A escolha entre uma organização desordenada (heap) para inserções rápidas e uma 
ordenada para buscas eficientes demonstra um trade-off crucial. Este trabalho se propôs a 
explicar essas estruturas e seu funcionamento, e a explanação evidencia que não há uma 
solução única e ideal. A escolha de uma organização de arquivo depende diretamente da 
natureza das operações que serão realizadas. Uma limitação deste texto é não aprofundar em 
estruturas de acesso auxiliares, como índices, que são construídos sobre essas fundações para 
otimizar operações de busca específicas, um tópico essencial para a compreensão completa 
do desempenho de bancos de dados. 
 
10. Referências 
[1] ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de Banco de Dados. 6. ed. São 
Paulo: Pearson Addison Wesley, 2011. 
	 3.1. Estrutura Física e Lógica 
	Figura 1. Estrutura do HD [1] 
	 3.2. Métricas de Desempenho 
	7.1 Arquivos Desordenados (Heap) 
	7.2 Arquivos Ordenados (Sequenciais)

Mais conteúdos dessa disciplina