efficient query processing in rdf databases · cotendo sujeito, predicado e objeto. • em alguns...

50
Efficient Query Processing in RDF Databases AUTORES: Andrey Gubichev Munich, Germany Thomas Neumann Munich, Germany José Ramalho Apresentação capítulo 5 Curitiba, 10 de novembro de 2016

Upload: hoanghanh

Post on 09-Dec-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Efficient Query Processing in RDF Databases

AUTORES:

Andrey GubichevMunich, Germany

Thomas NeumannMunich, Germany

José RamalhoApresentação capítulo 5

Curitiba, 10 de novembro de 2016

Page 2: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Introdução

Itens Abordados:

• Análise das consultas SPARQL.

• Tipos de indexação de dados RDF.

• Formas de armazenamento.

• Exemplos de sistemas RDF.

Page 3: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Introdução

Considerações Iniciais:

• Aumento expressivo na web nos últimos anos do Linked Data.

• Existência de diversos conjuntos de dados contendo milhões de triplas: biomedicina (Uniprot, PubMed), bases de conhecimento (DBpedia, YAGO), governo (Data.gov), entretenimento (MusicBrainz), etc.

Page 4: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

31 bilhõesde triplas publicadas online

De acordo com Linked Open Data existem mais de

Page 5: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Introdução

Motivação:

• Números expressivos de recursos RDF indicando a necessidade da busca por uma indexação eficiente.

• Preocupação com o processamento de consultas SPARQL.

• Dificuldades identificadas no RDF: armazenamento, indexação e consulta.

Page 6: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Como indexar os diversos conjuntos de dados RDF publicados na Web?

A ausência de um esquema global e a diversidade de recursos torna esta tarefa desafiadora.

Desafios

Page 7: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Como encontrar o plano de execução ideal para consultas SPARQL?

Uma vez que o modelo de dados consiste essencialmente de triplas, a extração de dados algumas vezes necessita deum grande número de junções.

Desafios

Page 8: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Como otimizar consultas com estimativas precisas de resultados?

Isso normalmente requer estruturas de dados específicas que manipulam as estimativas de seletividade e cardinalidade para dados RDF.

Desafios

Page 9: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Como executar com eficiência as junções e os caminhos a percorrer?

Mesmo depois de encontrar o plano de execução ideal, diversas junções precisam ser executadas. Os caminho percorridotambém tornar-se um desafio em grandes conjuntos de dados, uma vez que acessam diversas informações.

Desafios

Page 10: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Duas possíveis abordagens de acordo com os autores:

Baseada no Modelo Relacional

Baseado em Grafos

Armazenamentode dados RDF

Page 11: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Armazenamentode dados RDF

Abordagem baseada no modelo relacional

A maioria dos sistemas mapeiam o conjunto de dados RDF para tabelas relacionais e utilizam três possíveis estratégias: Triple Stores, Tabelas de Propriedades e Tabelas de Propriedades Clusterizadas.

Page 12: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Armazenamentode dados RDF

Estratégia 1: Triple Stores

• As triplas são salvas em grandes tabelas cotendo sujeito, predicado e objeto.

• Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a tripla.

Page 13: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

IndexaçãoExemplos Árvores B+

Page 14: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

IndexaçãoBaseado no modelo relacional

Cinco estratégias de índices usando B+ tree:

• Índices separados para o S, P e O;

• Índice agrupado com o S e P;

• Índice agrupado com o S e P e o índice do O separado;

• Índice agrupado com o P e O;

• Íncide agrupado com o S, P e O S: Sujeito P : Predicado O: Objeto

Page 15: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Indexação

Baseado no modelo relacional

Experiências com consultas simples ou consultas com poucas junções mostraram que a primeira estratégia obteve melhor desempenho, no caso, índices separados para o S, P e O;

S: Sujeito P : Predicado O: Objeto

Page 16: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Indexação

Estratégia 1: Triple Stores

Umas das primeiras propostas para melhorar o desempenho das consultas foi usar índices não clusterizados com diversas combinações de Sujeito, Predicato e Objeto salvos em triples table.

Page 17: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Indexação

No modelo relacional

Quando uma consulta tiver uma complexidade maior, índices clusterizados são indicados pois possuem uma performance melhor.

Page 18: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Indexação Excessiva

Espaço em Disco

Criação de novos

índices

Indexação

Page 19: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Indexação

Compressão de Dados em Banco de Dados

Para manter os requisitos de espaço em disco devido a indexação em larga escala, os sistemas normalmente usam a Compressão de Dados por Dicionário.

Page 20: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

“A compressão de dados é o ato de reduzir o espaço ocupado por dados num determinado sistema. Essa operação pode ser realizada através de diversos algoritmos de compressão, reduzindo a quantidade de bytes para representar um dado, podendo esse dado ser um recurso RDF.

Compressão de Dados em Banco de Dados

Indexação

Page 21: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Indexação

Como funciona a compressão de dados

por dicionário?

• Cada URI de uma tripla é mapeado para um ID exclusivo.

• Os dados são salvos como triplas de inteiros e não como strings.

• Duas maneiras de atribuir os IDs: incremental ou através de função hash.

Page 22: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Indexação

Como funciona a compressão de dados

por dicionário?

• ID de forma incremental: para cada novo dado que deve ser salvo no BD é requisitado o próximo ID incremental disponível.

• O mapeamento das strings para os IDs e dos IDs para as strings é salvo em uma estrutura de árvore B+.

Page 23: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Indexação

Como funciona a compressão de dados

por dicionário?

• Segunda opção para geração de IDs é através de função hash.

• Um ID para a String é gerado por um hash.

• Apenas o mapeamento do ID para a sequência de caracteres precisa ser armazenado.

Page 24: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Indexação

Exemplos de implementações

• Virtuoso: emprega um esquema de indexação parcial, onde apenas dois índices quádruplos (PSOG, POGS) são armazenados.

• Além disso, três índices duplos são mantidos: SP, OP e GS.

S: Sujeito P : Predicado O: ObjetoG: Grafo

Page 25: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Indexação

Exemplos de implementações

• Hexastore: emprega seis diferentes índices de árvores B+ agrupados em todas as possíveis permutações de S, P e O: SPO, SOP, PSO, POS, OSP, OPS.

S: Sujeito P : Predicado O: Objeto

Page 26: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Indexação

Exemplos de implementações

• RDF-3X: emprega seis diferentes índices de árvores SPO, SOP, PSO, POS, OSP, OPS além dos subconjuntos SP, SO, PS, PO, OS, OP resultando em seis índices adicionais.

S: Sujeito P : Predicado O: Objeto

Page 27: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Estratégia 2 e 3: Property e

Cluster-property Tables

Os autores analisaram o armazenamento de dados RDF em tabelas que são definidas por um ou vários predicados.

Armazenamento de dados RDF

Page 28: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Armazenamento de dados RDF

Baseado no modelo relacional

Estratégia 2: Property Tables

• As triplas são agrupadas pelo nome do predicado.

• Todas as triplas com o mesmo predicado são armazenadas em uma tabela separada.

Page 29: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Armazenamentode dados RDF

Baseado no modelo relacional

Estratégia 3: Cluster-property Tables

• As triplas são agrupadas em classes com base na similaridade dos predicados.

• Cada tripla é armazenada em uma tabela que corresponde a sua classe.

• As classes são normalmente determinadas por um algoritmo de agrupamento.

Page 30: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Abordagem Extrema

• Usa uma tabela separada para cada (P).

• Sujeitos são conectados a vários objetos através do mesmo (P) e resultam em múltiplas linhas com o mesmo (S) e diferentes (O)

S: Sujeito P : Predicado O: Objeto

Armazenamento Property e Cluster-property Tables

Page 31: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Abordagem Extrema

• A coluna do sujeito é classificada para permitir joins otimizados.

• Os objetos podem ser indexados através de árvores B+.

Armazenamento Property e Cluster-property Tables

Page 32: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

• Implementação da Apache em Java que suporta tabelas de propriedades clusterizadas.

Armazenamento Cluster-property Tables

Exemplo

Page 33: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Abordagem baseada em grafos

• Os autores abordam de forma sucinta o assunto.

• Limitaram em conceituar o G-Store: sistema em que o conjunto de dados RDF é tratado como grafos.

Armazenamento e Indexação

Page 34: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

G-Store

• Sistema de gerenciamento de dados RDF.

• Mantém a estrutura de grafo de acordo com o dado RDF original.

• O modelo de dados é baseado em grafos com várias arestas onde cada vértice corresponde a um sujeito ou objeto.

Armazenamento e Indexação

Page 35: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

G-Store

• Possui um algoritmo que particiona o grafo em subgrafos e organiza os subgrafos no disco.

• Minimiza a distância no disco entre vértices adjacentes.

• Implementa um índice chamado VS-Tree que é uma árvore de altura balanceada com técnicas para pesquisa de dados nos subgrafos.

Armazenamento e Indexação

Page 36: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Processamento e Otimização de Consultas SPARQL

Traduzindo consultas SPARQL em grafos de consulta

Melhor forma para otimizar consultas

Análise de junções e operadores

Page 37: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

TraduzindoConsultas SPARQL

Para uma consulta SPARQL, o mecanismo RDF (engine) executa os seguintes passos:

I. Analisa a consulta e constrói a AST (*);

II. Traduz a AST para o grafo de consulta;

III. Constrói o plano de consulta otimizado a partir do grafo de consulta;

IV. Executa o plano de consulta.

(*) Árvore de Sintaxe Abstrata

Page 38: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

TraduzindoConsultas SPARQL

• No momento da execução, essa consulta é transformada em um conjunto de triplas.

• Cada uma dessas triplas consistem de recursos e literais que foram mapeados de acordo com os IDs no dicionário de dados.

Após a construção do Grafo de Consulta

Page 39: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Consulta SPARQL e respectivos grafos

Page 40: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

TraduzindoConsultas SPARQL

Árvore de Junção

• De acordo com o grafo criado, o mecanismo de consulta (engine) constrói sua representação algébrica junto com operadores de junções, conhecida como árvore de junção.

• Pode ser representada por uma árvore binária.

• Esta árvore junto com os índices e junções serve de base para o plano de execução da consulta.

Page 41: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

TraduzindoConsultas SPARQL

Exemplos

• Dataset: YAGO2• System: RDF-3X• Algorithm: DP (Dynamic Programming)• Não descreveram a configuração de hardware.

Page 42: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

TraduzindoConsultas SPARQL

Exemplos

A execução da consulta levando em consideração:• a cardinalidade resultou na árvore de junção (a) • plano otimizado resultou na árvore (b).

Page 43: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

TraduzindoConsultas SPARQL

Exemplos

Os tempos de execução resultantes foram de 2100 ms para o plano que levou em consideração a cardinalidade (a) e 700 ms para o plano otimizado (b).

Page 44: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

TraduzindoConsultas SPARQL

Exemplos

Sugestão de implementação do plano de execução: dar preferência para abordagens bottom-up, em vez de abordagens top-down.

Page 45: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

TraduzindoConsultas SPARQL

Exemplos

• Artigo: Simpósio Brasileiro de Bancos de Dados - SBBD 2012• Autores: Macedo Sousa Maia , João Carlos Pinheiro , Regis

Pires Magalhães , José Maria da Silva Monteiro Filho , Vânia Maria Ponte Vidal

• Algorithm 1: PHJ (Pipeline Hash-join)• Algorithm 2: SBJ (Set-bind-join)• Dataset: DrugBank e Dailymed

http://www.lbd.dcc.ufmg.br/colecoes/sbbd/2012/0016.pdf

Page 46: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

TraduzindoConsultas SPARQL

Junções e Caminhos

• Levando em consideração as junções e os caminhos que devem ser percorridos, mesmo depois que o otimizadorencontre o plano ideal para uma consulta, uma execução ainda pode enfrentar dificuldades e demorar.

• Para executar um simples select, podem ocorrer grandes varreduras e diversos caminhos percorridos nas sub-árvorespara retornar os dados desejados.

Page 47: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

TraduzindoConsultas SPARQL

Restrição Filter na cláusula Where

https://www.w3.org/TR/rdf-sparql-query

Page 48: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Conclusão As Triple Stores possuem um melhor desempenho quando

utilizados com consultas simples ou consultas com poucas junções.

Índices separados para o Sujeito, Predicado e Objeto são mais indicados do que índices agrupados.

É importante termos atenção na construção das estruturas em SPARQL e no uso da indexação mais apropriada para o objetivo da pesquisa.

Page 49: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

Obrigado!Referências:Hexastore: http://crubier.net/Hexastore

RDF-3X: http://dl.acm.org/citation.cfm?id=1731354

Virtuoso:https://virtuoso.openlinksw.com

G-Store:http://g-store.sourceforge.net

Jena:https://jena.apache.org

http://www.lbd.dcc.ufmg.br/colecoes/sbbd/2012/0016.pdf

Page 50: Efficient Query Processing in RDF Databases · cotendo sujeito, predicado e objeto. • Em alguns sistemas é criada uma coluna adicional para salvar o nome do grafo que contém a

É correto afirmar que para consultas complexas em SPARQL devemos usar índices não clusterizados? Explique a sua resposta e porque devemos ou não usar esse tipo de índice.

1

2

Perguntas

[email protected]

Defina seletividade e cardinalidade e porque são importantes esses conceitos no contexto de banco de dados RDF.