Sei sulla pagina 1di 70

Ordenao Externa de Dados

Profa. Dra. Denise Guliato


Ordenao Externa
Motivao
usurios podem querer organizar o arquivo de dados
em alguma ordem;
ordenao de um arquivo o primeiro passo no
algoritmo de bulk loading para criar um ndice
baseado em rvore;
a ordenao til para eliminar cpias duplicadas em
uma coleo de registros;
a execuo do operador relacional juno ( para
consulta por igualdade) fica mais rpido se os
registros das tabelas esto ordenados.
Ordenao Externa
Embora o tamanho da memria esteja cada
vez maior, ainda no possvel armazenar
todos os registros de uma tabela na memria;

Para orden-los so necessrios algoritmos


de ordenao externa;

Tais algoritmos procuram minimizar o custo


do acesso ao disco.
Ordenao Externa
Veremos os seguintes algoritmos:

Two-Way Merge Sort

External Merge Sort


Ordenao Externa
Veremos os seguintes algoritmos:

Two-Way Merge Sort

External Merge Sort


Ordenao Externa
Two-Way Merge Sort
Este algoritmo utiliza apenas trs pginas da
memria principal (pginas de buffer);

Durante a ordenao do arquivo, vrios


subarquivos ordenados so gerados nos
passos intermedirios;

Estes subarquivos ordenados so chamados


run.
Ordenao Externa
Two-Way Merge Sort
A idia bsica do algoritmo :
dividir o arquivo em subarquivos ;
ordenar os subarquivos (run)
uni-los novamente usando apenas 3 pginas na
memria
Ordenao Externa
Two-Way Merge Sort
Primeiro Passo:

Cada pgina do arquivo lida;


Cada pgina ordenada usando um mtodo de ordenao em
memria;
A pgina ento escrita de volta para o disco. Neste passo, os
subarquivos ordenados so de uma pgina.

Passos Seguintes:

Os subarquivos gerados no passo anterior so lidos e


intercalados, dois a dois, produzindo subarquivos ordenados
(run) com o dobro do tamanho.
Two-way Merge Sort

1,3 4,2 5,7 10,6 8,9 7,3 5,7

Pginas Pgina
de de
Input Output

Buffer Pool

UFU/FACOM/BCC GBD Pgina:9


Passo 0 Ordena registros em cada pgina
1,3 4,2 5,7 10,6 8,9 7,3 5,7

Ordena
Pginas
Uma pgina para
de Construir o output
Input

Buffer Pool
Produz 7 subarquivos ordenados

1,3 2,4 5,7 6,10 8,9 3,7 5,7

UFU/FACOM/BCC GBD Pgina:10


Passo 0 Ordena registros em cada pgina
1,3 4,2 5,7 10,6 8,9 7,3 5,7

Ordena
Pginas
Uma pgina para
de Construir o output
Input
1, 3

Buffer Pool
Produz 7 subarquivos ordenados

1,3 2,4 5,7 6,10 8,9 3,7 5,7

UFU/FACOM/BCC GBD Pgina:11


Passo 1 Merge de pares de pginas

1,3 2,4 5,7 6,10 8,9 3,7 5,7

1,2 5,6 3,7 5,7

3,4 7,10 8,9

Produz 4 subarquivos ordenados

UFU/FACOM/BCC GBD Pgina:12


Passo 2 Ordena pares de subarquivos
ordenados

1,2 5,6 3,7 5,7

3,4 7,10 8,9

1,2
3,5
3,4
7,7
5,6
8,9
7,10

Produz 2 subarquivos ordenados


UFU/FACOM/BCC GBD Pgina:13
Passo 3 Ordena par de subarquivos
ordenados

1,2 3,5
3,4 7,7
5,6 8,9
7,10

1,2
3,3
4,5
5,6
7,7

7,8 Produz 1 arquivo ordenado


9,10

UFU/FACOM/BCC GBD Pgina:14


Anlise nmero de etapas
Seja N o nmero de pginas do arquivo
Considere que N = 2s
Passo 0 : 2s subarquivos ordenados
Passo 1 : 2s-1 subarquivos ordenados
Passo 2 : 2s-2 subarquivos ordenados
...

Passo s : 1 arquivo ordenado


Total de passos = s+1 = log2N + 1
Genericamente

UFU/FACOM/BCC GBD Pgina:15


Ordenao Externa
Algoritmo
ordena2-way(arquivo)
Inicio proc
// dado um arquivo em disco, orden-lo usando 3 pginas na memria.
// produzir no passo 0 runs com tamanho de uma pgina.

Leia cada pgina do disco para a memria, oredene-a e escreva de volta para o disco

// intercale pares de runs produzindo runs maiores at que reste apenas um run contendo todos os
// registros do arquivo.

Enquanto o nro de runs produzidos no final do passo anterior for maior que 1 faa:

// para passos = 1, 2, ..

Enquanto h runs para serem intercalados do passo anterior escolha os 2 runs produzidos no passo
anterior
leia cada run em um buffer de entrada, uma pgina por vez;
intercale os runs e escreva no buffer de sada;
force a escrita do buffer de sada para o disco, uma pgina por vez.
fim proc
Exerccio
Considere o seguinte arquivo contendo 8
pginas com 2 registros cada pgina.
Ordene esse arquivo usando Two-merge sort e
determine o custo em termos de nros de IOs:

(4,3) (2,6) (9,4) (7,8) (6,5) (3,1) (2,8) (5,4)


Two Merge Sort
Exerccio: Considere um arquivo com 8 pgina
Ordenao Externa
Two-Way Merge Sort
Anlise de custo
Em cada passo, cada pgina do arquivo lida do disco,
processada e escrita de volta para o disco. Deste
modo temos 2 operaes de I/O por pgina, por
passo;
O nmero de passos dado por (log2N) +1, onde N o
nmero de pginas do arquivo;
Ento o custo para ordenar um arquivo usando two-
way merge sort da ordem de 2N((log2N) +1).

No exemplo: N=8; nro de passos = (log28) +1=4


custo = 2*8*4= 64 I/Os
Ordenao Externa
Veremos os seguintes algoritmos:

Two-Way Merge Sort

External Merge Sort


Ordenao Externa
External Merge Sort
um refinamento do Two-Merge Sort;

B pginas de buffer so mantidas na memria


diminui o nmero de passos necessrios para
a ordenao.
Ordenao Externa
External Merge Sort
Refinamentos do two-way merge sort:

1o.) Passo 0 - l B pginas do disco para a memria e as ordena. No final


do passo 0, N/B subarquivos de B pginas, no mximo, tero sido
produzidos:
Esse refinamento reduz o nmero de subarquivos ordenados de N para N1 =
N/B no passo 0.
1,3 5,2 5,7 10,6 4,6 3,6 4,7
1,3

1,2

3,5
1,3 10,6 5,6

7,10
5,2 5,7

3,4

4,6

B=4 6,7
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1 pginas
de buffer para entradas e uma para sada. Desta forma, B-1
subarquivos podero ser intercalados em cada passo:
O segundo refinamento mais importante: B-1 subarquivos so
intercalados a cada passo o nmero de passos reduzido. O
nmero de passos passa de (log2N) +1 para (logB-1N1) +1
1,2 3,4
3,5 4,6
5,6 6,7
7,10

1,2 3,4
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1 pginas
de buffer para entradas e uma para sada. Desta forma, B-1
subarquivos podero ser intercalados em cada passo:
O segundo refinamento mais importante: B-1 subarquivos so
intercalados a cada passo o nmero de passos reduzido. O
nmero de passos passa de (log2N) +1 para (logB-1N1) +1
1,2 3,4
3,5 4,6
5,6 6,7
7,10

3,4

1,2
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1 pginas
de buffer para entradas e uma para sada. Desta forma, B-1
subarquivos podero ser intercalados em cada passo:
O segundo refinamento mais importante: B-1 subarquivos so
intercalados a cada passo o nmero de passos reduzido. O
nmero de passos passa de (log2N) +1 para (logB-1N1) +1
1,2 3,4 1,2
3,5 4,6
5,6 6,7
7,10

3,4
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6
5,6 6,7
7,10

3,5 3,4
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6
5,6 6,7
7,10

,5 ,4

3, 3
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7
7,10

,5 ,4
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7
7,10

,5

,4
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7
7,10

,5 4,6

4
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7
7,10

,5 6

4, 4
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10

,5 6
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10

5,
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10

5,6 6

5,
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10

,6 6

5, 5
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10 5,5

,6 6
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10 5,5

6,
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10 5,5

7,10 6

6,
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10 5,5

7,10

6, 6
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10 5,5
6,6

7,10
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10 5,5
6,6

7,10 6,7
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10 5,5
6,6

,10 ,7

6,7
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10 5,5
6,6
6,7
,10 ,7
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10 5,5
6,6
6,7
,10
7,
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, B-1 subarquivos podero ser intercalados
em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10 5,5
6,6
6,7

7,10
Ordenao Externa
External Merge Sort
2o.) Passo n, para n#0 - nos demais passos usa-se B-1
pginas de buffer para entradas e uma para sada.
Desta forma, at B-1 subarquivos podero ser
intercalados em cada passo:

1,2 3,4 1,2


3,5 4,6 3,3
5,6 6,7 4,4
7,10 5,5
6,6
6,7

7,10
Exerccio
Considere o seguinte arquivo contendo 8
pginas com 2 registros cada pgina.
Ordene esse arquivo usando External Merge
Sort, com B=4 e determine o custo em termos
de nros de IOs:

(4,3) (2,6) (9,4) (7,8) (6,5) (3,1) (2,8) (5,4)


Exerccio

N1 = 8/4 = 2
custo = 2N((logB-1N1) +1) = 16((log32)
+1) = 32 I/Os
External Merge Sort
Algoritmo
Inicio proc

// dado um arquivo em disco, ordene-o usando B pginas de buffer e produza N1 subarquivos de B


//pginas, onde N1= N/B
Leia B pginas do disco para a memria, ordene-as e escreva-as de volta em um subarquivo.

// intercale B-1 subarquivos produzindo um subarquivo ordenado (run) de tamanho igual a soma de
// pginas dos B-1 subarquivos de entrada. Repita este procedimento at que apenas um
//subarquivo com o
// nmero total de pginas do arquivo seja produzido:

Enquanto o nro de subarquivos produzidos no final do passo anterior for maior que 1 faa:

// para passos = 1, 2, ..

Enquanto h runs para serem intercalados do passo anterior


escolha os B-1 runs produzidos no passo anterior;
leia cada run em um buffer de entrada, uma pgina por vez;
intercale os runs e escreva-os no buffer de sada;
force a escrita do buffer de sada para o disco, uma pgina por vez.
fim proc
Ordenao Externa
External Merge Sort
Tabela contendo o numero de passos necessrios
para ordenar um arquivo com N pginas usando
B pginas de buffer:
N B=3 B=5 B=9 B=17 B=129 B=257
100 7 4 3 2 1 1
1000 10 5 4 3 2 2
10.000 13 7 5 4 2 2
100.000 17 9 6 5 3 3
1.000.000 20 10 7 5 3 3
10.000.000 23 12 8 6 4 3
100.000.000 26 14 9 7 4 4
1.000.000.000 30 15 10 8 5 4
Ordenao Externa
External Merge Sort
Exerccio

Considere um arquivo com 108 pginas para


ser ordenado e B Buffers com B=5. Quantos
passos so necessrios para ordenar este
arquivo? Qual o custo para orden-lo? Mostre
as etapas de ordenao passo a passo.
External Merge Sort
Exerccio
Passo 0 produz 108/5 = 22 subarquivos ordenados, sendo
que 21 subarquivos possuem 5 pginas cada um, e 1
subarquivo que possui apenas 3 pginas;

Passo 1 produz 22/4 = 6 subarquivos ordenados, sendo


que 5 subarquivos contm 20 pginas, e 1 que contm 8
pginas;

Passo 2 produz 6/4 = 2 subarquivos ordenados; um com


80 pginas e o outro com 28 pginas;

Passo 3 intercala os dois subarquivos produzidos no passo


2, produzindo um arquivo ordenado com 108 pginas.
External Merge Sort
Exerccio
Custo:
Em cada passo so lidas e escritas 108 pginas
2*108*4 = 864 I/Os

Usando a frmula:
N1 = 108/5 = 22
Custo = 2*N*(logB-1N1 + 1) = 2 * 108 *( log422 +1) = 864
COMO ESPERADO!!!!!
Melhorias : minimizando o nmero
de subarquivos do passo 0
Replacement Sort

O objetivo diminuir o nmero de runs (subarquivos


ordenados) no passo 0;

Em mdia os runs tero 2B pginas ordenadas no passo 0


(contra teto(N/B) do External Sort);
Replacement Sort
Processo:
as tuplas do arquivo so lidas no colocadas no CSet at que o buffer
esteja cheio, reservando uma pgina para entrada e uma pgina para
sada.

Repetidamente pegue a tupla no Cset com o menor valor k


que seja maior ou igual que o maior valor K no buffer de
saida e append a tupla com o valor K no buffer de sada.
Replacement Sort
Movendo uma tupla para a sada, abre espao em
Cset para uma nova tupla, que preenchido por uma
tupla do buffer de entrada;

Quando o buffer de entrada fica vazio, nova pgina


lida do arquivo.

Sempre que o buffer de sada fica cheio, ele escrito


em disco, extendendo o Crun (current run).
Replacement Sort
Quando termina a construo de um Crun e
comea outro?
Enquanto uma tupla t em Cset tem um valor K
maior que o mais recentemente inserido no buffer
de sada , o Crun pode ser extendido.
Replacement Sort
Quando todas as tuplas em Cset possuem valores de K
menores que o maior valor K do buffer de sada, o
buffer de sada escrito em disco e torna-se a ultima
pgina do Crun;

Um novo Crun iniciado, e o processo continua;


Esse algoritmo produz Cruns com 2B pginas em
mdia.
Replacement Sort

Seja B o nmero de pginas do bufferpool

Reserve uma para entrada(Inp) e outra para sada(Out)

B-2 pginas formaro o current-set (CSet)

A cada rodada grava-se um current-run(CRun): subarquivo


ordenado

UFU/FACOM/BCC GBD
Loop de uma rodada do
Replacement Sort

UFU/FACOM/BCC GBD
Replacement Sort - Consideraes
finais
Registros de tamanho varivel dificultam o processo;

Seleo da menor chave do CSet pode usar uma estrutura


de dados auxiliar para melhorar a busca;

O tamanho do subarquivo de cada rodada , em mdia,


igual a 2B;

700 650

UFU/FACOM/BCC GBD
Exerccio
Seja B = 6, 1 reg/pg.
Ordene o seguinte arquivo de 13 pginas
usando External Merge Sort e o Replacement
Sort. Analise os resultados em termos do
tamanho e nmero de runs.

503 087 512 061 800 170 908 1000 987 154 426 275 509 612 700 650 900
rvore B+ como alternativa para a
ordenao
se existe ndice baseado em rvore B+, considere
utiliz-la em substituio ordenao externa.

Idia: recuperar registros percorrendo as folhas

Consideraes:
Se a rvore B+ agrupada trata-se de uma boa
idia;
Caso contrrio perigoso e pode ser uma idia
muito ruim.
UFU/FACOM/BCC GBD Pgina:63
rvore B+ Agrupada como
alternativa ordenao

UFU/FACOM/BCC GBD Pgina:64


rvore B+ No Agrupada como
alternativa ordenao
Custo (alternativa 2)
Raiz at a folha mais esquerda
Percorre sequencial set e para cada entrada
Busca pgina do data set (um IO por registro => pode ser pssimo)

UFU/FACOM/BCC GBD Pgina:65


Exemplo:
Considere um arquivo com:
N = 10.000 pginas
P = 10 registros por pgina
R = 100.000 registros no total
Faa uma consulta por intervalo, sabendo que 20%
dos registros so qualificados, considerando as
seguintes estratgias:
Scan no arquivo no ordenado;
Ordena o arquivo usando external merge sort e recupera
os registros qualificados. Considere B = 101.
Use uma rvore agrupada com alternativa 1 ( d = 100).
Use uma rvore no agrupada com alternativa 2 (d = 100) .
Scan em um arquivo no ordenado:
N I/Os = 10000 I/Os

Ordenando o arquivo e fazendo a consulta:


Custo para ordenar = 2.N.(log100 10000/101 + 1) =
= 2.10000.2 = 40000
Custo para fazer a consulta = log2 4000 + 99 =
= 12 + 99 =111 I/Os
B+-tree agrupada usando alternativa 2 com fan-
out = 101 altura da rvore = log100 100000 = 3

Consulta = 3 +
Consideraes finais sobre
classificao externa
importante no processamento de consultas

External Merge Sort a soluo mais usada para minimizar custo


de IO
Passo 0: subarquivos ordenados de tamanho B (ou 2B com
replacement sort)
Passos seguinte: merge de subarquivos com nmero
dependente de B e do tamanhos dos blocos
Maiores blocos minimizam custo de cada IO
Menores blocos minimizam nmero de passos
rvore B+ agrupada uma boa alternativa, mas a no agrupada
pode ser muito ruim.

UFU/FACOM/BCC GBD Pgina:69


Exerccios Ordenao Externa

EXERCCIOS CAP 13 LIVRO-TEXTO

UFU/FACOM/BCC GBD Pgina:70

Potrebbero piacerti anche