Weighted Vertex Collections e SciDB

44
Weighted Vertex Collections e SciDB José Augusto Sapienza Ramos 08/09/2015 Trabalho de Banco de Dados Não Convencionais Engenharia de Sistemas e Computação da COPPE/UFRJ

Transcript of Weighted Vertex Collections e SciDB

Page 1: Weighted Vertex Collections e SciDB

Weighted Vertex Collections e SciDB

José Augusto Sapienza Ramos08/09/2015

Trabalho de Banco de Dados Não Convencionais

Engenharia de Sistemas e Computação da COPPE/UFRJ

Page 2: Weighted Vertex Collections e SciDB

• Processamento de Map Overlay de forma eficiente e por um novo caminho– Avaliação de como a minha estrutura proposta

(WVC) pode se beneficiar do SciDB!

Pergunta principal

Page 3: Weighted Vertex Collections e SciDB

• Quais são os pontos contidos nos polígonos?

Spatial Join

Page 4: Weighted Vertex Collections e SciDB

• Quais são os pontos contidos nos polígonos?

Spatial Join

Page 5: Weighted Vertex Collections e SciDB

• Interseção entre os mapas

Map Overlay

Page 6: Weighted Vertex Collections e SciDB

• Resultado:

Map Overlay

Page 7: Weighted Vertex Collections e SciDB

• Spatial join produto cartesiano;

• Predicado espacial pode ser custoso;

• Processamento em etapas;

Estratégia de processamento

Page 8: Weighted Vertex Collections e SciDB

• Campo escalar S em 2D;– Dado um ponto p valor escalar S(p);

• Conjunto de vértices ponderados – Variações no campo– Representação de S.

Weighted Vertex Collection

Page 9: Weighted Vertex Collections e SciDB

Exemplo de campo escalar contínuo

Page 10: Weighted Vertex Collections e SciDB

• Partição do plano, – Cada polígono ou classe de polígono associado a

um valor escalar diferente:

Campo escalar com polígonos

Page 11: Weighted Vertex Collections e SciDB

• Definido por– Peso w – Ângulo θ

• Soma +w a uma região do plano– Região = cone c.

Vértice Ponderado

Page 12: Weighted Vertex Collections e SciDB

Exemplo – Região poligonal

0

S:

Page 13: Weighted Vertex Collections e SciDB

Exemplo – Região poligonal

S:

v1 : +w

+W

θ

Page 14: Weighted Vertex Collections e SciDB

v1 : +w

+W

v2 : -w

-W+W = 0

θ

Exemplo – Região poligonal

S:

Page 15: Weighted Vertex Collections e SciDB

+W

Exemplo – Região poligonal

S:

v1 : +w v2 : -w

-W+W = 0

v3 : -w

-W+W = 0 -W+W-W = -W

Page 16: Weighted Vertex Collections e SciDB

+W

S:

v1 : +w v2 : -w

-W+W = 0

v3 : -w

-W+W = 0

-W+W-W= -W

v4 : +w

Exemplo – Região poligonal

-W+W-W+W= 0

Page 17: Weighted Vertex Collections e SciDB

+W

S:

v1 : +w v2 : -w

-W+W = 0

v3 : -w

-W+W = 0

-W+W-W+W= 0

v4 : +w

Exemplo – Região poligonal

-W+W-W+W= 0v5 : +w

-W+W-W+W+W= +W

Page 18: Weighted Vertex Collections e SciDB

+W

S:

v1 : +w v2 : -w

-W+W = 0

v3 : -w

-W+W = 0

-W+W-W+W= 0

v4 : +w

Exemplo – Região poligonal

-W+W-W+W= 0v5 : +w

-W+W-W+W+W-W= 0

v6 : -w

Page 19: Weighted Vertex Collections e SciDB

• S3 = S1 + S2 C3 = C1 U C2;

• Reordenar C3 ;

• Avaliar a forma canônica em C3.

Operação Adicionar/Add

Page 20: Weighted Vertex Collections e SciDB

Adição/Add

1 1

S1 S2

1 12

S1 + S2

Page 21: Weighted Vertex Collections e SciDB

• St = f(S) – St representado por Ct

• Permite realizar Map Overlay;• Algoritmo baseado em scan• Pré-condição: f(0) = 0

Operação Scalar Transformation/Transformação Escalar

Page 22: Weighted Vertex Collections e SciDB

Scalar Transformation/Transformação Escalar

1 12

S1 + S2

1

Interseção

Page 23: Weighted Vertex Collections e SciDB

Scalar Transformation/Transformação Escalar

1 12

S1 + S2

1

União/Dissolve

Page 24: Weighted Vertex Collections e SciDB

Scalar Transformation/Transformação Escalar

1 23

S1 + 2S2

1

Diferença A-B

Page 25: Weighted Vertex Collections e SciDB

• Joga tudo em memória...

• Limitado quando estamos interessados só em uma área restrita do dado geográfico.

Há uma implementação do WVC

Page 26: Weighted Vertex Collections e SciDB

• Uma coleção ordenada nos WV (em scan order) – converter, somar

• Manutenção da scanline na reconstrução do campo escalar – eventos também ordenados

• O ponto é: ordenação e recuperação em array!

Duas estrutura de dados e processamentos básicos

Page 27: Weighted Vertex Collections e SciDB

Solução com SciDB

Page 28: Weighted Vertex Collections e SciDB

• Modelagem de arrays multidimensionais com array unidimensional;

• Cada matriz tem atributos e dimensões:– Dimensões: definem a posição do array (ex. i,j);– Atributos: atributos locados nas posições.

Algumas características do SciDB

Page 29: Weighted Vertex Collections e SciDB

Arquitetura Básica

A aplicação se comunica apenas com o coordenador...

Page 30: Weighted Vertex Collections e SciDB

Chunking...

• Pedaços do array são distribuídos - função hash;

• Busca-se manter a localidade dos chunks dentro dos nós;

• Há a possibildiade de replicação, mas apenas para manter a disponibilidade.

Page 31: Weighted Vertex Collections e SciDB

Chunking...

Exemplo simples:CREATE ARRAY A1 <att1: double, att2: int64> [x=0:100,25,0 y=0:100,10,0];

atributos

dimensões

nome do array

Valorinicial Valor final (use * para auto-ajuste)

Tamanho do chunkSobreposição do chunk

Page 32: Weighted Vertex Collections e SciDB

Chunking...

Exemplo simples:CREATE ARRAY A1 <att1: double, att2: int64> [x=0:100,25,0 y=0:100,10,0];

Page 33: Weighted Vertex Collections e SciDB

Chunk e array esparso

• O chunk é representado como um Bitmap;– Vazios não são representados;

• Usa-se compactação RLE – eficiente.

Page 34: Weighted Vertex Collections e SciDB

Chunk Overlap

• Repetir posições em chunks adjacentes é recomendado para:– Operações em janelas (filtro, médias móveis, ...)– Detecção de features– Aplicação de kernels e outras operações de

vizinhança...

Page 35: Weighted Vertex Collections e SciDB

Características das transações

• Garante ACID:– Coordenador pede lock de todos os chunks do array e faz

rollback para um estado consistente, se houver falha;

• Particionamento vertical do array;– 1 chunk para cada atributo;

• Estratégia “no overwrite” - versionamento– Alterações geram novas versões dos chunks e do array;

Page 36: Weighted Vertex Collections e SciDB

Linguagens de manipulação

• AQL - Array Query Language:INSERT INTO A1 SELECT att1, att2 FROM A2 WHERE att1 =

‘valor’;SELECT count(*) INTO A3 FROM A1;

• AFL - Array Functional Language:insert(filter(project(A2,att1,att2),att1=‘valor’)),A1);store(aggregate(A1,count(*)),A3);

Page 37: Weighted Vertex Collections e SciDB

• Implementar operação Add do WVC com transformação escalar:S3 = S1 + α.S2WVC3 = WVC1 + α.WVC2;

• Envolve essencialmente merge e sort de coleções de vértices ponderados (WVC)!

O que fiz neste trabalho?

Page 38: Weighted Vertex Collections e SciDB

• Para os processamentos (sort, scan, ...) a posição relativa de scan order é mais importante:

create array WVC1 <x: double, y: double, theta: double, w: int32>[i=0:*,50,0];

O que é atributo e o que é dimensão para mim?

Page 39: Weighted Vertex Collections e SciDB

create array WVC1 <x: double, y: double, theta: double, w: int32>[i1=0:*,10,0];

create array WVC2 <x: double, y: double, theta: double, w: int32>[i2=0:*,10,0];

create temp array WVC3 <x: double, y: double, theta: double, w: int32>[i3=0:*,10,0];

Lembrando: WVC3 = WVC1 + α.WVC2

Criando os arrays para o Add

Page 40: Weighted Vertex Collections e SciDB

set lang AQL;load WVC1 from '../../../wvc1.txt';load WVC2 from '../../../wvc2.txt';insert into WVC1 select * from

sort(WVC1,y,x,theta);insert into WVC2 select * from

sort(WVC2,y,x,theta);

Carregando os vértices podenrados

Page 41: Weighted Vertex Collections e SciDB

insert into WVC3 select * from WVC1; '‘insere todos os elementos de WVC1 em WVC3

create temp array T <x: double, y: double, theta: double, w: int32, i2: int64, count: uint64>[p=0:*,100,0]; '''array temporario

set lang AFL; ''' por causa de bug, redimension nao funciona em AQLinsert(redimension(substitute(cross_join(WVC2,aggregate(WVC1,count(*))),ze

ros,count),T),T);set lang AQL;update T set w=pow(10,ceil(log10(count)))*w; '''atualizando alpha*w;set lang AFL;insert(redimension(cast(sort(merge(redimension(apply(T,i3,i2+count),WVC3),

WVC3),y,x,theta),WVC3),WVC3),WVC3);remove(T); '''drop array T;

Realizando a operação Add

Page 42: Weighted Vertex Collections e SciDB

• Foi utilizado AQL e AFL, linguagens sem recursos procedurais;– Podemos utilizar um cliente Python ou R!

• A solução está em amadureciamento;– Há bugs e nem todas as funções em AQL existem em AFL e

vice-versa;– Muita necessidade de cast entre os resutados;– A função sort não permite a passagem de uma função de

ordenamento;– Considerações adicionais são necessárias para robustez de

operações com ponto flutuante.

Considerações

Page 43: Weighted Vertex Collections e SciDB

• A operação Add, que envolve essencialmente sort, pode ser implementada se beneficiando das vantagens de paralelismo e de acesso parcial dos dados;– É possível fazer window queries.– Scalar transformation pode ser feita na aplicação.

• Creio que seja possível criar a operação Scalar Transformation também;– Pensar! Estrutura de operações de arrays difere

dos algoritmos tradicionais de scan (plane sweep)

Considerações

Page 44: Weighted Vertex Collections e SciDB

Obrigado!

José Augusto Sapienza Ramos08/09/2015

Disciplina de Banco de Dados Não Convencionais

Engenharia de Sistemas e Computação da COPPE/UFRJ