SlideShare uma empresa Scribd logo
1 de 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
• 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
• Quais são os pontos contidos nos polígonos?
Spatial Join
• Quais são os pontos contidos nos polígonos?
Spatial Join
• Interseção entre os mapas
Map Overlay
• Resultado:
Map Overlay
• Spatial join produto cartesiano;
• Predicado espacial pode ser custoso;
• Processamento em etapas;
Estratégia de processamento
• 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
Exemplo de campo escalar contínuo
• Partição do plano,
– Cada polígono ou classe de polígono associado a
um valor escalar diferente:
Campo escalar com polígonos
• Definido por
– Peso w
– Ângulo θ
• Soma +w a uma região do plano
– Região = cone c.
Vértice Ponderado
Exemplo – Região poligonal
0
S:
Exemplo – Região poligonal
S:
v1 : +w
+W
θ
v1 : +w
+W
v2 : -w
-W+W = 0
θ
Exemplo – Região poligonal
S:
+W
Exemplo – Região poligonal
S:
v1 : +w v2 : -w
-W+W = 0
v3 : -w
-W+W = 0
-W+W-W = -W
+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
+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= 0
v5 : +w
-W+W-W+W+W= +W
+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= 0
v5 : +w
-W+W-W+W+W-W= 0
v6 : -w
• S3 = S1 + S2  C3 = C1 U C2;
• Reordenar C3 ;
• Avaliar a forma canônica em C3.
Operação Adicionar/Add
Adição/Add
1 1
S1 S2
1 12
S1 + S2
• 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
Scalar Transformation/Transformação Escalar
1 12
S1 + S2
1
Interseção
Scalar Transformation/Transformação Escalar
1 12
S1 + S2
1
União/Dissolve
Scalar Transformation/Transformação Escalar
1 23
S1 + 2S2
1
Diferença A-B
• Joga tudo em memória...
• Limitado quando estamos interessados só em
uma área restrita do dado geográfico.
Há uma implementação do WVC
• 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
Solução com 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
Arquitetura Básica
A aplicação se comunica apenas com o coordenador...
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.
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
Valor
inicial Valor final (use * para auto-ajuste)
Tamanho do chunk
Sobreposição do chunk
Chunking...
Exemplo simples:
CREATE ARRAY A1
<att1: double,
att2: int64>
[x=0:100,25,0
y=0:100,10,0];
Chunk e array esparso
• O chunk é representado como um Bitmap;
– Vazios não são representados;
• Usa-se compactação RLE – eficiente.
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...
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;
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);
• Implementar operação Add do WVC com
transformação escalar:
S3 = S1 + α.S2
WVC3 = WVC1 + α.WVC2;
• Envolve essencialmente merge e sort de
coleções de vértices ponderados (WVC)!
O que fiz neste trabalho?
• 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?
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
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
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 AQL
insert(redimension(substitute(cross_join(WVC2,aggregate(WVC1,cou
nt(*))),zeros,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
• 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
• 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
Obrigado!
José Augusto Sapienza Ramos
08/09/2015
Disciplina de Banco de Dados Não Convencionais
Engenharia de Sistemas e Computação da COPPE/UFRJ

Mais conteúdo relacionado

Destaque

Blauw 6 23 juni 2016 cruciale rol van getuigen in coldcasezaken..
Blauw 6 23 juni 2016  cruciale rol van getuigen in coldcasezaken..Blauw 6 23 juni 2016  cruciale rol van getuigen in coldcasezaken..
Blauw 6 23 juni 2016 cruciale rol van getuigen in coldcasezaken..Jasper van der Kemp
 
Docent Criminologie VU - mei 2016
Docent Criminologie VU -  mei 2016Docent Criminologie VU -  mei 2016
Docent Criminologie VU - mei 2016Jasper van der Kemp
 
Evidencias de años anteriores al 2016
Evidencias de años anteriores al 2016Evidencias de años anteriores al 2016
Evidencias de años anteriores al 2016INERCANTA
 
Corazon (dibujo a mano alzada)
Corazon (dibujo a mano alzada)Corazon (dibujo a mano alzada)
Corazon (dibujo a mano alzada)Juan Parra
 
Guia didactica j_orientacion
Guia didactica j_orientacionGuia didactica j_orientacion
Guia didactica j_orientacionFede Hag
 
Evidencias 2016
Evidencias 2016Evidencias 2016
Evidencias 2016INERCANTA
 
herramientas de espiral y de estrella
herramientas de espiral y de estrellaherramientas de espiral y de estrella
herramientas de espiral y de estrellaJuan Parra
 
cv Eloisa Ponte - 220615
cv Eloisa Ponte - 220615cv Eloisa Ponte - 220615
cv Eloisa Ponte - 220615Eloisa Ponte
 
Tipos de textiles
Tipos de textilesTipos de textiles
Tipos de textilesedeespino
 

Destaque (17)

Blauw 6 23 juni 2016 cruciale rol van getuigen in coldcasezaken..
Blauw 6 23 juni 2016  cruciale rol van getuigen in coldcasezaken..Blauw 6 23 juni 2016  cruciale rol van getuigen in coldcasezaken..
Blauw 6 23 juni 2016 cruciale rol van getuigen in coldcasezaken..
 
Docent Criminologie VU - mei 2016
Docent Criminologie VU -  mei 2016Docent Criminologie VU -  mei 2016
Docent Criminologie VU - mei 2016
 
3D Printing
3D Printing3D Printing
3D Printing
 
Prezi
PreziPrezi
Prezi
 
Evidencias de años anteriores al 2016
Evidencias de años anteriores al 2016Evidencias de años anteriores al 2016
Evidencias de años anteriores al 2016
 
Corazon (dibujo a mano alzada)
Corazon (dibujo a mano alzada)Corazon (dibujo a mano alzada)
Corazon (dibujo a mano alzada)
 
Guia didactica j_orientacion
Guia didactica j_orientacionGuia didactica j_orientacion
Guia didactica j_orientacion
 
Evidencias 2016
Evidencias 2016Evidencias 2016
Evidencias 2016
 
Docent criminologie mei 2016
Docent criminologie mei 2016Docent criminologie mei 2016
Docent criminologie mei 2016
 
herramientas de espiral y de estrella
herramientas de espiral y de estrellaherramientas de espiral y de estrella
herramientas de espiral y de estrella
 
Dipanjan Sikidar-CV
Dipanjan Sikidar-CVDipanjan Sikidar-CV
Dipanjan Sikidar-CV
 
Canva pdf
Canva pdfCanva pdf
Canva pdf
 
Narrative
NarrativeNarrative
Narrative
 
CV Maged El Damaty
CV Maged El DamatyCV Maged El Damaty
CV Maged El Damaty
 
cv Eloisa Ponte - 220615
cv Eloisa Ponte - 220615cv Eloisa Ponte - 220615
cv Eloisa Ponte - 220615
 
Stoke Newington town guide c1907
Stoke Newington town guide c1907Stoke Newington town guide c1907
Stoke Newington town guide c1907
 
Tipos de textiles
Tipos de textilesTipos de textiles
Tipos de textiles
 

Semelhante a Weighted Vertex Collections e SciDB

Principais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoPrincipais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoIntel Software Brasil
 
Introdução ao JS1.pptx
Introdução ao JS1.pptxIntrodução ao JS1.pptx
Introdução ao JS1.pptxLuanDev1
 
Scopus sidnei-bc-day-2009
Scopus sidnei-bc-day-2009Scopus sidnei-bc-day-2009
Scopus sidnei-bc-day-2009SSPI Brasil
 
Controle Digital de Velocidade de um Motor CC usando Matlab®
Controle Digital de Velocidade de um Motor CC usando Matlab®Controle Digital de Velocidade de um Motor CC usando Matlab®
Controle Digital de Velocidade de um Motor CC usando Matlab®Gerson Roberto da Silva
 
Apostila autocad 3_d
Apostila autocad 3_dApostila autocad 3_d
Apostila autocad 3_dfgonluz
 
Procedural Solar System Generation in Real -Time
Procedural Solar System Generation in Real -TimeProcedural Solar System Generation in Real -Time
Procedural Solar System Generation in Real -TimeCassiano Honorio da Silva
 
Operações com dados espaciais (Vetor) em R
Operações com dados espaciais (Vetor) em ROperações com dados espaciais (Vetor) em R
Operações com dados espaciais (Vetor) em RVitor Vieira Vasconcelos
 
Vetorização e Otimização de Código - Intel Software Conference 2013
Vetorização e Otimização de Código - Intel Software Conference 2013Vetorização e Otimização de Código - Intel Software Conference 2013
Vetorização e Otimização de Código - Intel Software Conference 2013Intel Software Brasil
 
Aplicação do k-NN utilizando Bitonic Sort
Aplicação do k-NN utilizando Bitonic SortAplicação do k-NN utilizando Bitonic Sort
Aplicação do k-NN utilizando Bitonic SortVinicius Coelho
 

Semelhante a Weighted Vertex Collections e SciDB (20)

Algoritmo cordic
Algoritmo cordicAlgoritmo cordic
Algoritmo cordic
 
Lugar raizes
Lugar raizesLugar raizes
Lugar raizes
 
Aula 07
Aula 07Aula 07
Aula 07
 
Principais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoPrincipais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorização
 
Introdução ao JS1.pptx
Introdução ao JS1.pptxIntrodução ao JS1.pptx
Introdução ao JS1.pptx
 
Scopus sidnei-bc-day-2009
Scopus sidnei-bc-day-2009Scopus sidnei-bc-day-2009
Scopus sidnei-bc-day-2009
 
Controle Digital de Velocidade de um Motor CC usando Matlab®
Controle Digital de Velocidade de um Motor CC usando Matlab®Controle Digital de Velocidade de um Motor CC usando Matlab®
Controle Digital de Velocidade de um Motor CC usando Matlab®
 
Autocad 3 d
Autocad 3 dAutocad 3 d
Autocad 3 d
 
Apostila autocad 3_d
Apostila autocad 3_dApostila autocad 3_d
Apostila autocad 3_d
 
Apostila autocad 3_d
Apostila autocad 3_dApostila autocad 3_d
Apostila autocad 3_d
 
Apostila autocad 3_d
Apostila autocad 3_dApostila autocad 3_d
Apostila autocad 3_d
 
Apostila autocad 3_d
Apostila autocad 3_dApostila autocad 3_d
Apostila autocad 3_d
 
Apostila autocad 3_d
Apostila autocad 3_dApostila autocad 3_d
Apostila autocad 3_d
 
Procedural Solar System Generation in Real -Time
Procedural Solar System Generation in Real -TimeProcedural Solar System Generation in Real -Time
Procedural Solar System Generation in Real -Time
 
Operações com dados espaciais (Vetor) em R
Operações com dados espaciais (Vetor) em ROperações com dados espaciais (Vetor) em R
Operações com dados espaciais (Vetor) em R
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Vetorização e Otimização de Código - Intel Software Conference 2013
Vetorização e Otimização de Código - Intel Software Conference 2013Vetorização e Otimização de Código - Intel Software Conference 2013
Vetorização e Otimização de Código - Intel Software Conference 2013
 
Relatório 1
Relatório 1Relatório 1
Relatório 1
 
Aplicação do k-NN utilizando Bitonic Sort
Aplicação do k-NN utilizando Bitonic SortAplicação do k-NN utilizando Bitonic Sort
Aplicação do k-NN utilizando Bitonic Sort
 
Miniseminario fetch size
Miniseminario fetch sizeMiniseminario fetch size
Miniseminario fetch size
 

Mais de Jose Augusto Sapienza Ramos

Geomarketing e Inteligência Geoespacial para melhores decisões - 31/08/2017
Geomarketing e Inteligência Geoespacial para melhores decisões - 31/08/2017Geomarketing e Inteligência Geoespacial para melhores decisões - 31/08/2017
Geomarketing e Inteligência Geoespacial para melhores decisões - 31/08/2017Jose Augusto Sapienza Ramos
 
Big Data, seu novo paradigma para análise de dados e seus mitos
Big Data, seu novo paradigma para análise de dados e seus mitosBig Data, seu novo paradigma para análise de dados e seus mitos
Big Data, seu novo paradigma para análise de dados e seus mitosJose Augusto Sapienza Ramos
 
O que a academia nos mostra do futuro? 3 coisas que o empreendedor precisa sa...
O que a academia nos mostra do futuro? 3 coisas que o empreendedor precisa sa...O que a academia nos mostra do futuro? 3 coisas que o empreendedor precisa sa...
O que a academia nos mostra do futuro? 3 coisas que o empreendedor precisa sa...Jose Augusto Sapienza Ramos
 
Extensão universitária e GIS - Estudo de Caso do Sistema Labgis
Extensão universitária e GIS - Estudo de Caso do Sistema LabgisExtensão universitária e GIS - Estudo de Caso do Sistema Labgis
Extensão universitária e GIS - Estudo de Caso do Sistema LabgisJose Augusto Sapienza Ramos
 
Minicurso Banco de Dados Geográficos - MundoGEO Connect 2014
Minicurso Banco de Dados Geográficos - MundoGEO Connect 2014Minicurso Banco de Dados Geográficos - MundoGEO Connect 2014
Minicurso Banco de Dados Geográficos - MundoGEO Connect 2014Jose Augusto Sapienza Ramos
 
Modelagem Ambiental + Modelagem de Dados Geográficos
Modelagem Ambiental + Modelagem de Dados GeográficosModelagem Ambiental + Modelagem de Dados Geográficos
Modelagem Ambiental + Modelagem de Dados GeográficosJose Augusto Sapienza Ramos
 

Mais de Jose Augusto Sapienza Ramos (7)

Geomarketing e Inteligência Geoespacial para melhores decisões - 31/08/2017
Geomarketing e Inteligência Geoespacial para melhores decisões - 31/08/2017Geomarketing e Inteligência Geoespacial para melhores decisões - 31/08/2017
Geomarketing e Inteligência Geoespacial para melhores decisões - 31/08/2017
 
Big Data, seu novo paradigma para análise de dados e seus mitos
Big Data, seu novo paradigma para análise de dados e seus mitosBig Data, seu novo paradigma para análise de dados e seus mitos
Big Data, seu novo paradigma para análise de dados e seus mitos
 
O que a academia nos mostra do futuro? 3 coisas que o empreendedor precisa sa...
O que a academia nos mostra do futuro? 3 coisas que o empreendedor precisa sa...O que a academia nos mostra do futuro? 3 coisas que o empreendedor precisa sa...
O que a academia nos mostra do futuro? 3 coisas que o empreendedor precisa sa...
 
Lançamento do software livre Hydroflow 1.0
Lançamento do software livre Hydroflow 1.0Lançamento do software livre Hydroflow 1.0
Lançamento do software livre Hydroflow 1.0
 
Extensão universitária e GIS - Estudo de Caso do Sistema Labgis
Extensão universitária e GIS - Estudo de Caso do Sistema LabgisExtensão universitária e GIS - Estudo de Caso do Sistema Labgis
Extensão universitária e GIS - Estudo de Caso do Sistema Labgis
 
Minicurso Banco de Dados Geográficos - MundoGEO Connect 2014
Minicurso Banco de Dados Geográficos - MundoGEO Connect 2014Minicurso Banco de Dados Geográficos - MundoGEO Connect 2014
Minicurso Banco de Dados Geográficos - MundoGEO Connect 2014
 
Modelagem Ambiental + Modelagem de Dados Geográficos
Modelagem Ambiental + Modelagem de Dados GeográficosModelagem Ambiental + Modelagem de Dados Geográficos
Modelagem Ambiental + Modelagem de Dados Geográficos
 

Weighted Vertex Collections e SciDB

  • 1. 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
  • 2. • 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
  • 3. • Quais são os pontos contidos nos polígonos? Spatial Join
  • 4. • Quais são os pontos contidos nos polígonos? Spatial Join
  • 5. • Interseção entre os mapas Map Overlay
  • 7. • Spatial join produto cartesiano; • Predicado espacial pode ser custoso; • Processamento em etapas; Estratégia de processamento
  • 8. • 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
  • 9. Exemplo de campo escalar contínuo
  • 10. • Partição do plano, – Cada polígono ou classe de polígono associado a um valor escalar diferente: Campo escalar com polígonos
  • 11. • Definido por – Peso w – Ângulo θ • Soma +w a uma região do plano – Região = cone c. Vértice Ponderado
  • 12. Exemplo – Região poligonal 0 S:
  • 13. Exemplo – Região poligonal S: v1 : +w +W θ
  • 14. v1 : +w +W v2 : -w -W+W = 0 θ Exemplo – Região poligonal S:
  • 15. +W Exemplo – Região poligonal S: v1 : +w v2 : -w -W+W = 0 v3 : -w -W+W = 0 -W+W-W = -W
  • 16. +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
  • 17. +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= 0 v5 : +w -W+W-W+W+W= +W
  • 18. +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= 0 v5 : +w -W+W-W+W+W-W= 0 v6 : -w
  • 19. • S3 = S1 + S2  C3 = C1 U C2; • Reordenar C3 ; • Avaliar a forma canônica em C3. Operação Adicionar/Add
  • 21. • 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
  • 23. Scalar Transformation/Transformação Escalar 1 12 S1 + S2 1 União/Dissolve
  • 24. Scalar Transformation/Transformação Escalar 1 23 S1 + 2S2 1 Diferença A-B
  • 25. • Joga tudo em memória... • Limitado quando estamos interessados só em uma área restrita do dado geográfico. Há uma implementação do WVC
  • 26. • 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
  • 28. • 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
  • 29. Arquitetura Básica A aplicação se comunica apenas com o coordenador...
  • 30. 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.
  • 31. 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 Valor inicial Valor final (use * para auto-ajuste) Tamanho do chunk Sobreposição do chunk
  • 32. Chunking... Exemplo simples: CREATE ARRAY A1 <att1: double, att2: int64> [x=0:100,25,0 y=0:100,10,0];
  • 33. Chunk e array esparso • O chunk é representado como um Bitmap; – Vazios não são representados; • Usa-se compactação RLE – eficiente.
  • 34. 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...
  • 35. 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;
  • 36. 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);
  • 37. • Implementar operação Add do WVC com transformação escalar: S3 = S1 + α.S2 WVC3 = WVC1 + α.WVC2; • Envolve essencialmente merge e sort de coleções de vértices ponderados (WVC)! O que fiz neste trabalho?
  • 38. • 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?
  • 39. 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
  • 40. 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
  • 41. 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 AQL insert(redimension(substitute(cross_join(WVC2,aggregate(WVC1,cou nt(*))),zeros,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
  • 42. • 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
  • 43. • 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
  • 44. Obrigado! José Augusto Sapienza Ramos 08/09/2015 Disciplina de Banco de Dados Não Convencionais Engenharia de Sistemas e Computação da COPPE/UFRJ