Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Acesso Sequencial Indexado
Objetivo: Considerar de forma unificada as seguintes visões sobre estruturas de acesso a arquivos: Visão indexada: o arquivo é visto como um conjunto de registros indexados por chaves. Visão sequencial: o arquivo pode ser acessado sequencialmente, gerando registros ordenados por chaves.
2
Operações cosequenciais + operações indexadas
Exemplo: Operações cosequenciais operações indexadas ler um arquivo “inteiro” (menos seek) para, por exemplo, ordená-lo ler cada chave para acessar os registros Acesso Sequencial Indexado
3
Conjuntos de sequência de registros
Objetivo: manter dinamicamente um conjunto de registros ordenados por chaves no disco Problema: ordenação do arquivo em disco é “cara”! Solução: organizar os registros em blocos operações locais um bloco se torna a menor unidade endereçável nas operações de leitura e escrita no disco (é carregado todo na RAM).
4
Exemplo: Chaves = nomes 4 nomes/bloco (fator de bloco) Chaves: Adams
Baird Bixby Boone Bynum Carson Cole Davis Denver Ellis
5
Adams Baird Bixby Boone
bloco 1 Adams Baird Bixby Boone bloco 2 Bynum Carson Cole Davis bloco 3 Denver Ellis Introduzir Carter : bloco 1 bloco 1 Adams Baird Bixby Boone bloco 2 bloco 2 bloco 2 subdivisão (split) de bloco Bynum Carson Carter bloco 3 bloco 3 Denver Ellis bloco 4 Cole Davis
6
Adams Baird Bixby Boone
Eliminar Davis : bloco 1 bloco 1 Adams Baird Bixby Boone bloco 2 bloco 2 bloco 2 Bynum Carson Carter bloco 3 bloco 3 Denver Ellis bloco 4 Cole underflow
7
Adams Baird Bixby Boone
Eliminar Davis : bloco 1 bloco 1 Adams Baird Bixby Boone bloco 2 bloco 2 bloco 2 Bynum Carson Carter bloco 3 bloco 3 disponível bloco 4 Cole Denver Ellis concatenação Conclusão: o arquivo inteiro pode ser mantido ordenado apenas pela ordenação de suas partes (blocos).
8
A ordenação do arquivo pode exigir mais espaço em disco por
Problemas: A ordenação do arquivo pode exigir mais espaço em disco por conta de fragmentações internas. Neste caso, pode-se adotar estratégias que privilegiem a redistribuição de chaves. A ordem física dos registros só é garantida ao longo de um bloco e não entre-blocos. Qual deve ser o tamanho de um bloco? Deve representar um compromisso entre tempo de acesso, memória RAM (buffer) disponível e as operações a serem executadas. O tamanho do bloco deve permitir o armazenamento de vários destes na memória. O tempo de leitura e escrita de um bloco não deve ser muito longo (para não perder o que se ganhou economizando-se em seeks).
9
Sequência de registros e indexação
Objetivo: definir um método eficiente que possibilite o acesso a um bloco contendo uma chave (ou registro) procurada. Ideia: construir um índice de chaves (a partir do último registro de cada bloco, por exemplo), apontando para cada um destes blocos. Sequência de blocos: Adams-Berne Bolen-Cage Camp-Dutton Embry-Evans Faber-Folk Folks-Gaddis 1 2 3 4 5 6
10
Adams-Berne Bolen-Cage Camp-Dutton Embry-Evans Faber-Folk Folks-Gaddis 1 2 3 4 5 6 Chave Número do Bloco Berne 1 Cage 2 Dutton 3 Evans 4 Folk 5 Gaddis 6 Índices da sequência de blocos
11
Chaves delimitadoras Os índices servem apenas de guia na busca do bloco que contém a chave a ser acessada delimitadores Menor delimitador possível (não-único) economia de espaço (neste caso, teremos uma árvore B+ de prefixo simples) Delimitadores de blocos BO CAM E F FOLKS Adams-Berne Bolen-Cage Camp-Dutton Embry-Evans Faber-Folk Folks-Gaddis 1 2 3 4 5 6
12
Arquivo sequencial indexado e árvore B+ de prefixo simples
conjunto de índices BO CAM F FOLKS Adams-Berne Bolen-Cage Camp-Dutton Embry-Evans Faber-Folk Folks-Gaddis 1 2 3 4 5 6
13
A busca A partir dos índices na árvore B, podemos acessar um bloco da seguinte forma: Se chave procurada < delimitador, então vá para a esquerda na árvore se chave >= delimitador, então vá para a direita na árvore Lembrando: Árvore B+ de prefixo simples os delimitadores são os menores possíveis na árvore B
14
Operações sobre árvores B+
Supressão de registros sem originar concatenação e redistribuição alterações apenas nos blocos de registros; o conjunto de índices não é alterado Inserção sem subdivisão idem E conjunto de índices BO CAM F FOLKS Adams-Berne Bolen-Cage Camp-Dutton Embry-Evans Faber-Folk Folks-Gaddis 1 2 3 4 5 6
15
Apagar Embry e Folks Adams-Berne Bolen-Cage Camp-Dutton Embry-Evans
Faber-Folk Folks-Gaddis 1 2 3 4 5 6 E BO CAM F FOLKS Adams-Berne Bolen-Cage Camp-Dutton Ervin-Evans Faber-Folk Frost-Gaddis 1 2 3 4 5 6
16
Inserção causando subdivisão mudanças no número de blocos
de registros alteração no conjunto de índices através das regras aplicadas às árvores B. Supressão com redistribuição e/ou concatenação idem
17
Inserir Ayers E BO CAM F FOLKS Adams-Berne Bolen-Cage Camp-Dutton Ervin-Evans Faber-Folk Frost-Gaddis 1 2 3 4 5 6 Ayers (causa subdivisão do bloco 1 com criação do bloco 7) BO E AY CAM F FOLKS Adams-Avery Ayers-Berne Bolen-Cage Camp-Dutton Ervin-Evans Faber-Folk Frost-Gaddis 1 7 2 3 4 5 6
18
Supressão com underflow concatenação dos blocos de registros
BO E CAM AY F FOLKS Adams-Avery Ayers-Berne Bolen-Cage Camp-Dutton Ervin-Evans Faber-Folk Frost-Gaddis 1 7 2 3 4 5 6 remoções no bloco 2 causam underflow e subsequente concatenação com o bloco 3, o qual pode ser colocado numa avail list
19
2 7 concatenação 7 Adams-Avery Bolen-Cage Camp-Dutton Ervin-Evans
AY F FOLKS Adams-Avery Bolen-Cage Camp-Dutton Ervin-Evans Faber-Folk Frost-Gaddis 1 2 3 4 5 6 BO E Ayers-Berne 7 concatenação E AY BO F FOLKS Adams-Avery Ayers-Berne Bolen-Dutton Ervin-Evans Faber-Folk Frost-Gaddis 1 7 2 4 5 6
20
Assim: Se blocos de registros são subdivididos um novo delimitador é necessário no conjunto de índices Se blocos são concatenados um separador deve ser removido do conjunto de índices Se registros são redistribuídos entre blocos da sequência de registros o delimitador no conjunto de índices deve ser atualizado
21
Blocos de Conjunto de Índices (delimitadores)
Os índices podem ser armazenados em blocos, tal como os registros (de mesmo tamanho dos blocos dos registros) Os delimitadores podem ser de tamanho variável grande número de delimitadores em um bloco de índice árvore menos profunda. Uma busca binária pode ser feita sobre estes delimitadores armazenados em RAM
22
Exemplo de estrutura de um bloco de índice
AsBsBroCChCraDeleEdlErrFaFle delimitadores concatenados NRR dos delimitadores Número de delimitadores Tamanho total dos delimitadores AsBsBroCChCraDeleEdlErrFaFle B00 B01 B02 B03 B04 B05 B06 B07 B08 B09 B10 B11 delimitadores NRR dos delimitadores Número relativo dos blocos
23
Nível conceitual: delimitadores NRR dos delimitadores
Número de delimitadores Tamanho total dos delimitadores AsBsBroCChCraDeleEdlErrFaFle B00 B01 B02 B03 B04 B05 B06 B07 B08 B09 B10 B11 delimitadores NRR dos delimitadores Número relativo dos blocos Nível conceitual: ordem dos delimitadores B00 As B01 Bs B02 Bro B03 C B04 Ch B05 Cra B06 Dele B07 Edi B08 Err B09 Fa B10 Fle B11
24
Criação sequencial da árvore B+
Problema: A criação aleatória da árvore ( com registros introduzidos não-ordenadamente à medida que chegam) envolve operações de subdivisão e redistribuição que são “caras”. Ideia: Ordenar o conjunto dos registros que comporão a árvore, armazenando-os sucessivamente nos blocos os registros são armazenados na ordem correta. Para cada bloco é definido o seu delimitador que, em seguida, é armazenado no bloco de índices (contido na memória até que o bloco esteja cheio)
25
Exemplo: ALWASPBET 00 03 06 Access-Also Always-Ask Aspect-Best
Better-Cast
26
Catch-Check bloco sem delimitadores! Access-Also Always-Ask
Novo bloco bloco sem delimitadores! CAT ALWASPBET Access-Also Always-Ask Aspect-Best Better-Cast Catch-Check
27
Class-Copy Better-Cast Novo bloco 00 -1 -1 CL 00 Access-Also
CAT CL ALWASPBET 00 Access-Also Better-Cast Always-Ask Aspect-Best Catch-Check Class-copy
28
Cost-Damage Better-Cast Novo bloco 00 -1 -1 CL COS 00 Access-Also
CAT CL COS 00 ALWASPBET Access-Also Better-Cast Always-Ask Aspect-Best Catch-Check Class-copy Cost-Damage
29
Delete-Dise Better-Cast Novo bloco 00 -1 -1 CL COS DE 00 Access-Also
CAT CL COS DE 00 ALWASPBET Access-Also Better-Cast Always-Ask Aspect-Best Delete-Dise Catch-Check Class-copy Cost-Damage
30
Drum-Editor Better-Cast Novo bloco 00 03 -1 DR CL COS DE 00 -1 -1 -1
CAT CL COS DE 00 ALWASPBET Access-Also Better-Cast Always-Ask Aspect-Best Delete-Dise Catch-Check Class-copy Cost-Damage Drum-Editor
31
Effort-Crow Better-Cast Novo bloco 00 03 -1 CL COS DE 00 EF 00 -1 -1
CAT DR CL COS DE 00 EF ALWASPBET Access-Also Better-Cast Always-Ask Aspect-Best Delete-Dise Catch-Check Class-copy Cost-Damage Effort-Crow Drum-Editor
32
Head-Ideal Better-Cast Novo bloco 00 03 -1 CL COS DE 00 EFH 00 02 -1
CAT DR CL COS DE 00 EFH ALWASPBET Access-Also Better-Cast Always-Ask Aspect-Best Delete-Dise Catch-Check Class-copy Cost-Damage Effort-Crow Head-Ideal Drum-Editor
33
Ignore-Item Better-Cast Novo bloco 00 03 -1 CL COS DE 00 EFHIG
CAT DR CL COS DE 00 EFHIG ALWASPBET Access-Also Better-Cast Always-Ask Aspect-Best Delete-Dise Catch-Check Class-copy Cost-Damage Effort-Crow Head-Ideal Ignore-Item Drum-Editor
34
Separadores Completos
ALWAYSASPECTBETTER Access-Also Always-Ask Aspect-Best Better-Cast
35
Referência: Addison-Wesley, 1992.
- Michael J. Folk e Bill Zoellick. File Structures, Second Edition, Addison-Wesley, 1992.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.