ocessamento de big data - ufpr · 2020-03-31 · sem ordenação: o(n) comparações universidade...

70
Aula #3 - Estruturas de Dados EDUARDO CUNHA DE ALMEIDA INDUSTRIA 4.0 Processamento de Big Data

Upload: others

Post on 11-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

Aula #3 - Estruturas de DadosEDUARDO CUNHA DE ALMEIDA

INDU

STRI

A 4.

0Pr

oces

sam

ento

de

Bi

g Da

ta

Page 2: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Agenda

UNIVERSIDADE FEDERAL DO PARANÁ 2

- Listas e SkipList - Arvores - Hash - Compressão

Page 3: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Agenda

UNIVERSIDADE FEDERAL DO PARANÁ 3

- Listas e SkipList - Arvores - Hash - Compressão

Page 4: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Estruturas de Dados

UNIVERSIDADE FEDERAL DO PARANÁ 4

Definição: estruturas para armazenamento e busca eficiente de dados

16 23 5 42 15 8 4

Lista: vetor (espaço contíguo de memória)

16 23 5 42 15 8 4

Lista: ponteiros

Page 5: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Estruturas de Dados

UNIVERSIDADE FEDERAL DO PARANÁ 5

16 23 5 …

Lista: vetor

16 23 5 …

Lista: ponteiros

int v[10], tamanho=0;// aloca memoriavoid insere_lista(int valor, int ∗v) {

if(tamanho < 10)v[tamanho++] = valor;

else // realoca memoria}

typedef struct nodo{ int valor;struct no ∗sucessor;

} nodo;

nodo ∗insere_lista(int valor, no ∗ultimo) { no ∗novo=malloc(sizeof(no))novo->valor = valor;ultimo->sucessor= novo;…}

Page 6: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Estruturas de Dados

UNIVERSIDADE FEDERAL DO PARANÁ 6

16 23 5 …

Lista: vetor

16 23 5 …

Lista: ponteiros

• não precisa alocar/desalocar memória em blocos

• não precisa mover(deslocar) elementos numa inclusão/exclusão

• armazena memória extra (devido aos ponteiros)

•Economiza memória (ponteiros implicitos)

•Custo alto de inclusão e exclusão (deslocamento de elementos)

•Previsão de crescimento é problemático

Nem sempre a ordem dos dados é mantida

Page 7: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Outro problema: encontre o menor valor

UNIVERSIDADE FEDERAL DO PARANÁ 7

16 23 5 42 15 8 4

Lista: vetor

16 23 5 42 15 8 4

Lista: ponteiros

Page 8: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Sem ordenação: O(n) comparações

UNIVERSIDADE FEDERAL DO PARANÁ 8

16 23 5 42 15 8 4

Lista: vetor

16 23 5 42 15 8 4

Lista: ponteiros

“n” comparações

“n” comparações

Outro problema: encontre o menor valor

Page 9: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Solução?

UNIVERSIDADE FEDERAL DO PARANÁ 9

Page 10: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Solução? Ordenar !!!

UNIVERSIDADE FEDERAL DO PARANÁ 10

Page 11: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Solução: Ordenar

UNIVERSIDADE FEDERAL DO PARANÁ 11

16 235 421584

Lista: vetor

Agora posso fazer busca binária!!!!

O(log n) comparações pra achar 4

Page 12: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Solução: Ordenar

UNIVERSIDADE FEDERAL DO PARANÁ 12

16 23 5 42 15 8 4

Lista: ponteiros … melhor não !!!! Tem coisa melhor!

“n” comparações

Page 13: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 13

Será possível ter uma lista sem necessidade de um algoritmo de ordenação?

Page 14: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList

UNIVERSIDADE FEDERAL DO PARANÁ 14

- Lista encadeada que mantém a ordenação dos dados - Busca esperada em O(log n) - Estrutura aleatorizada (componente aleatório na construção da estrutura)

Page 15: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList: Nodo

UNIVERSIDADE FEDERAL DO PARANÁ 15

header

*

*

* …

- Chaves - Ponteiros para próximos elementos

2

*

*

*

*struct skiplist { int key; /* chave */ int height; /* # de ponteiros */ struct skiplist *p[1]; /* ponteiros*/ };

10 *

Page 16: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList

UNIVERSIDADE FEDERAL DO PARANÁ 16

header

*

*

*

10

sentinel

- Chaves ordenadas - Cada nível contém 1/2 dos elementos do nível inferior - Header e Sentinel em todos os níveis

2

*

*

*

*

*15

*

*

16 * *

*

*

71

*

*

*

*

*

*

*31

*

Page 17: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList

UNIVERSIDADE FEDERAL DO PARANÁ 17

header sentinel

Exemplo: busca(71)

na busca(k): If k = chave, achou! If k < prox. chave, desce 1 nível If k ≥ prox. chave, anda pra direita

*

*

*

10

2

*

*

*

*

*15

*

*

16 * *

*

*

71

*

*

*

*

*

*

*31

*

Page 18: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

*

*

*

10

2

*

*

*

*

*15

*

*

16 * *

*

*

71

*

*

*

*

*

*

*31

*

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList

UNIVERSIDADE FEDERAL DO PARANÁ 18

sentinel

Exemplo: busca(71)

71 ≥ 31 71 < inf ?

na busca(k): If k = chave, achou! If k < prox. chave, desce 1 nível If k ≥ prox. chave, anda pra direita

header

Page 19: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList

UNIVERSIDADE FEDERAL DO PARANÁ 19

header sentinel

na busca(k): If k = chave, achou! If k < prox. chave, desce 1 nível If k ≥ prox. chave, anda pra direita

*

*

*

10

2

*

*

*

*

*15

*

*

16 * *

*

*

71

*

*

*

*

*

*

*31

*

Outro exemplo: busca(16)

Page 20: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList

UNIVERSIDADE FEDERAL DO PARANÁ 20

header sentinel

Outro exemplo: busca(16)

16 < 31 ?

16 ≥ 2 ?

na busca(k): If k = chave, achou! If k < prox. chave, desce 1 nível If k ≥ prox. chave, anda pra direita

*

*

*

10

2

*

*

*

*

*15

*

*

16 * *

*

*

71

*

*

*

*

*

*

*31

*

Page 21: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

*

*

*

10

2

*

*

*

*

*15

*

*

16 * *

*

*

71

*

*

*

*

*

*

*31

*

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList

UNIVERSIDADE FEDERAL DO PARANÁ 21

header sentinel

Outro exemplo: busca(16)

16 < 31 ?

16 ≥ 2 ?

16 ≥ 15 ? 16 < 31 ?

16 < 31 ?

na busca(k): If k = chave, achou! If k < prox. chave, desce 1 nível If k ≥ prox. chave, anda pra direita

Page 22: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList: Inclusão

UNIVERSIDADE FEDERAL DO PARANÁ 22

Passo 1 - Realiza a busca até achar a localização do valor na base da lista

header sentinel

*

*

*

10

2

*

*

*

*

*15

*

*

16 * *

*

*

71

*

*

*

*

*

*

*31

*

Page 23: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList: Inclusão

UNIVERSIDADE FEDERAL DO PARANÁ 23

header sentinel

*

*

*

10

2

*

*

*

*

*15

*

*

16 * *

*

*

71

*

*

*

*

*

*

*31

*

Exemplo: incluir(13) Passo 1 - Realiza a busca até achar a localização do valor na base da lista

Page 24: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList: Inclusão

UNIVERSIDADE FEDERAL DO PARANÁ 24

header sentinel

*

*

*

10

2

*

*

*

*

*15

*

*

16 * *

*

*

71

*

*

*

*

*

*

*31

*

Exemplo: incluir(13)

13 < 31 ?

13 < 15 ?

13 < 31 ?

Passo 1 - Realiza a busca até achar a localização do valor na base da lista

Page 25: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList: Inclusão

UNIVERSIDADE FEDERAL DO PARANÁ 25

header

*

*

*

10

2

*

*

*

*

*15

*

*

16 *

Exemplo: incluir(13)

13 * …

*

*

*31

*

Passo 1 - Realiza a busca até achar a localização do valor na base da lista

Page 26: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList: Inclusão

UNIVERSIDADE FEDERAL DO PARANÁ 26

header

*

*

*

10

2

*

*

*

*

*15

*

*

16 *

Exemplo: incluir(13)

13

*

*…

*

*

*31

*

Passo 2 - “joga a moeda” para saber o número de ponteiros “skips”

Page 27: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

SkipList: Inclusão

UNIVERSIDADE FEDERAL DO PARANÁ 27

header

*

*

*

10

2

*

*

*

*

*15

*

*

16 *

Exemplo: incluir(13)

13

*

*

*

*

*

*31

*

Passo 2 - “joga a moeda” para saber o número de ponteiros “skips”

Page 28: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Agenda

UNIVERSIDADE FEDERAL DO PARANÁ 28

- Listas e SkipList - Arvores - Hash - Compressão

Page 29: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvores

UNIVERSIDADE FEDERAL DO PARANÁ 29

Definição: estrutura de dados hierárquica contendo nodos ligados por ponteiros à nodos filhos.

60

50 80

9040 55 70

Page 30: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvores

UNIVERSIDADE FEDERAL DO PARANÁ 30

Definição: estrutura de dados hierárquica contendo nodos ligados por ponteiros à nodos filhos.

Raiz

Folhas

Apenas 1 caminho

entre 2 nodos

60

50 80

9040 55 70

Page 31: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvores

UNIVERSIDADE FEDERAL DO PARANÁ 31

Definição: estrutura de dados hierárquica contendo nodos ligados por ponteiros à nodos filhos.

Grau máximo = numero máximo de filhos

2 filhos ou binária

60

50 80

9040 55 70

altura

0

1

2

Page 32: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvores

UNIVERSIDADE FEDERAL DO PARANÁ 32

Onde usamos árvores? R: quase tudo na computação - Bancos de dados - Redes de computadores - Compiladores - Sistemas operacionais - Compressão … BigData

Page 33: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Um nodo de uma árvore

UNIVERSIDADE FEDERAL DO PARANÁ 33

struct nodo { int chave; struct t_nodo *esq, *dir; void *valor;

};

Page 34: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvore de busca binária

UNIVERSIDADE FEDERAL DO PARANÁ 34

dado uma chave x: esq.chave <= x <= dir.chave

60

50 80

9040 55 70

Page 35: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvore de busca binária

UNIVERSIDADE FEDERAL DO PARANÁ 35

dado uma chave x: esq.chave <= x <= dir.chave

60

50 80

9040 55 70

Ex.: busca(70)

Page 36: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvore de busca binária

UNIVERSIDADE FEDERAL DO PARANÁ 36

dados podem ser lidos em ordem: 40, 50, 55, 60, 70, 80, 90

60

50 80

9040 55 70

void em_ordem(nodo x) { if(x){

em_ordem(x.esq);printf(“%d”, x.chave);em_ordem(x.dir);

}}

Page 37: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvore de busca binária

UNIVERSIDADE FEDERAL DO PARANÁ 37

Árvores com as mesmas chaves mas com alturas diferentes

60

50

80

90

40

55

70

60

50 80

9040 55 70

altura

0

1

2

altura

0

1

2

3

4

Page 38: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvore de busca binária

UNIVERSIDADE FEDERAL DO PARANÁ 38

Árvores com as mesmas chaves mas com alturas diferentes

60

50

80

90

40

55

70

60

50 80

9040 55 70

Ex.: busca(70)

Page 39: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvore de busca binária

UNIVERSIDADE FEDERAL DO PARANÁ 39

60

50

80

90

40

55

70

60

50 80

9040 55 70

Ex.: busca(70)

mas como farei busca eficiente (eg. log(n))?

Page 40: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 40

altura da árvore é ligada a eficiência nas operações (eg. log(n)), mas como tornar a árvore eficiente?

Árvore de busca binária balanceada

60

50

Page 41: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 41

altura da árvore é ligada a eficiência nas operações (eg. log(n)), mas como tornar a árvore eficiente?

Árvore de busca binária balanceada

60

50

40

Page 42: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 42

altura da árvore é ligada a eficiência nas operações (eg. log(n)), mas como tornar a árvore eficiente?

Árvore de busca binária balanceada

50

40 60

Page 43: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 43

altura da árvore é ligada a eficiência nas operações (eg. log(n)), mas como tornar a árvore eficiente?

Árvore de busca binária balanceada

50

40 60

30

Page 44: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 44

altura da árvore é ligada a eficiência nas operações (eg. log(n)), mas como tornar a árvore eficiente?

Árvore de busca binária balanceada

50

40 60

30

20

Page 45: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 45

altura da árvore é ligada a eficiência nas operações (eg. log(n)), mas como tornar a árvore eficiente?

Árvore de busca binária balanceada

50

30 60

20 40

Page 46: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 46

altura da árvore é ligada a eficiência nas operações (eg. log(n)), mas como tornar a árvore eficiente?

Árvore de busca binária balanceada

50

30 60

20 40

10

Page 47: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 47

altura da árvore é ligada a eficiência nas operações (eg. log(n)), mas como tornar a árvore eficiente?

Árvore de busca binária balanceada

50

30

60

20

4010

Page 48: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvore de busca binária balanceada

UNIVERSIDADE FEDERAL DO PARANÁ 48

Onde usamos árvores de busca binária balanceadas? R: Assumindo que essa árvore cabe em memória - agendamento de processos de sistemas operacionais - cache de sistemas - roteadores de internet - bibliotecas de programação (eg., Java TreeMap) - compiladores na avaliação de expressões matemáticas …

Page 49: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 49

Será possível ter uma árvore que não cabe inteiramente em memória?

Page 50: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvore n-ária: Árvore-B

UNIVERSIDADE FEDERAL DO PARANÁ 50

100 104 109 200

201 210 230110 112 113105 106 108101 102 10397 98 99

- Nodos armazenam “n” chaves

Page 51: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvore-B

UNIVERSIDADE FEDERAL DO PARANÁ 51

- Nodos armazenam “n” chaves

struct nodo { int n; // # de chaves int chaves[M-1]; struct node *p[M];

};

100 104 109 200

Page 52: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 52

- Nodos armazenam “n” chaves

100 104 …

…105 106 108101 102 10397 98 99

1 nodo

1000 chaves

1001 nodos

1.001.000 chaves

1.002.001 nodos

1.002.100.000 chaves …

Árvore-B

Page 53: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 53

- Nodos armazenam “n” chaves - Espaço de chaves indicam caminho pra sub-arvores - Todas os nodos folha na mesma altura

100 104 109 200

201 210 230110 112 113105 106 108101 102 10397 98 99

Árvore-B

Page 54: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 54

dado uma chave x: - percorre nodo - desce quando esq.chave < x < dir.chave

100 104 109 200

201 210 230110 112 113105 106 108101 102 10397 98 99

Árvore-B

Page 55: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 55

Exemplo: busca(112)

100 104 109 200

201 210 230110 112 113105 106 108101 102 10397 98 99

Árvore-B

Page 56: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 56

Exemplo: busca(112)

100 104 109 200

201 210 230110 112 113105 106 108101 102 10397 98 99

Árvore-B

Page 57: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 57

Exemplo: busca(112)

100 104 109 200

201 210 230110 112 113105 106 108101 102 10397 98 99

Árvore-B

Page 58: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 58

Exemplo: busca(entre 110 e 113)

100 104 109 200

201 210 230110 112 113105 106 108101 102 10397 98 99

Árvore-B

Page 59: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 59

Exemplo: busca(entre 110 e 201)

100 104 109 200

201 210 230110 112 113105 106 108101 102 10397 98 99

Árvore-B

Page 60: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0UNIVERSIDADE FEDERAL DO PARANÁ 60

Exemplo: busca(entre 110 e 201) -> Ineficiente

100 104 109 200

201 210 230110 112 113105 106 108101 102 10397 98 99

Árvore-B

Page 61: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvore B+

UNIVERSIDADE FEDERAL DO PARANÁ 61

Árvore n-ária derivada da Árvore-B

Utilizada para minimizar operações de leitura de disco rígido - sistemas de bancos de dados: indexação e armazenamento

- sistemas de arquivos: Linux, Unix e Windows

Page 62: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

Árvore B+

UNIVERSIDADE FEDERAL DO PARANÁ

62

- nodos internos guardam chaves - nodos externos guardam chaves, valores e ponteiros entre eles

100

28 29 807 11 135 6

105 1507 28 89

89 62

100 102 105 120 150 170

Internos

Externos

}

Page 63: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

Árvore B+: nodos externos (folha)

63

- nodos internos guardam chaves - nodos externos guardam chaves, valores e ponteiros entre eles

1

2 2 87 1 15 6

11728

8 1 1 1 1 1 1 k1 k2 k3 k4

Fonte: Andy Pavlo - Query Processing

v1 v2 v3 v4

kn

vn

* *

prox ante# #

slots nivel

chaves ordenadas

valores

Page 64: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

Árvore B+

UNIVERSIDADE FEDERAL DO PARANÁ

64

busca(105)

100

28 29 807 11 135 6

105 1507 28 89

89 64

100 102 105 120 150 170

Internos

Externos

}

Page 65: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

Árvore B+

UNIVERSIDADE FEDERAL DO PARANÁ

65

busca(105)

100

28 29 807 11 135 6

105 1507 28 89

89 65

100 102 105 120 150 170

Internos

Externos

}

Page 66: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

Árvore B+

UNIVERSIDADE FEDERAL DO PARANÁ

66

busca(entre 105 e 170)

100

28 29 807 11 135 6

105 1507 28 89

89 66

100 102 105 120 150 170

Internos

Externos

}

Page 67: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

Árvore B+

UNIVERSIDADE FEDERAL DO PARANÁ

67

busca(entre 105 e 170)

100

28 29 807 11 135 6

105 1507 28 89

89 67

100 102 105 120 150 170

Internos

Externos

}

Page 68: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Árvore B+ na prática

UNIVERSIDADE FEDERAL DO PARANÁ 68

Tipico fator de preenchimento: 67% Capacidade típica: -> Altura 3 = 312.900.721 entradas -> Altura 2 = 2.406.104 entradas Páginas por nível: -> Nível 0 = 1 página = 8KB -> Nível 1 = 134 páginas = 1MB -> Nível 2 = 17.956 páginas = 140MB

Fonte: Andy Pavlo - Query Processing

Page 69: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

PÓS ENGENHARIA INDUSTRIAL 4.0

Conclusões

UNIVERSIDADE FEDERAL DO PARANÁ 69

- Árvores B+ são sempre uma boa opção para armazenamento e busca em grandes bancos de dados - SkipLists possuem propriedades interessantes para grande vazão de escrita de dados (e.g., data streaming), mas não são “cache-amigáveis” (e.g., dados em paginas separadas) - Arvores binárias balanceadas: excelentes para o problema de “agendamento” de processos

Page 70: ocessamento de Big Data - UFPR · 2020-03-31 · Sem ordenação: O(n) comparações UNIVERSIDADE FEDERAL DO PARANÁ 8 16 23 5 42 15 8 4 Lista: vetor 16 23 5 42 15 8 4 Lista: ponteiros

Aula #3 - Estruturas de DadosEDUARDO CUNHA DE ALMEIDA

INDU

STRI

A 4.

0Pr

oces

sam

ento

de

Bi

g Da

ta